SS5 是高性能的 SOCKS 代理服务器,支持 SOCK4 和 SOCKS5 协议。下面的安装指南详细描述了如何在 CentOS 服务器上安装和配置SS5,运行多个 ss5 进程来绑定不同端口到多个IP地址 ,以及设置用户名/密码认证的方法。
1. 从 sourceforge.net 下载最新的源码
wget http://downloads.sourceforge.net/ss5/ss5-3.8.9-8.src.rpm
2. 编译源码
ss5 需要 openldap-devel, pam-devel 和 openssl-devel 开发包,可以使用 YUM 安装:
32 位 Linux 系统,
yum install gcc rpm-build openldap-devel pam-devel openssl-devel
64 位 Linux 系统,
yum install gcc.x86_64 rpm-build.x86_64 openldap-devel.x86_64 pam-devel.x86_64 openssl-devel.x86_64
安装 libgssapi-devel,
yum install libgssapi-devel
然后生成 rpm 包:
rpmbuild --rebuild ss5-3.8.9-8.src.rpm
3. 安装 SS5 rpm 包
在 CentOS 5.x 系统里, RPM 包位于 /usr/src/redhat/RPMS/。
在 CentOS 6.x 系统里, RPM 包位于安装目录下 rpmbuild/RPMS/ 的子目录中。使用下面的命令来安装 RPM 包:
CentOS 5 系统,
rpm -ivh /usr/src/redhat/RPMS/x86_64/ss5-3.8.9-8.x86_64.rpm (针对64 位 Linux)
rpm -ivh /usr/src/redhat/RPMS/i386/ss5-3.8.9-8.i386.rpm (针对32 位 Linux)
CentOS 6 系统 (可能需要输入命令 “cd” 切换到 root 用户目录),
rpm -ivh rpmbuild/RPMS/x86_64/ss5-3.8.9-8.x86_64.rpm (针对64 位 Linux)
rpm -ivh rpmbuild/RPMS/x86_64/ss5-3.8.9-8.i386.rpm (针对32 位 Linux)
4. 以 root 身份运行 SS5 并修改端口为 8899 (默认端口 1080)
修改 /etc/init.d/ss5 并在文件顶部的 #!/bin/sh 之后添加下面的代码:
export SS5_SOCKS_PORT=8899
export SS5_SOCKS_USER=root
(可以使用任何端口,但是请在防火墙中打开)
5. 设定用户名/密码
SS5 配置文件位于 /etc/opt/ss5/ss5.conf, ‘auth’ 参数用于设定认证模式。
不使用用户认证,
auth 0.0.0.0/0 – –
使用用户名/密码认证,
auth 0.0.0.0/0 – u
用户名/密码保存在文件 /etc/opt/ss5/ss5.passwd。请设置权限:
chown root:root /etc/opt/ss5/ss5.passwd
chmod 755 /etc/opt/ss5/ss5.passwd
chmod 755 /etc/opt/ss5
在文件 /etc/opt/ss5/ss5.passwd 中, 每行输入一个用户名和密码,用空格分开。
例如:
user1 pass1
user2 pass2
6. 设置权限 ( /etc/opt/ss5/ss5.conf )
允许所有主机连接:
permit u 0.0.0.0/0 – 0.0.0.0/0 – – – – –
7. 启动/停止/重启 ss5
service ss5 start
service ss5 stop
service ss5 restart
如果出现下面的错误, 先创建 /var/run/ss5 目录后再启动 ss5 。
Can’t create pid file /var/run/ss5/ss5.pid
Can’t unlink pid file /var/run/ss5/ss5.pid
默认的日志文件路径: /var/log/ss5/ss5.log
8. 如果有多个IP地址,可以运行多个 ss5 代理服务器进程,每个进程绑定不同的端口/出口IP地址。
第一步, 给每个进程创建一个用户:
useradd user1 -s /bin/false -p YourPasswordHere
第二步, 查看用户的 UID:
awk -F: '/^user1:/{print $1,$4}' /etc/passwd
第三步, 根据用户 UID 在防火墙上设置出口 IP 地址:
iptables -t mangle -A OUTPUT -m owner --uid-owner USER_UID -j MARK --set-mark USER_UID
iptables -t nat -A POSTROUTING -m mark --mark USER_UID -j SNAT --to-source 24.68.1.1
(USER_UID 为第二步中输出的数字)
查看防火墙的地址转换规则:
iptables -nvL -t nat
iptables -nvL -t mangle
最后, 用不同用户启动进程, 设置不同的IP和端口:
ss5 -u user1 -b 24.68.1.1:10001
提示: 请在防火墙上打开端口 10001
重复上面的步骤来配置每一个IP地址。