网络协议之:还在用HTTP代理?过时了,快试试SOCKS5
文章目錄
- 簡(jiǎn)介
- 為什么要使用SOCKS
- SOCKS5
- SOCKS5的使用
- 總結(jié)
簡(jiǎn)介
存在即是合理,SOCKS5的出現(xiàn)是為了解決SOCKS4中不支持身份認(rèn)證的大問(wèn)題而出現(xiàn)的,畢竟大家對(duì)網(wǎng)絡(luò)中的安全越來(lái)越重視了。沒(méi)有認(rèn)證的網(wǎng)絡(luò)就好像是生活在攝像頭下的人生,毫無(wú)隱私可言,實(shí)在是太可怕了。
今天給大家深入講解一下SOCKS5和它的應(yīng)用。
為什么要使用SOCKS
SOCKS是一種代理服務(wù)協(xié)議,為什么會(huì)要有代理服務(wù)協(xié)議呢?
因?yàn)樵诂F(xiàn)代網(wǎng)絡(luò)中,很多情況下,由于網(wǎng)絡(luò)或者防火墻的原因,我們很難直接去訪(fǎng)問(wèn)對(duì)方的網(wǎng)絡(luò),所以需要一種代理機(jī)制來(lái)充當(dāng)本地網(wǎng)絡(luò)和大型網(wǎng)絡(luò)之間的網(wǎng)關(guān)。
代理服務(wù)器通過(guò)攔截發(fā)送方和接收方之間的連接來(lái)工作。 所有傳入的數(shù)據(jù)都通過(guò)一個(gè)端口進(jìn)入,并通過(guò)另一個(gè)端口轉(zhuǎn)發(fā)到目標(biāo)網(wǎng)絡(luò)中。
當(dāng)然流量轉(zhuǎn)發(fā)是代理服務(wù)器的最基本的功能,代理服務(wù)器還可以通過(guò)隱藏客戶(hù)端或者服務(wù)器端的IP地址,從而實(shí)現(xiàn)網(wǎng)絡(luò)訪(fǎng)問(wèn)的安全性。另外因?yàn)榇矸?wù)器充當(dāng)了目標(biāo)服務(wù)器的代理,所以可以將代理服務(wù)器作為目標(biāo)服務(wù)器的緩存服務(wù)器,從而提高網(wǎng)絡(luò)訪(fǎng)問(wèn)效率。
另外代理服務(wù)器還可以通過(guò)對(duì)數(shù)據(jù)進(jìn)行攔截,從而進(jìn)行一些特殊的操作,比如對(duì)數(shù)據(jù)進(jìn)行加密,從而保證數(shù)據(jù)傳輸?shù)陌踩浴A硗獯矸?wù)器還可以對(duì)客戶(hù)端的訪(fǎng)問(wèn)進(jìn)行控制,比如可以阻止客戶(hù)端訪(fǎng)問(wèn)某個(gè)IP地址或者網(wǎng)站。
而SOCKS就是一種代理協(xié)議的標(biāo)準(zhǔn),通過(guò)這種協(xié)議,可以實(shí)現(xiàn)標(biāo)準(zhǔn)的代理服務(wù)。
在企業(yè)級(jí)網(wǎng)絡(luò)中,為了保證企業(yè)網(wǎng)絡(luò)的安全性,通常會(huì)有安裝上防火墻,這樣雖然保證了企業(yè)網(wǎng)絡(luò)的安全,但是也阻止了客戶(hù)端對(duì)外界網(wǎng)絡(luò)的訪(fǎng)問(wèn)。所以需要一個(gè)SOCKS 代理服務(wù)器來(lái)代替客戶(hù)端和目標(biāo)網(wǎng)站之間建立連接和進(jìn)行數(shù)據(jù)通信。
SOCKS代理可以繞過(guò)防火墻來(lái)中繼用戶(hù)的TCP和UDP會(huì)話(huà)。
SOCKS5
因?yàn)镾OCKS是運(yùn)行在OSI七層協(xié)議中的第五層會(huì)話(huà)層,所以它可以處理包括HTTP、HTTPS、POP3、SMTP 和 FTP等多種請(qǐng)求類(lèi)型,所以可以使用SOCKS協(xié)議來(lái)進(jìn)行郵件發(fā)送、網(wǎng)頁(yè)瀏覽、文件傳輸?shù)取?/p>
相對(duì)于SOCK4來(lái)說(shuō),SOCKS5加入了認(rèn)證機(jī)制,所以可以通過(guò)身份驗(yàn)證建立完整的TCP連接,SOCKS5通常和SSH一起使用,通過(guò)使用SSH加密隧道方法來(lái)中繼流量。
那么為什么我們需要使用SOCKS5呢?
首先我們可以通過(guò)SOCKS5來(lái)訪(fǎng)問(wèn)防火墻后面的服務(wù)。
一般來(lái)說(shuō),為了安全起見(jiàn),服務(wù)器都放在防火墻后面,但是外部的人想要訪(fǎng)問(wèn)該服務(wù)器的話(huà),有兩種辦法。第一種就是去掉防火墻,向公眾開(kāi)放該服務(wù),但是這樣會(huì)帶來(lái)安全的風(fēng)險(xiǎn)。第二種就是通過(guò)設(shè)置客戶(hù)端的IP白名單,來(lái)過(guò)濾非法的訪(fǎng)問(wèn)請(qǐng)求。但是客戶(hù)端的IP地址通常是會(huì)發(fā)送變化的,所以這種做法也是不可行的。
如果使用SOCKS5的SSH代理,就可以通過(guò)代理服務(wù)器來(lái)訪(fǎng)問(wèn)防火墻后面的服務(wù),從而保證服務(wù)的安全性。
另外,通過(guò)建立SSH隧道,在其中使用SOCKS5協(xié)議將各種TCP和UDP流量路由到各自的服務(wù),那么只需要使用SSH,而不需要使用其他VPN網(wǎng)絡(luò)。所以使用起來(lái)比較簡(jiǎn)單。
最后,因?yàn)镾OCKS5只是對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)發(fā),所以出錯(cuò)的可能性更小,性能會(huì)更高。
SOCKS5的使用
上面我們介紹了SOCKS5的各種優(yōu)點(diǎn),那么SOCKS5到底該如何使用呢?接下來(lái)向大家介紹一個(gè)使用ssh命令搭建一個(gè)簡(jiǎn)單的SOCKS5代理服務(wù)器。
先看下SSH建立SOCKS服務(wù)的命令:
ssh -f -C -N -D bindaddress:port name@server-f 表示SSH作為守護(hù)進(jìn)程進(jìn)入后臺(tái)執(zhí)行。
-N 表示不執(zhí)行遠(yuǎn)程命令,只用于端口轉(zhuǎn)發(fā)。
-D 表示是端口上的動(dòng)態(tài)轉(zhuǎn)發(fā)。這個(gè)命令支持SOCKS4和SOCKS5。
-C 表示發(fā)送前壓縮數(shù)據(jù)。
bindaddress 本地服務(wù)器的綁定地址。
port 表示本地服務(wù)器的指定偵聽(tīng)端口。
name 表示ssh服務(wù)器登錄名。
server表示ssh服務(wù)器地址。
上面命令的意思是,在本機(jī)建立端口綁定,然后將其轉(zhuǎn)發(fā)到遠(yuǎn)程的代理服務(wù)器上。
比如我們可以在本機(jī)開(kāi)一個(gè)2000的端口,將其轉(zhuǎn)發(fā)到遠(yuǎn)程168.121.100.23這臺(tái)機(jī)子上:
ssh -f -N -D 0.0.0.0:2000 root@168.121.100.23有了代理服務(wù)器之后,就可以使用了,首先介紹一個(gè)怎么在curl命令中使用SOCKS代理。
我們想通過(guò)代理服務(wù)器,訪(fǎng)問(wèn)www.flydean.com,該怎么做呢?
curl -x socks5h://localhost:2000 -v -k -X GET http://www.flydean.com:80要想檢測(cè)SOCKS的連接,還可以使用netcat命令如下:
ncat –proxy 127.0.0.1:2000 –proxy-type socks5 www.flydean.com 80 -nv總結(jié)
SOCKS5是一個(gè)非常有用的代理協(xié)議,你可以在需要的時(shí)候用上它。你懂的!
本文已收錄于 http://www.flydean.com/10-socks5-more/
最通俗的解讀,最深刻的干貨,最簡(jiǎn)潔的教程,眾多你不知道的小技巧等你來(lái)發(fā)現(xiàn)!
歡迎關(guān)注我的公眾號(hào):「程序那些事」,懂技術(shù),更懂你!
總結(jié)
以上是生活随笔為你收集整理的网络协议之:还在用HTTP代理?过时了,快试试SOCKS5的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: dart系列之:HTML的专属领域,除了
- 下一篇: netty系列之:一个价值上亿的网站速度