某些用户的主机支持多IP,但是遇到一个问题是出口都是使用的网卡一IP,那么多IP就失去了作用。
此教程仅适用于秋水逸冰的Shadowsocks Python版一键安装脚本,其它版本并不适用。
额外提示:此多IP服务脚本与 支持在线查看人数的ssrmu.sh安装没有冲突,但有时通过ssrmu.sh开通的端口UDP会不稳定。所以建议多IP不要与ssrmu.sh一起安装。
安装教程:https://www.xiaoz.me/archives/5643或
参考如下安装:
#wget --no-check-certificate https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks.sh #chmod +x shadowsocks.sh #./shadowsocks.sh 2>&1 | tee shadowsocks.log
第一步:安装完毕后输入以下命令:
#/etc/init.d/shadowsocks stop //*停止服务
#chkconfig --del shadowsocks //*去掉开机自启
二、新增用户
输入如下命令新增用户user1和用户user2
#useradd 9001 //*新增用户 user1
#useradd 9002 //*新增用户 user2
三、复制和修改配置文件
#cp /etc/shadowsocks.json /etc/shadowsocks2.json //*复制一份副本或者更多IP多份副本
Shadowsocks Python版一键安装脚本的配置文件是 /etc/shadowsocks.json,默认内容如下(已修改指定IP,多个IP需要设置指定IP,不然依然会出现副IP无法通过UDP,原配文件上设置主IP,多个副本文件设置副IP,这里假设主IP为 1.1.1.1 服务端口为 9001 ;副IP为 2.2.2.2 服务端口为 9002):
{
"server":"1.1.1.1",
"server_port":9001,
"local_address":"127.0.0.1",
"local_port":1080,
"password":"112233",
"timeout":300,
"method":"aes-256-gcm",
"fast_open": false
}
因为是要运行 2 个 Shadowsocks服务端进程,所以这里复制一份配置文件。并将shadowsocks2.json中的server_port端口改为9002,内容如下:
{
"server":"2.2.2.2",
"server_port":9002,
"local_address":"127.0.0.1",
"local_port":1080,
"password":"112233",
"timeout":300,
"method":"aes-256-gcm",
"fast_open": false
}
四、修改 iptables 规则
【防火墙必须开启,并使用nat规则,不然副IP连接后,依然显示主IP】
在第二步新建好的用户,需要知道其 userid,通过如下命令获得:
#awk -F: '/^9001:/{print $4}' /etc/passwd
#awk -F: '/^9002:/{print $4}' /etc/passwd
假设这里获取到的 userid ,user1 是 500,user2 是 501。修改 iptables 规则:
#/sbin/iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 9001 -j ACCEPT
#/sbin/iptables -I INPUT -m state --state NEW -m udp -p udp --dport 9001 -j ACCEPT
#/sbin/iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 9002 -j ACCEPT
#/sbin/iptables -I INPUT -m state --state NEW -m udp -p udp --dport 9002 -j ACCEPT
#/sbin/iptables -t mangle -A OUTPUT -m owner --uid-owner 500 -j MARK --set-mark 500
#/sbin/iptables -t mangle -A OUTPUT -m owner --uid-owner 501 -j MARK --set-mark 501
#/sbin/iptables -t nat -A POSTROUTING -m mark --mark 500 -j SNAT --to-source 1.1.1.1
#/sbin/iptables -t nat -A POSTROUTING -m mark --mark 501 -j SNAT --to-source 2.2.2.2
#service iptables save 【先保存,重启防火墙或系统后规则会失效】
#service iptables stop
#chkconfig iptables on
#service iptables start
备注:防火墙规则添加如果有误,必须利用命令方式删除有误规则,不能VI编辑配置文件修改,不然规则无法保存。
五、启动 Shadowsocks Python版服务端
假设是以 root 用户登录的,那么需要分别以用户 9001 和 9002 运行 Shadowsocks Python版服务端。命令如下:
su - 9001 -c '/usr/bin/ssserver -c /etc/shadowsocks.json &'
su - 9002 -c '/usr/bin/ssserver -c /etc/shadowsocks2.json &'
至此,设置完成。端口 9001 对应 IP1,端口 9002 对应 IP2。
六、设置开机启动
#vi /etc/rc.d/rc.local
七、查询对应进程并终止
#ps aux
#kill -9 12323 //*其中12323为对应进程的pid数值
八,最后建议安装APPNODE主机集群管理平台,安装后,将防火墙禁止掉,实现WEB方式在线管理LINUX。
延伸:既然可以单个IP设置单用户,也就可以每个IP上也可以共存多个端口用户,也就是多IP多用户配置模式,只需要修改配置文件即可。建议关闭掉防火墙。
#vi /etc/shadowsocks.json
{
"server":"104.192.81.245",
"local_address":"127.0.0.1",
"local_port":1080,
"port_password":{
"9010":"112233",
"9011":"112233",
"9012":"112233"
},
"timeout":300,
"method":"aes-256-gcm",
"fast_open": false
}
#vi /etc/shadowsocks2.json
{
"server":"104.192.81.22",
"local_address":"127.0.0.1",
"local_port":1080,
"port_password":{
"9030":"112233",
"9031":"112233",
"9032":"112233"
},
"timeout":300,
"method":"aes-256-gcm",
"fast_open": false
}