安裝 SS5 SOCKS5 代理伺服器,多程序/多IP地址出口/多埠
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
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地址。