天天看點

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

目錄

  • 簡介
  • 為什麼要使用SOCKS
  • SOCKS5
  • SOCKS5的使用
  • 總結

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

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

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

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

代理伺服器通過攔截發送方和接收方之間的連接配接來工作。 所有傳入的資料都通過一個端口進入,并通過另一個端口轉發到目标網絡中。

當然流量轉發是代理伺服器的最基本的功能,代理伺服器還可以通過隐藏用戶端或者伺服器端的IP位址,進而實作網絡通路的安全性。另外因為代理伺服器充當了目标伺服器的代理,是以可以将代理伺服器作為目标伺服器的緩存伺服器,進而提高網絡通路效率。

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

而SOCKS就是一種代理協定的标準,通過這種協定,可以實作标準的代理服務。

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

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

因為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到底該如何使用呢?接下來向大家介紹一個使用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 [email protected]
           

有了代理伺服器之後,就可以使用了,首先介紹一個怎麼在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/

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

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