ubuntu 12.04 上的 iptables 和 CONNMARK

ubuntu 12.04 上的 iptables 和 CONNMARK

我在多宿主主机上安装了 Ubuntu 12.04。我尝试使用 iptables 将进入某个 IP 地址的 HTTP 数据包重新路由到另一个 IP 地址。

通过谷歌搜索,我相信在多宿主主机上有必要使用 CONNMARK 来标记传入连接,以便可以匹配相关的传出数据包。

然而,当我尝试使用短语“-j CONNMARK”时,我被告知没有这样的链。

如何在 Ubuntu 12.04 上使用‘-j CONNMARK’?

答案1

您必须加载connmark内核模块:

sudo modprobe ipt_connmark

检查模块是否已加载:

lsmod | grep connmark

答案2

简单的重新路由流量不需要 CONNMARK;而是使用一对 DNAT/SNAT 来实现,例如:

-t nat -A PREROUTING -d 1.2.3.4 -j DNAT --to-destination 5.6.7.8
-t nat -A POSTROUTING -d 5.6.7.8 -j SNAT --to-source 5.6.7.9

在哪里

  • 1.2.3.4 是人们连接的 IP 地址
  • 5.6.7.8 是实际目标
  • 5.6.7.9 是到达目标的接口的 IP

相关内容