检测到您启用了Adblock等屏蔽广告扩展,导致正常的内容图片无法显示,为了不影响阅读体验,建议您将www.xiaoz.me加入白名单。

Shadowsocks怎样配置多IP使用?

某些用户的主机支持多IP,但是遇到一个问题是出口都是使用的网卡一IP,那么多IP就失去了作用,这篇文章分享一下Shadowsocks怎样配置多IP使用,此教程仅适用于秋水逸冰的Shadowsocks Python版一键安装脚本,其它版本并不适用。

一、安装shadowsocks脚本

安装是必须的,请参考教程:CentOS一键安装shadowsocks脚本,安装完毕后输入以下命令停止shadowsocks服务。

1
/etc/init.d/shadowsocks stop

二、新增用户

输入如下命令新增用户user1和用户user2

1
2
useradd user1  # 新增用户 user1
useradd user2  # 新增用户 user2

三、复制和修改配置文件

Shadowsocks Python版一键安装脚本的配置文件是 /etc/shadowsocks.json,默认内容如下:

1
2
3
4
5
6
7
8
9
10
{
    "server":"0.0.0.0",
    "server_port":8989,
    "local_address":"127.0.0.1",
    "local_port":1080,
    "password":"yourpassword",
    "timeout":300,
    "method":"aes-256-cfb",
    "fast_open": false
}

因为是要运行 2 个 Shadowsocks服务端进程,所以这里复制一份配置文件。并将shadowsocks2.json中的server_port端口改为9000

1
cp /etc/shadowsocks.json /etc/shadowsocks2.json

四、修改 iptables 规则

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

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

假设这里获取到的 userid ,user1 是 501,user2 是 502。修改 iptables 规则:

1
2
3
4
5
6
/sbin/iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 8989 -j ACCEPT
/sbin/iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 9000 -j ACCEPT
/sbin/iptables -t mangle -A OUTPUT -m owner --uid-owner 501 -j MARK --set-mark 501
/sbin/iptables -t mangle -A OUTPUT -m owner --uid-owner 502 -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 配置:

1
/etc/init.d/iptables save

五、启动 Shadowsocks Python版服务端

假设是以 root 用户登录的,那么需要分别以 user1 和 user2 运行 Shadowsocks Python版服务端。命令如下:

1
2
su - user1 -c '/usr/bin/ssserver -c /etc/shadowsocks.json &'
su - user2 -c '/usr/bin/ssserver -c /etc/shadowsocks2.json &'

至此,设置完成。端口 8989 对应 IP1,端口 9000 对应 IP2。这样配置使用多IP后,结束服务需要使用kill进程杀掉,启动则用步骤5中的命令,相对而言要麻烦一些。

大部分内容均参考与:Shadowsocks如何设置多IP,部分地方咨询了秋水逸冰本人,在此表示感谢,最后由小z博客整理。

4 Comments

发表评论

电子邮件地址不会被公开。 必填项已用*标注