站群服务器用SK5 SOCKS5 配置多IP
Coffee_yu
2022年03月08日 17:30

不会的话 可以加好友 QQ1853479098

  1. 最小化安装CentOS6版本,然后安装ss5编译必须的组yum install wget vim automake make gcc openldap-devel pam-devel openssl-devel

  2. 从 sourceforge.net 下载最新的SS5源码,然后编译源码,完成ss5安装

wget http://jaist.dl.sourceforge.net/project/ss5/ss5/3.8.9-8/ss5-3.8.9-8.tar.gz

tar vzxf  ss5-3.8.9-8.tar.gz 

cd ss5-3.8.9

./configure 

make 

make install

如果编译有错误,请自己检查第一步,是否少安装了某些依赖包,或者自己查看编译错误日志,自行补齐相关头文件

3. 给centos配置多IP地址(192.168.5.2-253)

[root@test ~]# cat ip.sh   

#!/bin/bash   

for((i=2;i<=254;i++));do /sbin/ip address add 192.168.5.$i/24 dev eth1;done

[root@test ~]# ./ip.sh

配置结果可以通过ip addr命令查看,正确结果如下:

    eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000

    link/ether 00:0c:29:d9:b1:ad brd ff:ff:ff:ff:ff:ff

    inet 192.168.5.2/24 scope global eth1

    inet 192.168.5.3/24 scope global secondary eth1

    inet 192.168.5.4/24 scope global secondary eth1

    ………………………………………………………..

    inet 192.168.5.253/24 scope global secondary eth1

    inet 192.168.5.254/24 scope global secondary eth1

[root@test ~]#

4. 按照IP地址分布创建用户,253个IP 对应253个用户

[root@test ~]# cat user.sh

#!/bin/bash

for ((i=2, j=1002; i <= 254 ; i++, j=j+1))

do

        /usr/sbin/useradd socks$j -u $j -M -s /dev/null

done

[root@test ~]#

[root@test ~]# ./user.sh

配置结果可以通过cat /etc/passwd查看,正确结果如下:

[root@test ~]# cat /etc/passwd

root:x:0:0:root:/root:/bin/bash

…………………………………

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

socks1002:x:1002:1002::/home/socks1002:/dev/null

socks1003:x:1003:1003::/home/socks1003:/dev/null

…………………………………………………………

socks1253:x:1253:1253::/home/socks1253:/dev/null

socks1254:x:1254:1254::/home/socks1254:/dev/null

[root@test ~]#

5. 配置iptables的mangle链及POSTROUTING链,把用户、UID和IP进行关联,确保最后每个IP都独立对外提供代理服务

[root@test ~]# cat nat-mangle.sh

#!/bin/bash

iptables -t mangle -F OUTPUT

for ((i=2, j=1002; i <= 254 ; i++, j=j+1))

do

        iptables -t mangle -A OUTPUT -m owner --uid-owner $j -j MARK --set-mark $j

done

[root@test ~]# ./nat-mangle.sh

以上配置实现了用户和uid的关联,配置结果可以通过iptables -nvL -t mangle查看,正确结果如下:

Chain OUTPUT (policy ACCEPT 1418 packets, 286K bytes)

pkts bytes target     prot opt in     out     source               destination        

    0     0 MARK       all  --  *      *       0.0.0.0/0            0.0.0.0/0           owner UID match 1002 MARK set 0x3ea

    0     0 MARK       all  --  *      *       0.0.0.0/0            0.0.0.0/0           owner UID match 1003 MARK set 0x3eb  

Chain POSTROUTING (policy ACCEPT 1418 packets, 286K bytes)

pkts bytes target     prot opt in     out     source               destination        

[root@test ~]#

以下配置实现了uid和IP的关联,从而最终实现了用户和IP的关联 

[root@test ~]# cat snat.sh

#!/bin/bash

iptables -t nat -F POSTROUTING

for ((i=2, j=1002; i <= 254 ; i++, j=j+1))

do

       iptables -t nat -A POSTROUTING -m mark --mark $j -j SNAT --to 192.168.5.$i

done

[root@test ~]#./snat.sh

配置结果可以通过iptables -nvL -t nat查看,正确结果如下:

[root@test ~]# iptables -nvL -t nat

Chain PREROUTING (policy ACCEPT 551 packets, 95022 bytes)

pkts bytes target     prot opt in     out     source               destination        

Chain POSTROUTING (policy ACCEPT 2 packets, 142 bytes)

