openvpn ping:数据包响应在不同的(?)端口上完成

openvpn ping:数据包响应在不同的(?)端口上完成

我很难确定我的 openvpn 出现问题的确切位置,该问题运行在 Linux 服务器上,该服务器位于调制解调器后面,而调制解调器又通过动态 IP 连接到互联网。有关 openvpn 方面问题的详细历史以及查找问题的步骤,请参阅问题。

问题出在服务器防火墙、客户端防火墙和所涉及的中间调制解调器之间

在服务器上cat /etc/rc.d/rc.firewall | egrep -v '^(#|$)' | grep "\-t nat"给出:

$IPT -t nat -A PREROUTING -p tcp -i $LOCAL_IFACE --destination-port 80 -j REDIRECT --to-ports 3128 #TRANSP PROXY
$IPT -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE

在客户端上执行相同的命令:

$IPT -t nat -A POSTROUTING -o $INET_IFACE -j MASQUERADE [/quote]

再次tcpdump -i eth1 udp and host <server_or_client_inet_ip>进行 TLS 协商:在客户端

15:07:43.028277 IP 192.168.233.165.37073 > server_ip.32456: UDP, length 14
15:07:43.064518 IP server_ip.29199 > 192.168.233.165.37073: UDP, length 22

并在服务器上

15:07:43.046535 IP client_ip.15312 > 192.168.231.165.32456: UDP, length 14
15:07:43.046618 IP 192.168.231.165.32456 > client_ip.15312: UDP, length 22

这种连接在拓扑上看起来像这样:

  client         <--> modem of client <--i-n-t-e-r-n-e-t--> modem of server <-->     server
192.168.233.165       192.168.233.117                       192.168.231.117      192.168.231.165.

按时间排序,客户端和服务器之间的 openvpn ping 如下:

[client]  15:07:43.028277 IP 192.168.233.165.37073 > server_ip.32456: UDP, length 14
[server]  15:07:43.046535 IP client_ip.15312 > 192.168.231.165.32456: UDP, length 14
[server]  15:07:43.046618 IP 192.168.231.165.32456 > client_ip.15312: UDP, length 22
[client]  15:07:43.064518 IP server_ip.29199 > 192.168.233.165.37073: UDP, length 22

如果我没看错的话

  1. 客户端从端口37073向服务器openvpn端口(32456)发送数据包
  2. 在此步骤中,数据包先通过客户端的调制解调器,然后通过互联网,最后通过服务器的调制解调器。
  3. 然后服务器在与原始端口不同的端口(15312)上接收此数据包。但目的地是 32456,正如预期的那样。
  4. 服务器从端口 32456 正确响应,目标端口为接收数据包的端口 (15312)。响应数据包再次发往客户端。
  5. 数据包再次经过服务器调制解调器、互联网和客户端调制解调器
  6. 该数据包似乎到达了发起此通信尝试的端口 (37073) 上的客户端,但它似乎并非来自端口 32456。相反,在步骤 5 中的某个地方,源端口被更改为 29199。
  7. 由于防火墙规则中未提及源端口 29199,因此客户端防火墙规则会丢弃该数据包。

在步骤 2) 和最重要的步骤 5) 中,由于数据包的源端口更改,调制解调器中发生了一些 NAT,这种假设正确吗?还是我应该坚持认为问题出在我的防火墙上?

我的意思是这看起来像是一个 NAT 问题,但查看服务器和客户端防火墙 NAT 表,我无法从我自己设置的防火墙中找出错误。

如果我假设弄乱了我的自定义服务器和客户端防火墙(完全有可能),什么是 netfilter 命令我应该寻找那个改变数据包的源端口

就调制解调器而言,我要说明的是,在我的服务器调制解调器的配置网页中,防火墙和 SPI 被禁用,没有设置 NAT 规则,只设置了 DMZ 主机,因此全部互联网流量被转发到服务器的防火墙。客户端调制解调器的设置完全相同。

使用 tcpdump 嗅探这个数据包是否足够?我可以将 tcpdump 与其他命令一起使用以获取有关源端口更改位置的更多信息吗?

预先感谢您的帮助。

答案1

对于那些因为像我这样的奇怪的 NAT 问题而陷入困境的人来说。

好吧,最终还是因为调制解调器。它是 ISP 提供的。

带有固件“ZXHN H108LV4.0.0e_ZRQ_GR4”的“ZTE ZXHN H108L”(该问题最早出现在固件版本“d”中,但升级未能解决)。

我用另一个闲置的调制解调器替换了它,问题就解决了。当然,这个问题我已经反复摆弄了 6 个多月了。

相关内容