Shadowsocks如何设置多外网IP

如今 VPS 确实是白菜价了,以至于很多人都有多 IP VPS。可是 IP 虽多,却只有一个主 IPMain IP),在安装了 Shadowsocks 使用后,往往还是显示为主 IP
那么如何使 Shadowsocks 在多 IP VPS 上使用不同的 IP 呢?
这里主要是用到了多用户运行 Shadowsocks 服务端以及 iptables 设置流量转发来实现。具体步骤如下:

我们这里以 Shadowsocks-libev 版服务端举例。
假设你的 VPS 上有 2 IP,分别是 IP1 IP2
为此需要新建 2 个用户来分别运行 Shadowsocks,假设新建的用户名为 user1 user2

第一步,安装 Shadowsocks-libev 版服务端
这个不多说,有 Shadowsocks-libev 版一键安装脚本。安装完毕后,先停止 Shadowsocks

/etc/init.d/shadowsocks stop

去掉自启动:

chkconfig --del shadowsocks  # CentOS 用法

update-rc.d -f shadowsocks remove  #Ubuntu Debian 用法

第二步,新增用户
命令如下:

useradd user1  # 新增用户 user1

useradd user2  # 新增用户 user2

第三步,复制和修改配置文件
Shadowsocks-libev
版的配置文件是/etc/shadowsocks-libev/config.json ,默认里面的内容如下:

{
"server":"0.0.0.0",
"server_port":8989,
"local_address":"127.0.0.1",
"local_port":1080,
"password":"teddysun.com",
"timeout":600,
"method":"aes-256-cfb"
}

因为是要运行 2 Shadowsocks-libev 版服务端进程,所以这里复制一份配置文件。

cp /etc/shadowsocks-libev/config.json/etc/shadowsocks-libev/config2.json

修改/etc/shadowsocks-libev/config2.json 里的server_port 9000 (数值不和/etc/shadowsocks-libev/config.json 里的一样即可)
内容如下:

{
"server":"0.0.0.0",
"server_port":9000,
"local_address":"127.0.0.1",
"local_port":1080,
"password":"teddysun.com",
"timeout":600,
"method":"aes-256-cfb"
}

第四步,修改 iptables 规则
在第二步新建好的用户,需要知道其 userid,通过如下命令获得:

awk -F: '/^user1:/{print $4}' /etc/passwd

awk -F: '/^user2:/{print $4}' /etc/passwd

假设这里获取到的 userid user1 501user2 502

修改iptables 规则:

/sbin/iptables -I INPUT -m state --state NEW -m tcp -ptcp --dport 8989 -j ACCEPT

/sbin/iptables -I INPUT -m state --state NEW -m tcp -ptcp --dport 9000 -j ACCEPT

/sbin/iptables -t mangle -A OUTPUT -m owner --uid-owner501 -j MARK --set-mark 501

/sbin/iptables -t mangle -A OUTPUT -m owner --uid-owner502 -j MARK --set-mark 502

/sbin/iptables -t nat -A POSTROUTING -m mark --mark 501-j SNAT --to-source IP1

/sbin/iptables -t nat -A POSTROUTING -m mark --mark 502-j SNAT --to-source IP2

保存iptables 配置:

/etc/init.d/iptables save

第五步,启动 Shadowsocks-libev 版服务端
假设是以 root 用户登录的,那么需要分别以 user1 user2 运行Shadowsocks-libev 版服务端。
命令如下:

su - user1 -c '/usr/local/bin/ss-server -u -c/etc/shadowsocks-libev/config.json -f /var/run/shadowsocks-server/pid1 &'

su - user2 -c '/usr/local/bin/ss-server -u -c/etc/shadowsocks-libev/config2.json -f /var/run/shadowsocks-server/pid2 &'

至此,设置完成。
端口 8989 对应 IP1,端口 9000 对应 IP2

 

 

 


分割线
感谢打赏
江西数库信息技术有限公司
YWSOS.COM 平台代运维解决方案
 评论
  firewalld的防火墙的有吗?
 发表评论
姓   名:

Powered by AKCMS