作者:吳煥政,單位:中國移動智慧家庭運營中心
SOCKS5協(xié)議在網(wǎng)絡代理和隧道技術方面具有廣泛的應用,為用戶提供了更安全、更自由的網(wǎng)絡訪問體驗。
Part 01●??Socks5協(xié)議概念?●
Socks5是一個代理協(xié)議,它在使用TCP/IP協(xié)議通訊的前端機器和服務器之間扮演一個中間角色,使得內(nèi)部網(wǎng)中的前端機器能夠訪問Internet網(wǎng)中的服務器。相比于早期的SOCKS協(xié)議版本,SOCKS5具有以下主要功能和特點:
(1)支持IPv4和IPv6:SOCKS5協(xié)議可以同時支持IPv4和IPv6地址,適應不同網(wǎng)絡環(huán)境的需求。
(2)用戶驗證:SOCKS5支持多種用戶驗證方式,如用戶名/密碼認證、GSS-API認證等,增加了連接的安全性。
(3)數(shù)據(jù)加密:SOCKS5協(xié)議可以通過TLS/SSL等加密協(xié)議對數(shù)據(jù)進行加密,保護數(shù)據(jù)的安全性。
(4)UDP轉(zhuǎn)發(fā):相比于SOCKS4協(xié)議,SOCKS5協(xié)議支持UDP轉(zhuǎn)發(fā),可以在代理連接中傳輸UDP數(shù)據(jù)。
常用的socks5代理軟件有以下幾種。
Shadowsocks:一種開源的代理軟件,提供加密和隧道技術,以保護數(shù)據(jù)傳輸的安全性。
Proxifier:一種流行的代理軟件,可以將網(wǎng)絡應用程序通過SOCKS5代理連接到目標服務器。
Dante:一個高性能的SOCKS5代理服務器,支持多種認證方式和靈活的配置選項。
PuTTY:一個SSH和Telnet客戶端,也可以用作SOCKS5代理軟件,通過SSH隧道提供安全的代理連接。
OpenSSH:一個用于遠程登錄和文件傳輸?shù)拈_源軟件,也可以配置為SOCKS5代理服務器。
Tor:一個匿名網(wǎng)絡工具,可以通過SOCKS5代理連接到Tor網(wǎng)絡,保護用戶的隱私和匿名性。
Part 02●?Sock5協(xié)議交互過程?●
socks協(xié)議交互過程如下,交互細節(jié)見圖1,數(shù)據(jù)包格式見圖2。
(1) PC 發(fā)起訪問服務器的連接請求。
(2) 連接請求被 socks5 客戶端攔截,隨后 socks5 客戶端主動跟 socks5 代理服務器建立 TCP 連接。
(3) socks5 客戶端主動與 socks5 代理服務器進行認證。
(4) 認證通過后,socks5 代理服務器主動與服務器建立連接。若 PC發(fā)起的是TCP請求則建立TCP 請求連接,否則建立UDP 請求連接。
(5) 請求建立連接后 socks5 代理服務器與服務器之間進行數(shù)據(jù)交互。
(6) socks5 代理服務器把數(shù)據(jù)通過 socket 轉(zhuǎn)發(fā)給 socks5 客戶端。
(7) socks5 客戶端把數(shù)據(jù)轉(zhuǎn)發(fā)給PC。
圖1 socks5協(xié)議交互流程
圖2 socks5 協(xié)議數(shù)據(jù)包格式
Part 03●??Sock5應用場景?●
SOCKS5協(xié)議在多種應用場景中發(fā)揮重要作用,以下是一些常見的應用場景:
圖3 Socks5 常規(guī)部署拓撲
繞過網(wǎng)絡封鎖:在一些地區(qū)或組織中,可能存在網(wǎng)絡封鎖,限制用戶訪問特定的網(wǎng)站或服務。通過使用SOCKS5代理,用戶可以繞過這些封鎖,訪問被限制的內(nèi)容。
加速網(wǎng)絡連接:有時,用戶可能會遇到網(wǎng)絡連接速度較慢或延遲較高的問題。通過使用SOCKS5代理,可以選擇更快的代理服務器,從而提高網(wǎng)絡連接速度和響應時間。
繞過地理限制:某些網(wǎng)站或服務可能根據(jù)用戶所在的地理位置進行限制,通過使用SOCKS5代理,用戶可以偽裝自己的IP地址,繞過地理限制,訪問被限制的內(nèi)容。
企業(yè)內(nèi)部網(wǎng)絡:在企業(yè)內(nèi)部網(wǎng)絡中,使用SOCKS5代理可以實現(xiàn)對內(nèi)部資源的訪問控制和管理,提高網(wǎng)絡安全性和管理效率。
各種數(shù)據(jù)源通過Kafka接入到數(shù)據(jù)平臺層,數(shù)據(jù)平臺講明細數(shù)據(jù)存入數(shù)據(jù)存儲層的ClickHouse中,明細數(shù)據(jù)的存活時間可以根據(jù)業(yè)務需求設置。同時可以根據(jù)業(yè)務報表查詢的不同維度,利用ClickHouse的物化視圖形成預聚合數(shù)據(jù),提高數(shù)據(jù)查詢效率。由數(shù)據(jù)服務層的定時任務周期性地從ClickHouse的預聚合數(shù)據(jù)中查詢業(yè)務所需的展示數(shù)據(jù),把展示數(shù)據(jù)存入MySQL。由數(shù)據(jù)服務層的報表服務向數(shù)據(jù)展示層提供查詢服務,報表服務直接查詢MySQL中的結(jié)果數(shù)據(jù),保證了查詢效率和并發(fā)性。
Part 04●??Sock5協(xié)議在家寬中的應用?●
在家寬網(wǎng)絡環(huán)境中,為解決到網(wǎng)絡連接速度較慢或延遲較高的問題,提供差異化的高品質(zhì)的網(wǎng)絡體驗,中國移動提供智能網(wǎng)絡智能加速服務,通過socks5 tunnel把用戶流量導入加速網(wǎng)絡,降低游戲訪問的時延,解決卡頓丟包等問題。此場景中socks5 client和socks5 server進行了改造,client端直接發(fā)起socks5請求,server端接收請求并代理請求。
圖4 Socks5在家寬場景中拓撲
Part 05●?總結(jié)?●
SOCKS5協(xié)議是一種應用層協(xié)議,用于在客戶端和代理服務器之間建立代理連接。它支持TCP和UDP傳輸協(xié)議,并能夠代理各種應用層協(xié)議的連接。SOCKS5協(xié)議通過代理服務器中轉(zhuǎn)客戶端的請求,提供了繞過網(wǎng)絡封鎖、提高網(wǎng)絡安全性、加速網(wǎng)絡連接和繞過地理限制等功能。通過加密協(xié)議,SOCKS5協(xié)議可以保護數(shù)據(jù)的安全性??偟膩碚f,SOCKS5協(xié)議在網(wǎng)絡代理和隧道技術方面具有廣泛的應用,為用戶提供了更安全、更自由的網(wǎng)絡訪問體驗。
各種數(shù)據(jù)源通過Kafka接入到數(shù)據(jù)平臺層,數(shù)據(jù)平臺講明細數(shù)據(jù)存入數(shù)據(jù)存儲層的ClickHouse中,明細數(shù)據(jù)的存活時間可以根據(jù)業(yè)務需求設置。同時可以根據(jù)業(yè)務報表查詢的不同維度,利用ClickHouse的物化視圖形成預聚合數(shù)據(jù),提高數(shù)據(jù)查詢效率。由數(shù)據(jù)服務層的定時任務周期性地從ClickHouse的預聚合數(shù)據(jù)中查詢業(yè)務所需的展示數(shù)據(jù),把展示數(shù)據(jù)存入MySQL。由數(shù)據(jù)服務層的報表服務向數(shù)據(jù)展示層提供查詢服務,報表服務直接查詢MySQL中的結(jié)果數(shù)據(jù),保證了查詢效率和并發(fā)性。