多个IP,一个接口 – 如何configuration与不同IP的传出连接?

我configuration了8个IP的eth0也添加适当的虚拟主机在Apache为不同的IP和一切工作几乎没有问题。 当由apache2发起的脚本(如PHP,ruby)试图通过cURL进行传出连接时,它使用默认的eth0:0 IP,而不是与域(和传入请求)相关的IP。 我正在尝试使用类似的东西

iptables -t nat -A POSTROUTING -s 192.168.1.202 -o eth0 -j SNAT --to 99.99.99.244 iptables -t nat -A POSTROUTING -s 192.168.1.202 -o eth0 -j SNAT --to 99.99.99.245 iptables -t nat -A POSTROUTING -s 192.168.1.202 -o eth0 -j SNAT --to 99.99.99.247 iptables -t nat -A POSTROUTING -s 192.168.1.202 -o eth0 -j SNAT --to 99.99.99.246 

您可以使用--interface切换cURL来指定它使用的接口,但是您需要自己确定使用哪个接口并将其作为脚本parameter passing

–interface使用指定的接口执行操作。 您可以input接口名称,IP地址或主机名称。 一个例子可能如下所示:

  curl --interface eth0:1 http://www.netscape.com/ If this option is used several times, the last one will be used. 

这可能会使事情变得复杂一点。 您需要以比route更先进的方式更改路由表。 相反,你可以使用iproute2工具套件。 这个工具是大多数主线分布的标准configuration。

 ip route change 0.0.0.0/0 dev eth0 src 1.2.3.4 via 1.2.3.1 source address you want to use -^ ^ default gateway -^