OpenVPN 可以在一个配置中同时在 tcp 和 udp 上运行吗?
答案1
据我所知,一个隧道不能同时与 udp 和 tcp 一起工作。
另一方面,我正在运行隧道代理的配置,它支持在单独的配置文件中定义的传入 TCP 连接和 UDP 连接。
答案2
只需在不同的端口上使用不同的协议运行两个 opevpn 守护进程。
答案3
这是一个老问题,但一般来说您不想在 TCP 下使用 OpenVPN,因为它会导致更多的网络流量。
例如使用 UDP 下的 OpenVPN,发送单个用户 tcp 消息如下所示:
client: <OpenVPN UDP msg1><user TCP msg0>
server: <OpenVPN UDP msg2><user TCP ack0>
对于 TCP 下的 OpenVPN,每个 OpenVPN 消息也是 TCP,因此必须得到确认,包括作为嵌入流一部分的确认。同一条消息如下所示:
client: <OpenVPN TCP msg1><user TCP msg0>
server: <TCP ack1>
server: <OpenVPN TCP msg2><user TCP ack0>
client: <TCP ack2>
TCP 报头也稍微大一些。
使用 UDP 上的 OpenVPN,内部 TCP 层将处理任何重传。UDP 的主要缺点是连接无法判断它是否真的已启动。默认的 OpenVPN 配置通过设置定期保持连接 ping 来处理此问题。