我正在尝试在ip xfrm
两台计算机之间压缩 IP 负载。计算机 1 的 IP 地址为192.168.0.1
,计算机 2 的 IP 地址为192.168.0.2
。我成功地在两台机器之间建立了 IPSec 链接,如下所示这个要点。我尝试调整它以适应压缩。我运行了以下命令:
计算机 1
sudo ip xfrm state add src 192.168.0.1 dst 192.168.0.2 proto comp comp deflate
sudo ip xfrm policy add src 192.168.0.1 dst 192.168.0.2 dir out tmpl proto comp
计算机 2
sudo ip xfrm state add src 192.168.0.1 dst 192.168.0.2 proto comp comp deflate
sudo ip xfrm policy add src 192.168.0.1 dst 192.168.0.2 dir in tmpl proto comp
我首先通过使用 C1 ping C2 来测试它,并且使用 Wireshark 捕获它们之间的流量。PING 只以一种方式工作:只发送请求(no respond found
显示在 C2 上并且没有发送回复),并且在 Wireshark 上我没有看到任何方向的压缩。我将其解释为有效载荷太小所以xfrm
不压缩数据包。
然后我尝试建立SSH
从 C1 到 C2 的连接。SSH
没有启用压缩的情况下工作正常。当我启用压缩时,Wireshark 会显示压缩数据包,但 SSH 客户端会无休止地等待(与 PING 相同的原因)并最终得到一个connection timed out
。我认为这是因为 M2 不解压缩 IP 包,无法读取包并被丢弃。
我知道这些规则不是双向的,只适用于“上传”方向。所以我也尝试完成下载规则:切换 IP 和dir
策略。结果是一样的。
我的问题是:我哪里错了?哪种方法最好用于xfrm
压缩并使“下载”链接正常工作?
附言:我是个新手,缺乏解释,很难xfrm
理解如何正确使用它以及它是如何工作的。所以我之前的解释可能是错误的。
答案1
这行是不正确的:
PC2
sudo ip xfrm policy add src 192.168.0.1 dst 192.168.0.2 dir in tmpl proto comp
这导致 PC2 阻止来自 PC1 的未压缩的数据包(由于数据包较小)。
在以下配置中,ping -s1000 192.168.0.2
从PC1可能成功,但是ping -s56 192.168.0.2
得不到响应:
PC1
sudo ip xfrm policy add src 192.168.0.1 dst 192.168.0.2 dir out tmpl proto comp mode transport
sudo ip xfrm state add src 192.168.0.1 dst 192.168.0.2 proto comp spi 2 comp deflate mode transport
sudo ip xfrm policy add src 192.168.0.2 dst 192.168.0.1 dir in tmpl proto comp mode transport
sudo ip xfrm state add src 192.168.0.2 dst 192.168.0.1 proto comp spi 2 comp deflate mode transport
PC2
sudo ip xfrm policy add src 192.168.0.1 dst 192.168.0.2 dir in tmpl proto comp mode transport
sudo ip xfrm state add src 192.168.0.1 dst 192.168.0.2 proto comp spi 2 comp deflate mode transport
sudo ip xfrm policy add src 192.168.0.2 dst 192.168.0.1 dir out tmpl proto comp mode transport
sudo ip xfrm state add src 192.168.0.2 dst 192.168.0.1 proto comp spi 2 comp deflate mode transport
通过删除包含“xfrm policy add .* dir in tmpl proto comp”的行,ping -s56 192.168.0.2
PC1 和其他连接(如 SSH)都可以成功。结果如下:
PC1
sudo ip xfrm policy add src 192.168.0.1 dst 192.168.0.2 dir out tmpl proto comp mode transport
sudo ip xfrm state add src 192.168.0.1 dst 192.168.0.2 proto comp spi 2 comp deflate mode transport
sudo ip xfrm state add src 192.168.0.2 dst 192.168.0.1 proto comp spi 2 comp deflate mode transport
PC2
sudo ip xfrm state add src 192.168.0.1 dst 192.168.0.2 proto comp spi 2 comp deflate mode transport
sudo ip xfrm policy add src 192.168.0.2 dst 192.168.0.1 dir out tmpl proto comp mode transport
sudo ip xfrm state add src 192.168.0.2 dst 192.168.0.1 proto comp spi 2 comp deflate mode transport
答案2
在“计算机 2”设置中将“192.168.0.1”替换为“192.168.0.2”,反之亦然。