網路協議之:還在用HTTP代理?弱爆了!快試試SOCKS5

flydean發表於2021-12-10

簡介

存在即是合理,SOCKS5的出現是為了解決SOCKS4中不支援身份認證的大問題而出現的,畢竟大家對網路中的安全越來越重視了。沒有認證的網路就好像是生活在攝像頭下的人生,毫無隱私可言,實在是太可怕了。

今天給大家深入講解一下SOCKS5和它的應用。

為什麼要使用SOCKS

SOCKS是一種代理服務協議,為什麼會要有代理服務協議呢?

因為在現代網路中,很多情況下,由於網路或者防火牆的原因,我們很難直接去訪問對方的網路,所以需要一種代理機制來充當本地網路和大型網路之間的閘道器。

代理伺服器通過攔截髮送方和接收方之間的連線來工作。 所有傳入的資料都通過一個埠進入,並通過另一個埠轉發到目標網路中。

當然流量轉發是代理伺服器的最基本的功能,代理伺服器還可以通過隱藏客戶端或者伺服器端的IP地址,從而實現網路訪問的安全性。另外因為代理伺服器充當了目標伺服器的代理,所以可以將代理伺服器作為目標伺服器的快取伺服器,從而提高網路訪問效率。

另外代理伺服器還可以通過對資料進行攔截,從而進行一些特殊的操作,比如對資料進行加密,從而保證資料傳輸的安全性。另外代理伺服器還可以對客戶端的訪問進行控制,比如可以阻止客戶端訪問某個IP地址或者網站。

而SOCKS就是一種代理協議的標準,通過這種協議,可以實現標準的代理服務。

在企業級網路中,為了保證企業網路的安全性,通常會有安裝上防火牆,這樣雖然保證了企業網路的安全,但是也阻止了客戶端對外界網路的訪問。所以需要一個SOCKS 代理伺服器來代替客戶端和目標網站之間建立連線和進行資料通訊。

SOCKS代理可以繞過防火牆來中繼使用者的TCP和UDP會話。

SOCKS5

因為SOCKS是執行在OSI七層協議中的第五層會話層,所以它可以處理包括HTTP、HTTPS、POP3、SMTP 和 FTP等多種請求型別,所以可以使用SOCKS協議來進行郵件傳送、網頁瀏覽、檔案傳輸等。

相對於SOCK4來說,SOCKS5加入了認證機制,所以可以通過身份驗證建立完整的TCP連線,SOCKS5通常和SSH一起使用,通過使用SSH加密隧道方法來中繼流量。

那麼為什麼我們需要使用SOCKS5呢?

首先我們可以通過SOCKS5來訪問防火牆後面的服務。

一般來說,為了安全起見,伺服器都放在防火牆後面,但是外部的人想要訪問該伺服器的話,有兩種辦法。第一種就是去掉防火牆,向公眾開放該服務,但是這樣會帶來安全的風險。第二種就是通過設定客戶端的IP白名單,來過濾非法的訪問請求。但是客戶端的IP地址通常是會傳送變化的,所以這種做法也是不可行的。

如果使用SOCKS5的SSH代理,就可以通過代理伺服器來訪問防火牆後面的服務,從而保證服務的安全性。

另外,通過建立SSH隧道,在其中使用SOCKS5協議將各種TCP和UDP流量路由到各自的服務,那麼只需要使用SSH,而不需要使用其他VPN網路。所以使用起來比較簡單。

最後,因為SOCKS5只是對資料進行轉發,所以出錯的可能性更小,效能會更高。

SOCKS5的使用

上面我們介紹了SOCKS5的各種優點,那麼SOCKS5到底該如何使用呢?接下來向大家介紹一個使用ssh命令搭建一個簡單的SOCKS5代理伺服器。

先看下SSH建立SOCKS服務的命令:

ssh -f -C -N -D bindaddress:port name@server

-f 表示SSH作為守護程式進入後臺執行。

-N 表示不執行遠端命令,只用於埠轉發。

-D 表示是埠上的動態轉發。這個命令支援SOCKS4和SOCKS5。

-C 表示傳送前壓縮資料。

bindaddress 本地伺服器的繫結地址。

port 表示本地伺服器的指定偵聽埠。

name 表示ssh伺服器登入名。

server表示ssh伺服器地址。

上面命令的意思是,在本機建立埠繫結,然後將其轉發到遠端的代理伺服器上。

比如我們可以在本機開一個2000的埠,將其轉發到遠端168.121.100.23這臺機子上:

ssh -f -N -D 0.0.0.0:2000 root@168.121.100.23

有了代理伺服器之後,就可以使用了,首先介紹一個怎麼在curl命令中使用SOCKS代理。

我們想通過代理伺服器,訪問www.flydean.com,該怎麼做呢?

curl -x socks5h://localhost:2000 -v -k -X GET http://www.flydean.com:80

要想檢測SOCKS的連線,還可以使用netcat命令如下:

ncat –proxy 127.0.0.1:2000 –proxy-type socks5 www.flydean.com 80 -nv

總結

SOCKS5是一個非常有用的代理協議,你可以在需要的時候用上它。你懂的!

本文已收錄於 http://www.flydean.com/10-socks5-more/

最通俗的解讀,最深刻的乾貨,最簡潔的教程,眾多你不知道的小技巧等你來發現!

歡迎關注我的公眾號:「程式那些事」,懂技術,更懂你!

相關文章