CentOS7 多IP搭建SOCKS5代理服务器

  • A+
所属分类:linux技术
摘要

  SOCKS5 是一个代理协议,它在使用TCP/IP协议通讯的前端机器和服务器机器之间扮演一个中介角色,使得内部网中的前端机器变得能够访问Internet网中的服务器,也可隐藏用户的IP地址。前一阵子有朋友自己在搭建socks5服务器时因为多IP所以配置都是失败的,今天有空试了一下留个记录。原理我不多赘述了,这里就简单介绍一下如果搭建使用。

  SOCKS5 是一个代理协议,它在使用TCP/IP协议通讯的前端机器和服务器机器之间扮演一个中介角色,使得内部网中的前端机器变得能够访问Internet网中的服务器,也可隐藏用户的IP地址。前一阵子有朋友自己在搭建socks5服务器时因为多IP所以配置都是失败的,今天有空试了一下留个记录。原理我不多赘述了,这里就简单介绍一下如果搭建使用。

  这里的多IP的是基于iptables中设置对应用户出口来实现的。

 

服务器环境

  服务器使用的是腾讯云服务器,安装了 CentOS7.6 的版本,配置了双IP(见下图),关于配置多IP过程这里不说明了,我这里将两个IP绑定在了同一个网卡上,主IP绑定在eth0网卡上,辅助IP绑定在了虚拟网卡eth0:1上。在配置好IP后测试一下这些IP是否都是可用(都是通的),同时安全组开放1080端口。

CentOS7 多IP搭建SOCKS5代理服务器

网卡信息

CentOS7 多IP搭建SOCKS5代理服务器

 

安装SS5

  安装ss5需要部分依赖等,我这里把bash列出来了,切换到root身份后直接复制粘贴进去即可。

yum install -y gcc openldap-devel pam-devel openssl-devel wget http://jaist.dl.sourceforge.net/project/ss5/ss5/3.8.9-8/ss5-3.8.9-8.tar.gz tar -vzx -f ss5-3.8.9-8.tar.gz cd ss5-3.8.9/ ./configure make make install chmod a+x /etc/init.d/ss5

 

  安装完毕后,可以正常启动,如果发现无法启动或报错请根据日志解决。

service ss5 restart

CentOS7 多IP搭建SOCKS5代理服务器

 

  可以成功启动后,简单修改下配置文件,使其需要进行身份验证。如果提示vim不存在则可以使用vi编辑器,或使用“yum install -y vim”安装后再执行。

vim /etc/opt/ss5/ss5.conf

 

  根据下图修改,找到对应行将“#”删除,同时在“auth”一行末尾Authentication列将“-”修改为“u”,“permit”一行中的Auth列修改“-”为“u”。修改完毕后保存。

 CentOS7 多IP搭建SOCKS5代理服务器  CentOS7 多IP搭建SOCKS5代理服务器

 

  修改完配置文件后先不要急着重启,我们去添加一下ss5的用户配置文件。我这里因为有两个IP所以配置了两个账号,每一行配置一个用户,格式:用户+空格+密码。

vim /etc/opt/ss5/ss5.passwd

CentOS7 多IP搭建SOCKS5代理服务器

  设置完毕后,尝试重启一下ss5服务。

service ss5 restart

CentOS7 多IP搭建SOCKS5代理服务器

 

  这里提示了“OK”,那么ss5服务的配置基本上是正确了,这里我使用了QQ自带的网络测试,测试了一下两个IP都是通的,如果这里测试没有问题,那么ss5的配置就可以告一段落了,如果提示“无法连接到代理服务器”则表示配置还是有问题,可以尝试重启ss5服务,检查防火墙是否拦截,selinux拦截,安全组未开放1080端口等情况。

CentOS7 多IP搭建SOCKS5代理服务器

 

 配置iptables

  配置完ss5服务后如果使用不同的IP,代理后结果还是显示主IP,这里需要根据用户去限制出口IP。首先添加用户,这里的用户和“/etc/opt/ss5/ss5.passwd中添加的用户需要对应。添加完后查看用户对应的uid,下一步需要用到。

useradd tom1 -p tom useradd tom2 -p tom
id tom1
id tom2

CentOS7 多IP搭建SOCKS5代理服务器

 

  可以看到用户的uid分别是1000和1002,然后我们对限制添加到iptables中。其中我标记红色的地方为对应的用户id,标注黄色底色的IP即为需要对应的出口IP。腾讯云中绑定的内网IP出去即为对应的公网IP,网卡中绑定的是腾讯云的内网IP,所以这里绑定了对应的内网IP(对应IP见第一张图),如果使用“ifconfig”查看到网卡绑定为公网IP则使用对应的公网IP。所以这里需要特别注意,根据自己情况替换对应的uid和出口IP,不能照搬。

#配置用户tom1
iptables -t mangle -A OUTPUT -m owner --uid-owner 1000 -j MARK --set-mark 1000 iptables -t nat -A POSTROUTING -m mark --mark 1000 -j SNAT --to-source 172.17.0.8

#配置用户tom2 iptables
-t mangle -A OUTPUT -m owner --uid-owner 1001 -j MARK --set-mark 1001 iptables -t nat -A POSTROUTING -m mark --mark 1001 -j SNAT --to-source 172.17.0.17

 

  设置完后,查看一下配置是否已经写入,我这里红色方框处的即为刚才的配置。

iptables -nvL -t nat iptables -nvL -t mangle

CentOS7 多IP搭建SOCKS5代理服务器

 

  配置好iptables后需要再对ss5添加一下对应的用户,设置对应用户和出口IP,请务必与上方iptables中对应uid和ip处保持一致。启动成功则配置完毕。

service ss5 stop #由于服务启动无法写入,这里需要关闭 ss5 -u tom1 -b 172.17.0.8 ss5 -u tom2 -b 172.17.0.17 service ss5 start #关闭后再次启动

CentOS7 多IP搭建SOCKS5代理服务器

 

  到这里配置已经结束了,我再使用qq进行了测试,提示连接成功,如果这里提示连接失败,则表示配置还是有问题的。

CentOS7 多IP搭建SOCKS5代理服务器

 

  最后在浏览器中测试,我这里使用了傲游浏览器,它自带了socks5身份验证。

CentOS7 多IP搭建SOCKS5代理服务器

 

  教程中的过程都是我亲自测试过可以成功的,新手配置可能还是会有一点点困难,多尝试即可,不同情况下配置可能有些不同但是基本思路是一致的。

  请不要尝试使用我这里的代理配置,在我写完教程后服务器资源就释放和回滚了 :)