我有一个 VPN 隧道(ipsec/StrongSwan) 设置,已连接。另一方显然能够通过隧道 ping 我。但是据说另一方从未收到我这边的 ping。因此,另一方(我无法控制)认为这是我这边的配置问题。
我对此确实不确定,因为我可以看到 tcpdumping 时发出的 ping 数据包:
$ ping -c 5 192.168.33.1
PING 192.168.33.1 (192.168.33.1) 56(84) bytes of data.
--- 192.168.33.1 ping statistics ---
5 packets transmitted, 0 received, 100% packet loss, time 4009ms
(at the same time in another console)
$ tcpdump host REMOTE
09:22:07.539582 IP OURS > REMOTE: ESP(spi=0xXXXXXX,seq=0x3), length 132
09:22:08.547608 IP OURS > REMOTE: ESP(spi=0xXXXXXX,seq=0x4), length 132
(... one packet per ping ...)
ESP 流量显然是我的 ping。确保我已禁用我这边的所有防火墙。
因此我的问题是:我如何确保 ping 数据包已发出并被接收?这可能是什么原因?我还能做些什么来帮助调试该问题?
附注:,我已经设置并运行了另一个 VPN,使用完全相同的配置。
有关隧道的一些信息:
$ ipsec statusall chtunnel
Security Associations (2 up, 0 connecting):
chtunnel[377]: ESTABLISHED 5 minutes ago, OURS[OURS]...REMOTE[REMOTE]
chtunnel[377]: IKEv1 SPIs: xxxxxxx_i* xxxxxxxxxx_r, pre-shared key reauthentication in 39 minutes
chtunnel[377]: IKE proposal: AES_CBC_256/HMAC_SHA1_96/PRF_HMAC_SHA1/MODP_1024
chtunnel{442}: INSTALLED, TUNNEL, reqid 45, ESP SPIs: xxxxxx_i xxxxxx_o
chtunnel{442}: AES_CBC_256/HMAC_SHA1_96/MODP_1024, 0 bytes_i, 756 bytes_o (9 pkts, 22s ago), rekeying in 26 minutes
chtunnel{442}: 192.168.32.1/32 === 192.168.33.0/24
756 bytes_o (9 pkts, 22s ago)
当我发送 ping 时,统计数据确实会增加(每个 ping 一个数据包)。
答案1
使用 tcpdump 专门为隧道接口捕获流量应该会显示流量是否通过隧道离开,这样您就可以确保 VPN 的另一端正在接收流量。
这将向您显示加密的流量。如果您想具体检查所有流量,您可以关注 strongswan wiki 中的这个 wiki:
https://wiki.strongswan.org/projects/strongswan/wiki/CorrectTrafficDump
最有可能的是,另一端没有接受流量,而是将其丢弃到某个防火墙中,但这样你就可以确定,并可以要求他们检查一下