使用 xfrm 进行 IP 负载压缩

使用 xfrm 进行 IP 负载压缩

我正在尝试在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.2PC1 和其他连接(如 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”,反之亦然。

相关内容