udptunnel
1.0.0
此儲存庫包含透過開啟 TUN 裝置並透過 UDP 傳輸原始流量來實現點對點虛擬專用網路的簡單實作。此 VPN 旨在在兩台主機之間建立隧道:
TUN 流量透過未加密的 UDP 封包在兩個端點之間逐字傳送。因此,僅在此 VPN 之上執行更安全的協定(例如 SSH;請參閱 github.com/dsnet/sshtunnel)時才應使用此方法。為了防止攻擊者連接到端點上其他本地綁定的套接字,內建了一個簡單的連接埠過濾器來將 IP 流量限制為僅指定連接埠。 udptunnel 的使用者也應該設定 iptable 規則作為限制惡意流量的輔助措施。
這只支援Linux。
建構守護程式:
go get -u github.com/dsnet/udptunnel
建立伺服器設定檔:
{
"TunnelAddress" : "10.0.0.1" ,
"NetworkAddress" : ":8000" ,
"AllowedPorts" : [ 22 ] ,
}
主機為空的NetworkAddress
表示守護程式正在伺服器模式下運作。
建立客戶端設定檔:
{
"TunnelAddress" : "10.0.0.2" ,
"NetworkAddress" : "server.example.com:8000" ,
"AllowedPorts" : [ 22 ] ,
}
假設主機server.example.com
解析為客戶端可以存取伺服器的某個位址。
在客戶端和伺服器上啟動守護程序(假設$GOPATH/bin
在您的$PATH
中):
[email protected] $ udptunnel /path/to/config.json
[email protected] $ udptunnel /path/to/config.json
嘗試存取另一個端點(範例是客戶端到伺服器):
[email protected] $ ping 10.0.0.1
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_req=1 ttl=64 time=56.7 ms
64 bytes from 10.0.0.1: icmp_req=2 ttl=64 time=58.7 ms
64 bytes from 10.0.0.1: icmp_req=3 ttl=64 time=50.1 ms
64 bytes from 10.0.0.1: icmp_req=4 ttl=64 time=51.6 ms
[email protected] $ nmap 10.0.0.1
Host is up (0.063s latency).
PORT STATE SERVICE
22/tcp open ssh
[email protected] $ ssh 10.0.0.1
Password: ...
上面的範例顯示客戶端嘗試與伺服器通信,伺服器位址為10.0.0.1
。範例命令可以透過撥打客戶端10.0.0.2
從伺服器完成。