tun2socks 的原理是將TUN 設備上的IP 數據包轉換為SOCKS 協議數據,然后通過SOCKS 代理服務器發送。簡單來說,它利用TUN 設備模擬一個虛擬網絡接口,將所有流經該接口的網絡流量重定向到SOCKS 代理,從而實現流量的代理轉發,讓原本不支持SOCKS 代理的應用也能使用SOCKS 代理。
具體原理如下:
1.?TUN 設備:
TUN (介于網絡層和數據鏈路層之間的虛擬網絡接口) 設備模擬一個網絡接口,它接收IP 數據包并將其傳遞給用戶空間應用程序。tun2socks 運行后,會創建一個TUN 設備,并將所有流經該設備的IP 數據包捕獲。
2.?IP 數據包解析:
tun2socks 接收到TUN 設備傳遞的IP 數據包后,會解析數據包中的IP 地址、端口等信息。
3.?SOCKS 協議轉換:
tun2socks 將解析出的IP 數據包信息轉換為SOCKS 協議(通常是SOCKS5 協議) 格式的數據,并將其發送給配置的SOCKS 代理服務器。
4.?代理服務器轉發:
SOCKS 代理服務器接收到tun2socks 發送的數據后,根據其配置,將數據轉發到目標服務器,并將目標服務器的響應數據返回給tun2socks。
5.?數據回傳:
tun2socks 接收到代理服務器的響應數據后,將其轉換回原始的IP 數據包格式,并通過TUN 設備發送回原始應用程序,完成整個代理過程。
總結來說,tun2socks 通過在TUN 設備上攔截IP 數據包,并將其轉化為SOCKS 協議數據,然后利用SOCKS 代理服務器進行轉發,最終實現流量的代理和轉發功能。
一些關鍵概念:
TUN/TAP:
TUN (通用網絡隧道) 和TAP (通用以太網隧道) 都是虛擬網絡接口,用于在用戶空間和內核空間之間傳遞網絡數據包。TUN 模擬的是IP 層,而TAP 模擬的是以太網層。
SOCKS 代理:
SOCKS 是一種網絡協議,用于在客戶端和服務器之間建立代理連接。SOCKS 代理服務器可以轉發各種類型的網絡流量,包括TCP 和UDP。
透明代理:
tun2socks 實現的是一種透明代理,應用程序不需要進行任何配置,就可以自動使用代理。這是因為它通過TUN 設備劫持了網絡流量,并將其轉發到代理服務器。