如何找出UDP连接失败的地方?

我想用OpenVPNbuild立一个VPN服务器,这样客户端PC可以像在同一个物理networking中一样访问对方。

我遇到的一个问题是,我无法通过UDP连接。 当我更改服务器+客户端configuration以使用TCP连接时,客户端可以成功连接到服务器。 我读TCP上的TCP是不好的,并导致大量的开销。

服务器在具有公共IP的路由器后面,服务器的IP被configuration在路由器的DMZ中。

有没有一种方法可以testing使用UDP时连接失败的地方? 在客户端的路由器,在客户端的ISP,在我的路由器,在别的地方? 这样的设置甚至可能与UDP或我不得不求助于TCP?

如果我错过了重要的细节,让我知道,我会很乐意添加它们。

听起来像一个防火墙阻止stream量。 我build议使用udp sniffer..for linux,尝试tcpdump(尽pipe它的名字也是udp)。

在DMZ中并不意味着您可以从互联网或networking上的任何其他位置进行访问。 许多文件墙只允许所需的端口进出DMZ。 如果您的端口不在允许列表中,那么它们将不会到达您的服务器。

UDP故障不像TCP故障那样容易调查。

  • ICMP监视器可以指示数据包被拒绝的地方。 如果数据包被丢弃,将会失败。
  • 两端的防火墙日志可能表示stream量正在丢失。 临时日志logging规则可以指示stream量是否到达防火墙。
  • tcpdump这样的工具可以用来确定什么stream量正在发送和/或到达。