这次安装socks5 proxy大致分为3个步骤
» 配置环境
» 安装socks5
» 配置防火墙
» 配置Fail2ban

» 配置环境
步骤 1 » 配置环境
# yum install epel-release
# yum groupinstall ‘Development Tools’
# yum install gcc automake autoconf libtool make pam-devel yum-utils openldap-devel openssl-devel

» 安装socks5
步骤 1 » 下载最新的socks5
socks5官网在http://ss5.sourceforge.net/
socks5好像很久都没有更新了,最新版是13年的ss5-3.8.9-8,https://sourceforge.net/projects/ss5/files/ss5/
# mkdir /tmp/ss5
# cd /tmp/ss5
# wget http://sourceforge.net/projects/ss5/files/ss5/3.8.9-8/ss5-3.8.9-8.tar.gz
# tar -zxf ss5-3.8.9-8.tar.gz
# cd ss5-3.8.9
# ./configure
# make
# make install

没有错误的话,就是安装成功了,基本上秒装。
步骤 2 » 配置socks5
配置文件默认在/etc/opt/ss5/
Log文件默认在/var/log/ss5
启动配置默认在/etc/sysconfig/ss5
启动脚本默认在/etc/init.d/ss5

首先我们修改/etc/opt/ss5/ss5.conf
主要是改动两行,意思是用户名密码验证,允许所有网络来连接。
auth 0.0.0.0/0 – u
permit u 0.0.0.0/0 – 0.0.0.0/0 – – – – –

用户名密码在/etc/opt/ss5/ss5.passwd
逐行添加用户名密码就好,格式如下
username1 password1
username2 password2
然后给这个文件减一下权限,为了安全
# chown root:root /etc/opt/ss5/ss5.passwd
# chmod 750 /etc/opt/ss5/ss5.passwd

然后修改一下启动参数/etc/sysconfig/ss5,这里可以指定启动的用户权限和端口
SS5_OPTS=” -u root -b 0.0.0.0:1080″

最后给启动脚本赋权/etc/init.d/ss5
# chmod a+x /etc/init.d/ss5

步骤 3 » 启动socks5
# systemctl restart ss5
# systemctl enable ss5

步骤 4 » 测试
查看是否运行成功
# netstat -anp | grep ss5

» 配置防火墙
步骤 1 » firewall-cmd配置
这个简单了,允许1080端口的tcp和udp连接就行。
# firewall-cmd –zone=public –add-port=1080/tcp –permanent
# firewall-cmd –zone=public –add-port=1080/udp –permanent
# firewall-cmd –reload

» 配置fail2ban
步骤 1 » 新建filter
/etc/fail2ban/filter.d下面新建文件socks5.conf,填入我写的filter。也许不太完美,但是可用。

[Definition]
failregex = ^\[.*\] <HOST> .*\(((Authentication failed)|(Socks method unknown or bad request))\).*$
ignoreregex =

步骤 2 » 启用socks5的filter
在/etc/fail2ban/jail.local最后一行后面,新起一行加入

[socks5]
enabled = true
port = 1080
filter = socks5
maxretry = 5
logpath = /var/log/ss5/ss5.log
bantime  = 3600
findtime = 60

步骤 3 » 重启fail2ban
# systemctrl restart fail2ban

好了,至此我们的配置完成,可以在其他机器上测试了。
Chrome不支持socks5的用户名密码验证,火狐推荐插件Proxy Toggle
linux命令行测试可用curl –socks5 destination_ip:1080 –proxy-user user:password http://ipinfo.io/ip,如果返回ip是代理服务器的ip则测试通过。