多个 IP,一个接口 - 如何配置具有不同 IP 的传出连接?

多个 IP,一个接口 - 如何配置具有不同 IP 的传出连接?

我已经为 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

您可以使用--interfacecURL 开关来指示它使用哪个接口,但您需要自己确定要使用哪个接口并将其作为脚本中的参数传递

--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 -^

相关内容