租用幫助
SOCKS5 是一個代理協議,它在使用TCP/IP協議通訊的前端機器和服務器機器之間扮演一個中介角色,使得內部網中的前端機器變得能夠訪問Internet網中的服務器,也可隱藏用戶的IP地址。前一陣子有朋友自己在搭建socks5服務器時因為多IP所以配置都是失敗的,今天有空試了一下留個記錄。原理我不多贅述了,這里就簡單介紹一下如果搭建使用。
這里的多IP的是基于iptables中設置對應用戶出口來實現的。
多IP服務器搭建SOCKS5代理:http://www.bxgb88.com/dedicated/usa.html
服務器環境
服務器使用的是云服務器,安裝了 CentOS7.6 的版本,配置了雙IP(見下圖),關于配置多IP過程這里不說明了,我這里將兩個IP綁定在了同一個網卡上,主IP綁定在eth0網卡上,輔助IP綁定在了虛擬網卡eth0:1上。在配置好IP后測試一下這些IP是否都是可用(都是通的),同時安全組開放1080端口。
安裝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
可以成功啟動后,簡單修改下配置文件,使其需要進行身份驗證。如果提示vim不存在則可以使用vi編輯器,或使用“yum install -y vim”安裝后再執行。
vim /etc/opt/ss5/ss5.conf
根據下圖修改,找到對應行將“#”刪除,同時在“auth”一行末尾Authentication列將“-”修改為“u”,“permit”一行中的Auth列修改“-”為“u”。修改完畢后保存。
修改完配置文件后先不要急著重啟,我們去添加一下ss5的用戶配置文件。我這里因為有兩個IP所以配置了兩個賬號,每一行配置一個用戶,格式:用戶+空格+密碼。
vim /etc/opt/ss5/ss5.passwd
設置完畢后,嘗試重啟一下ss5服務。
service ss5 restart
這里提示了“OK”,那么ss5服務的配置基本上是正確了,這里我使用了QQ自帶的網絡測試,測試了一下兩個IP都是通的,如果這里測試沒有問題,那么ss5的配置就可以告一段落了,如果提示“無法連接到代理服務器”則表示配置還是有問題,可以嘗試重啟ss5服務,檢查防火墻是否攔截,selinux攔截,安全組未開放1080端口等情況。
配置iptables
配置完ss5服務后如果使用不同的IP,代理后結果還是顯示主IP,這里需要根據用戶去限制出口IP。首先添加用戶,這里的用戶和“/etc/opt/ss5/ss5.passwd”中添加的用戶需要對應。添加完后查看用戶對應的uid,下一步需要用到。
useradd tom1 -p tom
useradd tom2 -p tomid tom1id tom2
可以看到用戶的uid分別是1000和1002,然后我們對限制添加到iptables中。其中我標記紅色的地方為對應的用戶id,標注黃色底色的IP即為需要對應的出口IP。騰訊云中綁定的內網IP出去即為對應的公網IP,網卡中綁定的是騰訊云的內網IP,所以這里綁定了對應的內網IP(對應IP見第一張圖),如果使用“ifconfig”查看到網卡綁定為公網IP則使用對應的公網IP。所以這里需要特別注意,根據自己情況替換對應的uid和出口IP,不能照搬。
#配置用戶tom1iptables -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
配置好iptables后