我想用 OpenVPN 设置一个 VPN 服务器,这样客户端电脑就可以像在同一个物理网络中一样互相访问。
我遇到的一个问题是,我无法通过 UDP 连接。当我将服务器+客户端配置更改为使用 TCP 连接时,客户端可以成功连接到服务器。我读到 TCP over TCP 很糟糕,会产生很多开销。
服务器位于具有公共 IP 的路由器后面,并且服务器的 IP 配置为位于路由器的 DMZ 中。
有没有办法测试使用 UDP 时连接失败的位置?在客户端的路由器上、在客户端的 ISP 上、在我的路由器上还是其他地方?使用 UDP 是否可以进行这样的设置,还是我必须求助于 TCP?
如果我遗漏了重要细节,请告诉我,我会很乐意添加它们。
答案1
听起来好像防火墙阻止了流量。我建议使用 udp 嗅探器。对于 Linux,请尝试 tcpdump(尽管它的名字是 udp,但它也支持 udp)。
答案2
处于 DMZ 并不意味着您可以从 Internet 或网络上的任何其他地方完全访问。许多文件墙仅允许所需的端口进出 DMZ。如果您的端口不在允许列表中,那么它们将无法到达您的服务器。
UDP 故障不像 TCP 故障那么容易调查。
- ICMP 监控器可以指示数据包被拒绝的位置。如果数据包被丢弃,监控器将失败。
- 两端的防火墙日志可能表明流量被丢弃。临时日志规则可以指示流量是否到达防火墙。
- 类似的工具
tcpdump
可用于确定正在发送和/或到达的流量。