Ping 仅 2 次中的 1 次遍历 openvpn 隧道

网络工程 虚拟专用网 防火墙 icmp 感知
2022-02-12 19:49:06

我几乎无法用语言表达我遇到的问题,但我会试一试。

我有一个 pfsense 路由器,我在其上设置了 openvpn 作为客户端连接到另一个网络。

这几个月来一直完美无缺,但现在不再有效。我对防火墙进行了我认为不相关的更改,并进行了少量备份,以便能够回滚并验证它们是否可能是问题的根源。

我已经尝试将 openvpn 连接从 udp 移动到 tcp,如果原因是连接不稳定,希望能够修复。没有差异。

利用防火墙本身的隧道似乎完美无缺。

在我的笔记本电脑上设置相同的隧道似乎完美无缺。

但是当隧道启动并且我的局域网上的(不同的)单元尝试穿越它时,它无法正常工作。我遇到的最奇怪但最可靠的问题示例是 ping 远程单元。它每秒钟工作一次。如果 ping 在同一个 ping 运行中的所有包都有效,则得到正确的回复。如果我ctrl-c再试一次,每个包都会失败。这可以无限重复。

50% ping 正常

如何解释这种行为?

描述环境的东西: 局域网概述

在防火墙上,我可以使用 tcpdump 看到 LAN 接口上的流量,如下所示:

# echo "FAILED"; tcpdump -i igb0 -n -vvv host 172.16.66.2 and icmp
FAILED
tcpdump: listening on igb0, link-type EN10MB (Ethernet), capture size 262144 bytes
21:35:04.521732 IP (tos 0x0, ttl 64, id 25001, offset 0, flags [none], proto ICMP (1), length 84)
    10.11.12.182 > 172.16.66.2: ICMP echo request, id 58627, seq 0, length 64
21:35:05.527179 IP (tos 0x0, ttl 64, id 16857, offset 0, flags [none], proto ICMP (1), length 84)
    10.11.12.182 > 172.16.66.2: ICMP echo request, id 58627, seq 1, length 64
21:35:06.532373 IP (tos 0x0, ttl 64, id 31585, offset 0, flags [none], proto ICMP (1), length 84)
    10.11.12.182 > 172.16.66.2: ICMP echo request, id 58627, seq 2, length 64
21:35:07.533037 IP (tos 0x0, ttl 64, id 46426, offset 0, flags [none], proto ICMP (1), length 84)
    10.11.12.182 > 172.16.66.2: ICMP echo request, id 58627, seq 3, length 64
21:35:08.538315 IP (tos 0x0, ttl 64, id 41339, offset 0, flags [none], proto ICMP (1), length 84)
    10.11.12.182 > 172.16.66.2: ICMP echo request, id 58627, seq 4, length 64

和下一次尝试:

# echo "SUCCESS"; tcpdump -i igb0 -n -vvv host 172.16.66.2 and icmp
SUCCESS
tcpdump: listening on igb0, link-type EN10MB (Ethernet), capture size 262144 bytes
21:35:23.228088 IP (tos 0x0, ttl 64, id 32178, offset 0, flags [none], proto ICMP (1), length 84)
    10.11.12.182 > 172.16.66.2: ICMP echo request, id 60163, seq 0, length 64
21:35:23.237680 IP (tos 0x0, ttl 63, id 54367, offset 0, flags [none], proto ICMP (1), length 84)
    172.16.66.2 > 10.11.12.182: ICMP echo reply, id 60163, seq 0, length 64
21:35:24.229373 IP (tos 0x0, ttl 64, id 38273, offset 0, flags [none], proto ICMP (1), length 84)
    10.11.12.182 > 172.16.66.2: ICMP echo request, id 60163, seq 1, length 64
21:35:24.238655 IP (tos 0x0, ttl 63, id 54368, offset 0, flags [none], proto ICMP (1), length 84)
    172.16.66.2 > 10.11.12.182: ICMP echo reply, id 60163, seq 1, length 64
21:35:25.230248 IP (tos 0x0, ttl 64, id 13988, offset 0, flags [none], proto ICMP (1), length 84)
    10.11.12.182 > 172.16.66.2: ICMP echo request, id 60163, seq 2, length 64
21:35:25.239532 IP (tos 0x0, ttl 63, id 54369, offset 0, flags [none], proto ICMP (1), length 84)
    172.16.66.2 > 10.11.12.182: ICMP echo reply, id 60163, seq 2, length 64
