SOCKS5

SS5 是高性能的 SOCKS 代理服务器,支持 SOCK4 和 SOCKS5 协议。下面的安装指南详细描述了如何在 CentOS 6.x服务器上安装和配置SS5,运行多个 ss5 进程来绑定不同端口到多个IP地址 ,以及设置用户名/密码认证的方法。本文以1个C段地址(192.168.5.0/24)为例,演示如何在CentOS上面架设多IP Socket5代理服务器,debian系统配置方式也类似,在此不在重复,另外,本文档不是很适合Linux初学者阅读,初学者如有问题,可以给我留言!

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

###### pam_mysql ss5连接数据库用很重要###########

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: 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=1, j=1001; i <= 100 ; 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=1, j=1001; i <= 100 ; 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
…………………………………………………………………………………………………………………………….
0 0 MARK all — * * 0.0.0.0/0 0.0.0.0/0 owner UID match 1253 MARK set 0x4e5
0 0 MARK all — * * 0.0.0.0/0 0.0.0.0/0 owner UID match 1254 MARK set 0x4e6

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=1, j=1001; i <= 100 ; i++, j=j+1))
do
iptables -t nat -A POSTROUTING -m mark –mark $j -j SNAT –to 192.168.88.$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=1, j=1001; i <= 100 ; i++, j=j+1))
do
/usr/sbin/ss5 -t -m -b 192.168.88.$i:5555 -u socks$j
# /usr/sbin/ss5 -t -b 192.168.88.$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 ACCEPT ”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.2015年圣诞再补充

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

12.2017年1月再补充

实现了动态多IP代理,支持ADSL多拨,服务器直接拨号,跳过ROS软路由,大大提升多拨效率!实现了代理转发,支持白名单代理再次转发,有特殊需求的可以联系我!
———————
作者:haiger01
来源:CSDN
原文:https://blog.csdn.net/lic95/article/details/48401223
版权声明:本文为博主原创文章,转载请附上博文链接!

SS5+MYSQL
分类: LINUX2009-12-03 12:34:55
1. 安装SS5:
# tar -zxvf ss5-3.6.4-3.tar.gz
# cd ss5-3.6.4-3
# ./configure
# make
# make install
# cp conf/ss5.conf conf/ss5.passwd /etc/opt/ss5/
# vi /etc/init.d/ss5
原启动教本有误,请修改第34行的“if”为“elif”。
2. 配置SS5:
# vi /etc/opt/ss5/ss5.conf
============+============+============
#实现用户认证并限制带宽:
set SS5_DNSORDER
set SS5_PAM_AUTH
auth 0.0.0.0/0 – u
permit – 0.0.0.0/0 – 0.0.0.0/0 – – – 10240 –
#如果要实现不同用户认证并分别限制带宽,在/etc/opt/ss5目录创建user和file两个文件,该文件中含有要认证的用户名:
permit – 0.0.0.0/0 – 0.0.0.0/0 – – user 10240 –
permit – 0.0.0.0/0 – 0.0.0.0/0 – – file 102400 –
============+============+============
3. 配置PAM认证:
# vi /etc/pam.d/ss5
============+============+============
auth optional /usr/lib/security/pam_mysql.so user=ss5 \
passwd=121212 host=localhost db=ss5 table=user \
usercolumn=username passwdcolumn=passwd crypt=2
account required /usr/lib/security/pam_mysql.so user=ss5 \
passwd=121212 host=localhost db=ss5 table=user \
usercolumn=username passwdcolumn=passwd crypt=2
============+============+============
4. 安装PAM_MYSQL:
# tar -zxvf pam_mysql-0.7RC1.tar.gz
# cd pam_mysql-0.7RC1
# ./configure –with-openssl –with-mysql=/usr/local/mysql
# make
# make install
# echo “/usr/lib/security” >> /etc/ld.so.conf
# ldconfig
5. 创建数据库:
# mysqladmin -u root -pmysqldbserver create ss5
# mysql -u root -pmysqldbserver
mysql> use ss5;
mysql> GRANT ALL PRIVILEGES ON ss5.* TO ‘ss5’@’localhost’ IDENTIFIED BY ‘121212’;
mysql> CREATE TABLE user (ID int not null auto_increment,USERNAME varchar(64), PASSWD varchar(255), primary key(ID) );
6. 添加测试用户:
mysql> insert into user (username,passwd) values (‘test’,password(‘1234’));

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值