pkts bytes target     prot opt in     out     source               destination        

   17  1110 SNAT       all  --  *      *       0.0.0.0/0            0.0.0.0/0           mark match 0x3ea to:192.168.5.2

    0     0 SNAT       all  --  *      *       0.0.0.0/0            0.0.0.0/0           mark match 0x3eb to:192.168.5.3 

………………………………………………………………………………………………………………………….

    0     0 SNAT       all  --  *      *       0.0.0.0/0            0.0.0.0/0           mark match 0x4e5 to:192.168.5.253

    0     0 SNAT       all  --  *      *       0.0.0.0/0            0.0.0.0/0           mark match 0x4e6 to:192.168.5.254

Chain OUTPUT (policy ACCEPT 19 packets, 1252 bytes)

pkts bytes target     prot opt in     out     source               destination        

[root@test ~]#

6. 配置socket5代理的认证方式及认证密码(非匿名方式,匿名方式请自行修改配置文件) 

[root@test ~]# cat /etc/opt/ss5/ss5.conf  

auth             0.0.0.0/0       -       u

permit -        0.0.0.0/0       -       0.0.0.0/0       -       -       -       -       -

[root@test ~]#

以上配置结果为允许所有非匿名用户使用ss5代理,其它配置请自行研读ss5.conf配置说明

[root@test ~]# cat /etc/opt/ss5/ss5.passwd

test test

[root@test ~]#

以上配置结果为允许用户名test,密码test的用户使用ss5代理

7. 启动/重启ss5代理并修改端口为5555, 把IP和用户进行关联(默认端口 1080)

[root@test ~]# cat ss5.sh

#!/bin/bash

killall -9 ss5

for ((i=2, j=1002; i <= 254 ; i++, j=j+1))

do

       /usr/sbin/ss5 -t -m -b 192.168.5.$i:5555 -u socks$j

#      /usr/sbin/ss5 -t    -b 192.168.5.$i:5555 -u socks$j

done

[root@test ~]#./ss5.sh

启动结果可以通过ps –ef | grep ss5查看,正确结果如下: 

[root@test ~]# ps -ef | grep ss5

1002      6602     1  0 18:06 ?        00:00:00 /usr/sbin/ss5 -t -m -b 192.168.5.2:5555 -u socks1002

1003      6605     1  0 18:06 ?        00:00:00 /usr/sbin/ss5 -t -m -b 192.168.5.3:5555 -u socks1003

…………………………………………………………………………………………………………………

1253      7357     1  0 18:06 ?        00:00:00 /usr/sbin/ss5 -t -m -b 192.168.5.253:5555 -u socks1253

1254      7359     1  0 18:06 ?        00:00:00 /usr/sbin/ss5 -t -m -b 192.168.5.254:5555 -u socks1254

root      7466  6564  0 18:09 pts/1    00:00:00 grep ss5

[root@test ~]#

8. 放开CentOS防火墙的5555端口 

执行命名“iptables -I INPUT 1 -m state --state NEW -m tcp -p tcp --dport 5555 -j ACCEP”T即可放开防火墙的5555端口,然后将以上命令加入/etc/rc.d/rc.local即可实现开机自动运行

注意千万不能执行命令services  iptables restart命令,会覆盖nat-mangle.sh脚本的执行结果!

9. 调整内核参数,优化性能,以实现4G内存的vps跑10万个socket5代理连接     

ulimit -SHn 10240

ulimit -SHs unlimited

echo 500000 >/proc/sys/net/nf_conntrack_max

10. 

至此,一台高性能多IP的Sockt5代理服务器已配置完毕,如果想要不同IP地址绑定不同端口,请自行修改配置脚本即可,另外,请自行将各个配置脚本加入到启动脚本里面,实现重启后也能保持状态!由于本配置攻略不是为初学者准备的,配置过程中如有问题,请联系我!

11.

通过以上方式配置的代理服务器的极限连接数是15万,如果需要50-100万并发连接数的S5代理需求请联系博主,新方式采用docker技术实现,在16G内存的配置上能达到单台70万并发,需要配置低,更高代理并发连接数(35w+)及对代理稳定性要求非常高等特殊需求的话,请私信给我即可。

12.

实现了动态多IP代理,支持ADSL多拨,服务器直接拨号,跳过ROS软路由,大大提升多拨效率!实现了代理转发,支持白名单代理再次转发,有特殊需求的可以联系我! 作者:网站搭建教程 网页链接​;spm_id_from=333.337.0.0 出处:bilibili