转发不同的私有IP和接口别名

我有一个服务器与2个公共IP。 我configuration了接口别名来保存第二个IP:

# ifconfig vmbr0 Link encap:Ethernet HWaddr 4c:72:b9:4f:18:5f inet addr:public.ip.number.1 Bcast:xxx255 Mask:255.255.255.0 vmbr0:0 Link encap:Ethernet HWaddr 4c:72:b9:4f:18:5f inet addr:public.ip.number.2 Bcast:xxx255 Mask:255.255.255.0 

我想使用iptablesredirectvmbr0端口80上的stream量到10.0.0.100和stream量vmbr0:0端口80到10.0.0.101。

我试过的:

 # iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o vmbr0 -j SNAT --to public.ip.number.1 # iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o vmbr0:0 -j SNAT --to public.ip.number.2 # iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 80 -j DNAT --to 10.0.0.100:80 # iptables -t nat -A PREROUTING -i vmbr0:0 -p tcp --dport 80 -j DNAT --to 10.0.0.101:80 

但是,无论我使用一个还是另一个公共IP,所有stream量都会达到10.0.0.100:80。

有任何想法吗?

我不确定你可以通过这种方式来区分逻辑接口。 改为尝试

 iptables -t nat -A PREROUTING -d public.ip.number.1 -p tcp --dport 80 -j DNAT --to 10.0.0.100:80 iptables -t nat -A PREROUTING -d public.ip.number.2 -p tcp --dport 80 -j DNAT --to 10.0.0.101:80 

DNAT规则。 我不知道该怎么做,因为他们没有任何意义 。 他们显然希望根据数据包的虚拟接口设置源地址 – 但是select哪个虚拟接口将取决于源地址! 如果他们应该修复来自通过DNAT规则进入的stream量的“返回一半”数据包,那么不用担心,内核会为您做这件事。