ss5 sk5 多备忘
安装bbr
查看当前Centos的版本
cat /etc/redhat-release
大于7.3即可
wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh
验证当前的TCP算法
[root@hwsrv-781523 ~]# sysctl net.ipv4.tcp_available_congestion_control
net.ipv4.tcp_available_congestion_control = bbr cubic reno
输出结果包含了:bbr 表示成功
查看BBR是否启动
[root@hwsrv-781523 ~]# sysctl net.ipv4.tcp_congestion_control
net.ipv4.tcp_congestion_control = bbr
查看BBR是否已经载入了系统模块
[root@hwsrv-781523 ~]# lsmod | grep bbr
tcp_bbr 20480 32
多ip服务器搭建sock5
最小化安装CentOS7版本,然后安装ss5编译必须的组
sudo yum install wget vim automake make gcc openldap-devel pam-devel openssl-devel
从 sourceforge.net 下载最新的SS5源码,然后编译源码,完成ss5安装
下载地址:http://sourceforge.net/projects/ss5/files/
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 <sub>]# 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 </sub>]# ./ip.sh
[root@yjigbj5 ~]# cat ip.sh 有的系统 需要这么加ip
#!/bin/bash
for((i=3,j=1;i<=254;i++,j=j+1));do ifconfig eth0:$j 192.168.0.$i up;done
[root@yjigbj5 ~]#
配置结果可以通过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 <sub>]# 4. 按照IP地址分布创建用户,253个IP 对应253个用户 [root@test </sub>]# 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 <sub>]# [root@test </sub>]# ./user.sh 配置结果可以通过cat /etc/passwd查看,正确结果如下: [root@test <sub>]# 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 </sub>]# 5. 配置iptables的mangle链及POSTROUTING链,把用户、UID和IP进行关联,确保最后每个IP都独立对外提供代理服务 [root@test <sub>]# 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 </sub>]# ./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 <sub>]# 以下配置实现了uid和IP的关联,从而最终实现了用户和IP的关联 [root@test </sub>]# 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 <sub>]#./snat.sh 配置结果可以通过iptables -nvL -t nat查看,正确结果如下: [root@test </sub>]# 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 <sub>]# 6. 配置socket5代理的认证方式及认证密码(非匿名方式,匿名方式请自行修改配置文件) [root@test </sub>]# cat /etc/opt/ss5/ss5.conf auth 0.0.0.0/0 - u permit u 0.0.0.0/0 - 0.0.0.0/0 - - - - - [root@test <sub>]# 以上配置结果为允许所有非匿名用户使用ss5代理,其它配置请自行研读ss5.conf配置说明 [root@test </sub>]# cat /etc/opt/ss5/ss5.passwd test test [root@test <sub>]# 以上配置结果为允许用户名test,密码test的用户使用ss5代理 7. 启动/重启ss5代理并修改端口为5555, 把IP和用户进行关联(默认端口 1080) [root@test </sub>]# 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 <sub>]#./ss5.sh 启动结果可以通过ps –ef | grep ss5查看,正确结果如下: [root@test </sub>]# 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地址绑定不同端口,请自行修改配置脚本即可,另外,请自行将各个配置脚本加入到启动脚本里面,实现重启后也能保持状态!由于本配置攻略不是
#每次重启计算机后或者出现以下错误时: Can’t create pid file /var/run/ss5/ss5.pid Can’t unlink pid file /var/run/ss5/ss5.pid
此问题是因 SS5-3.8.9的bug,重启会删掉/var/run/ss5/ 导致无法创建pid文件
解决: 每次启动系统先创建 /var/run/ss5目录后再启动 ss5
[root@yjigbj5 /]# cat /etc/rc.d/rc.local #!/bin/bash mkdir /var/run/ss5/ ‘解决: 每次启动系统先创建 /var/run/ss5目录后再启动 ss5 ~/ip.sh ~/nat-mangle.sh ~/snat.sh ~/ss5.sh
/etc/init.d/ss5 发现没有这个文件存在啊,原来以为是安装失败,又重装了一遍才发现文件是存在的 只是没有执行权限所以你按死了tab键也没用
因此赶紧给赋予权限,并让ss5跟系统一起启动 chmod +x /etc/init.d/ss5
默认路径位于/var/run/ss5/ss5.pid。但某些vps在重启后这个目录无缘无故消失了。每次重启系统都需要重建这个目录:mkdir /var/run/ss5。
解决方法就是:修改pid路径。
修改方法:在文件/etc/sysconfig/ss5修改参数,指定pid路径。修改配置后文件内容如下:
# Add startup option here
#SS5_OPTS=" -u root"
SS5_OPTS=" -p /var/run/ss5.pid"