我已经为 eth0 配置了 8 个 IP,还在 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
答案1
您可以使用--interface
cURL 开关来指示它使用哪个接口,但您需要自己确定要使用哪个接口并将其作为脚本中的参数传递
--interface 使用指定接口执行操作。您可以输入接口名称、IP 地址或主机名。示例如下:
curl --interface eth0:1 http://www.netscape.com/ If this option is used several times, the last one will be used.
答案2
这可能有点过于复杂了。您需要以比您route
想象的更先进的方式更改路由表。相反,您可以使用 iproute2 工具套件。此工具是大多数主线发行版的标准配置。
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 -^