最接近一个基于VPN P2P我找到的解决方案是对等VPN: 确实很容易安装,但需要打开一个端口node
(默认情况下为 7000 TCP)在运行它的 一台计算机(也称为 )上。
我想准备一些Linux设备来自动连接到任何特定VPN网络,例如通过使用一些 cron 任务,以便随时随地远程找到他们他们是。我无法访问路由器,所以我无法打开端口。
最佳解决方案是使用类似以下的工具:
# p2pvpn --connect --network MyNetworkName
$ ifconfig
eth0 Link encap:Ethernet direcciónHW 00:23:54:7f:f2:4f
Direc. inet:192.168.11.113 Difus.:192.168.11.255 Másc:255.255.255.0
tun0 Link encap:UNSPEC direcciónHW 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
Direc. inet:10.8.0.6 P-t-P:10.8.0.5 Másc:255.255.255.255
注意tun0
新创建的虚拟接口。
有这样的事吗?
命令行首选解决方案。
多平台首选解决方案。
附加点: - 类似的解决方案(仍然需要打开端口)是类似的程序开放VPN(设置起来几乎令人头疼,但效果很好)。
答案1
这应该如果您对源和目标都使用 UDP 和端口号,那么这是可能的,尽管我还没有尝试过。例如:
- A从1194端口向B发送数据包到1194端口
- B从1194端口向A发送数据包到1194端口
- B 的防火墙允许来自 A 的数据包,因为它认为这些数据包是对 B 发送的数据包的回复。
- A 的防火墙允许来自 B 的数据包,因为它认为这些数据包是对 A 发送的数据包的回复。
许多(但不是全部)防火墙都允许这种 UDP 打洞。但它不适用于 TCP,因为防火墙会更密切地跟踪 TCP 连接的状态,并且您无法轻易欺骗它们。这意味着您提到的 PeerVPN 软件已经过时了,因为您提到它使用 TCP。但 OpenVPN 应该可以工作,它默认使用 UDP(其文档提到 VPN 的 TCP 不是一个好主意,出于不相关的原因)。对于 OpenVPN,使用固定本地端口号的选项是--lport
。
您还可以尝试使用固定的源端口和目标端口,但每一侧使用不同的端口。
在一侧或两侧存在双 NAT、不尝试保留源端口的 NAT 或比平常更严格的防火墙的情况下,将阻止 UDP 打洞。
或者您可以使用 IPv6 而不是 IPv4。可用 IPv6 地址的绝对数量消除了 NAT 的需要及其所有烦恼!