21:35:26.235280 IP (tos 0x0, ttl 64, id 62651, offset 0, flags [none], proto ICMP (1), length 84)
    10.11.12.182 > 172.16.66.2: ICMP echo request, id 60163, seq 3, length 64
21:35:26.244645 IP (tos 0x0, ttl 63, id 54370, offset 0, flags [none], proto ICMP (1), length 84)
    172.16.66.2 > 10.11.12.182: ICMP echo reply, id 60163, seq 3, length 64

我不能说我看到任何将工作包与被忽略的包区分开来的东西。

使用相同的 tcpdump(或多或少,针对 openvpn NAT 进行了调整)我已经能够验证没有得到任何回复的 ping 数据包永远不会到达远程端。当然,那些确实按预期到达的。

2个回答

当 ICMP 回显请求全部进入隧道(检查 pfSense)并且没有回复返回时,要么是隧道不工作(不太可能,你会在你身边看到一些症状),要么是远端不工作。

另一方面,它可能是 ovpn 网关的问题,也可能是路由回隧道的问题。使用可能会出现回路由问题traceroute,具体取决于目标距离隧道末端多远以及路由停止工作的位置。

由于仅当您从某个子网(?)ping 时才会遇到此问题,所以我的赌注是路由问题。

发现问题!

我正在排除故障的隧道被设置为 vpn 客户端(从防火墙的角度来看)。这也是一个VPN服务器设置。

在 vpn 接口而不是 lan 接口上转储时,问题更清楚地表现出来:

# tcpdump -i ovpnc1 -n host 172.16.66.2 and icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ovpnc1, link-type NULL (BSD loopback), capture size 262144 bytes
19:23:09.190440 IP 10.8.0.6 > 172.16.66.2: ICMP echo request, id 14789, seq 0, length 64
19:23:09.200916 IP 172.16.66.2 > 10.8.0.6: ICMP echo reply, id 14789, seq 0, length 64
19:23:11.214663 IP 10.11.13.1 > 172.16.66.2: ICMP echo request, id 3794, seq 0, length 64
19:23:14.230789 IP 10.8.0.6 > 172.16.66.2: ICMP echo request, id 27669, seq 0, length 64
19:23:14.241737 IP 172.16.66.2 > 10.8.0.6: ICMP echo reply, id 27669, seq 0, length 64
19:23:16.255924 IP 10.11.13.1 > 172.16.66.2: ICMP echo request, id 65327, seq 0, length 64
19:23:19.282051 IP 10.8.0.6 > 172.16.66.2: ICMP echo request, id 2529, seq 0, length 64
19:23:19.292422 IP 172.16.66.2 > 10.8.0.6: ICMP echo reply, id 2529, seq 0, length 64
19:23:21.309039 IP 10.11.13.1 > 172.16.66.2: ICMP echo request, id 41732, seq 0, length 64
19:23:24.324271 IP 10.8.0.6 > 172.16.66.2: ICMP echo request, id 42558, seq 0, length 64
19:23:24.335141 IP 172.16.66.2 > 10.8.0.6: ICMP echo reply, id 42558, seq 0, length 64
19:23:26.347318 IP 10.11.13.1 > 172.16.66.2: ICMP echo request, id 10840, seq 0, length 64
19:23:29.363609 IP 10.8.0.6 > 172.16.66.2: ICMP echo request, id 26327, seq 0, length 64
19:23:29.374302 IP 172.16.66.2 > 10.8.0.6: ICMP echo reply, id 26327, seq 0, length 64
19:23:31.385639 IP 10.11.13.1 > 172.16.66.2: ICMP echo request, id 37158, seq 0, length 64
19:23:34.399109 IP 10.8.0.6 > 172.16.66.2: ICMP echo request, id 22445, seq 0, length 64
19:23:34.410245 IP 172.16.66.2 > 10.8.0.6: ICMP echo reply, id 22445, seq 0, length 64

我的本地局域网是打开10.11.12.0/24的,远程网络是172.16.66.0/24Openvpn 在它们之间有自己的网络。那应该是,但是正如您所看到的(可能不相关的)vpn服务器10.8.0.0/24的相应网络,请自来地显示。10.11.13.0/29

禁用 vpn 服务器会使 vpn 客户端流量正常工作。

使用 openvpn 手册的几个小时可能是我需要的。感谢您的输入。