Shadowsocks多端口多外网IP配置


如今 VPS 确实是白菜价了,以至于很多人都有多 IP 的VPS。可是 IP 虽多,却只有一个主 IP(Main IP),在安装了Shadowsocks 使用后,往往还是显示为主 IP。


配置后访问方式为主IP+端口,同一个主IP,不同的端口,对应不同的子IP


网络要求:外网IP地址需要要同一个子网,单网卡多IP的情况下,所有的子IP外网可以PING通,如果达不到这个条件,此方法无法使用




那么如何使 Shadowsocks 在多 IP 的VPS 上使用不同的 IP 呢?
这里主要是用到了多用户运行 Shadowsocks 服务端以及 iptables 设置流量转发来实现。具体步骤如下:


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


第一步,安装 Shadowsocks-libev 版服务端
这个不多说,有 Shadowsocks-libev 版一键安装脚本。
最新版:
#wget --no-check-certificate https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocksR.sh
#chmod +x shadowsocksR.sh  
#/bin/bash  shadowsocksR.sh


安装完毕后,
先停止 Shadowsocks :
/etc/init.d/shadowsocks stop


去掉自启动:


chkconfig --del shadowsocks  # CentOS 用法


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


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


useradd user1  # 新增用户 user1
手动指定uid:
[root@211500 ~]# useradd -u 9116 user9116
[root@211500 ~]# id user9116
uid=9116(user9116) gid=9116(user9116) groups=9116(user9116)


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是 501,user2是 502。


修改 iptables 规则:


/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 配置:


/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 &'



python /usr/local/shadowsocks/server.py --user user1 --pid-file /tmp/user1.pid -c /etc/shadowsocks1.json --log-file /tmp/user1.log -d start




python /usr/local/shadowsocks/server.py --user user2 --pid-file /usr/local/shadowsocks/pid/user2.pid -c /etc/shadowsocks2.json  --log-file /tmp/user2.log -d start
python /usr/local/shadowsocks/server.py --user user1 --pid-file /usr/local/shadowsocks/pid/user1.pid -c /etc/shadowsocks.json -d stop
python /usr/local/shadowsocks/server.py --user user2 --pid-file /usr/local/shadowsocks/pid/user2.pid -c /etc/shadowsocks2.json -d stop
python /usr/local/shadowsocks/server.py --user user253 --pid-file /usr/local/shadowsocks/pid/user253.pid -c /etc/shadowsocks/shadowsocks_253.json  --log-file /tmp/user253.log -d start






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


 客户端配置:


如果客官需要远程配置服务,可以直接加我微信哈:



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

Powered by AKCMS