我正在尝试使用 ip-in-ip 隧道将数据包从 HostA 转发到 HostB。当数据包到达目的地时,接收主机不会对它们进行解封装,因此随后会丢弃它们。我觉得我已经用尽了所有的 Google 搜索。实际上,接收主机似乎从未将数据包发送到隧道设备进行解封装。
我尝试过的最常用的教程是这里,但我尝试了多种方法和不同的教程,但仍然遇到同样的问题。我遗漏了什么?
在 HostA 上:
ip tunnel add tun0 mode ipip local $hostA remote $hostB
ip link set tun0 up
ip addr add 10.10.10.1/24 dev tun0
在 HostB 上
ip tunnel add tun0 mode ipip local $hostB remote $hostA
ip link set tun0 up
ip addr add 10.10.10.2/24 dev tun0
现在,当我 时ping 10.10.10.2
,没有收到任何响应。HostB 显示(通过tcpdump -c 10 -nn src host 10.10.10.1 or src host $hostA
):
(编辑以删除主机的实际 IP 地址)
18:18:56.026192 IP [HostA eth0 IP] > [HostB eth0 IP]: IP 10.10.10.1 > 10.10.10.2: ICMP echo request, id 41073, seq 69, length 64 (ipip-proto-4)
传入的数据包看起来应该如此,但它们从未被解封装。tcpdump -nni tun0
没有输出,并且从未对 ping 做出任何响应。
答案1
确保您的防火墙规则允许 HostB 接收该请求(并且,显然,HostA 也允许接收该请求)。
在这种情况下,具体来说,接受“ipencap”协议可以解决问题。