代理服務器(socket5)--------------------目標服務實現方案通過ProxyChains+Socat這">
linux上的應用---------->代理服務器(socket5)--------------------目標服務
通過ProxyChains+Socat這2個工具來實現,具體的實現方案如下:
linux上的應用----------->部署代理訪問工具------------->代理服務器(socket5)-----------目標服務
ProxyChains 它可以使任何程序通過代理上網, 允許TCP和DNS通過代理隧道, 支持HTTP、 SOCKS4和SOCKS5類型的代理服務器, 并且可配置多個代理。 ProxyChains通過一個用戶定義的代理列表強制連接指定的應用程序, 直接斷開接收方和發送方的連接。ProxyChains 是一個強制應用的 TCP 連接通過代理的工具,支持 Tor、HTTP、與 Socks 代理。ProxyChains 只會將當前應用的 TCP 連接轉發至代理,而非全局代理。
Socat(SOcket CAT)是一個功能強大的命令行工具,用于在兩個雙向字節流之間建立通道,并支持多種協議和傳輸方式。它廣泛應用于網絡調試、端口轉發、文件傳輸、串口通信等多種場景。
yum install proxychains-ng
yum install socat
修改/etc/proxychains.conf 文件,增加代理相關信息:
socks5 代理的ip 代理端口 代理賬號 代理密碼
參考如下:
配置截圖
nohup proxychains4 -q -f /etc/proxychains.conf socat tcp4-listen:10000,reuseaddr,fork tcp4-connect:10.110.63.77:6666 &
說明:
1、10000 :任意指定,后面本地訪問的端口
2、192.168.0.77:6666 ,需要通過代理訪問的目標ip和端口
3、通過本地訪問代理: http://本機ip:10000,就可以訪問代理的出來的相關url地址
4、可以啟動多個服務,訪問多個代理
在日常工作中我們經常會使用到代理, 這里記錄一下Proxifier和ss5的使用,這兩個工具既可以單獨使用,也可以配合使用。本文講解proxifier+ss5配合使用的場景及配置。
先看下百度百科的介紹,Proxifier是一款功能非常強大的socks5客戶端,可以讓不支持通過代理服務器工作的網絡程序能通過HTTPS或SOCKS或代理鏈。
也就是說即使你的程序不像瀏覽器或者QQ支持代理配置,Proxifier也可以幫你做代理,并且支持代理和代理鏈,支持多代理服務器多規則。
ss5是由Matteo Ricchetti大佬編寫的,官網鏈接SS5 Socks Server。
關于ss5的描述,官方寫的很清晰。
SS5 is a socks server that implements the SOCKS v4 and v5 protocol. As a proxy server, SS5 authenticates, profiles and processes network requests for clients. It establishes connections to application hosts for client applications. When the client attempts to access the network, the client connects to the SS5 daemon instead of the application host.
Following authentication, clients request that SS5 perform network activities for the client. The activities might include:Connect
Bind
Udp
Associate
The SS5 protocol is independent of application protocols, and can assist with different networking services, including telnet, ftp, finger, whois, gopher, and WWW access.
以下場景純屬虛構,不是十分貼切, 單純為了方便講解例舉用。
程序員小王辦公電腦IP為 192.168.2.100,小王有公司測試環境主機192.168.3.100-110 ,11臺服務器,辦公電腦到服務器之間有防火墻隔離,但這11臺服務器之間網絡互通,沒有防火墻限制。
小王在這些機器上搭建好了測試環境的服務,就向網絡工程師張三提出需求申請辦公電腦訪問這11臺服務器的80,8080,443,3306端口。但張三平時看小王就不爽了,看到小王要訪問那么多端口更是火冒三丈,故意為難小王的說道:我就給你開一個你辦公電腦訪問192.168.3.100的80端口,剩下的你自己看著辦。小王有技術啊,嘴角微微一笑說道:哦了,沒問題,多謝。
小王是如何實現訪問多臺服務器的目的呢?
本章以centos7為示例。小王登錄192.168.3.100這臺服務器進行了以下操作:
wget https://nchc.dl.sourceforge.net/project/ss5/ss5/3.8.9-8/ss5-3.8.9-8.tar.gz
運行以下指令,檢查編譯環境
rpm -qa | egrep 'pam-devel|openldap-devel|openssl-devel'
如未安裝,自行安裝即可。
tar zxvf ss5-3.8.9-8.tar.gz
cd ss5-3.8.9-8
./configure
make && make install
默認安裝完成后,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 - - - - -
開啟賬號密碼認證方式后,需要新增密碼文件并添加用戶和密碼
vi /etc/opt/ss5/ss5.passwd #每行一個用戶名及密碼,用戶和密碼之間用空格分隔
xiaowang 123abc
zhangsan 456cde
test 1234_aA
test2 Qaz_123!
由于張三只給小王開通了一個80端口,這里將監聽端口設置為80。
vi /etc/sysconfig/ss5
找到注釋的這行配置
#SS5_OPTS=” -u root”
將其取消注釋并修改為
SS5_OPTS=" -u root -b 0.0.0.0:80"
chmod 755 /etc/rc.d/init.d/ss5
#啟動
systemctl start ss5
#停止
systemctl stop ss5
或者
service ss5 start && service ss5 stop
或者
/etc/init.d/ss5 start && /etc/init.d/ss5 stop
#查看進程
ps -ef|grep ss5
root 2804 1 0 15:46 ? 00:00:00 /usr/sbin/ss5 -t -u root -b 0.0.0.0:80
#查看監聽端口
netstat -anp|grep ss5
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 2804/ss5
#查看日志
more /var/log/ss5/ss5.log
至此,SS5已經安裝完畢,可提供服務。
?
請自行下載并進行windows客戶端的安裝
如下圖所示添加代理服務器,地址與端口為SS5服務監聽端口,小王則配置為192.168.3.100的80端口,選擇socket5,啟用驗證,輸入SS5密碼文件中創建的賬號和密碼。
配置完成后可點擊檢查測試與代理服務器的聯通性,確認正常后點擊確定保存。
代理規則即在我們規定的條件下使用代理工具進行轉發,其他情況不通過代理,我們可以靈活的按照的使用需求定制規則。
小王的配置如下圖:
上圖中小王不需要對192.168.3.100的80端口進行代理,則此條規則暫不配置192.168.3.100。
然后再創建一條規則單獨配置192.168.3.100。
至此小王的代理規則配置完成!
其中規則中的應用程序、目標主機、目標端口可以理解為是“與”的關系,當我們發起一次網絡請求后,以上三項都匹配到則進行代理轉發,而動作則定義了轉發到哪個代理服務器(即上面五、2配置的代理服務器),上圖小王選的是自己搭建的SS5服務器。
到此,小王可以通過在他的辦公電腦上直接訪問192.168.3.100-192.168.3.110的80,8080,443端口以及 192.169.3.100的8080和443端口。
如后期增加還有其他端口需要訪問,在Proxifier代理規則中添加對應的目標端口即可。
寫在最后:
如有錯誤,請評論告知,多多包涵。