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
从服务器完成。