旋转传出的IP

我想旋转IP地址进行networking抓取,这里是我的设置:

  1. 我在/etc/network/interfaces文件中configuration了多个IP地址,如下所示:

     # The loopback network interface auto lo iface lo inet loopback # The primary network interface allow-hotplug eth0 iface eth0 inet static address XX.XXX.XXX.146 netmask 255.255.255.248 network XX.XXX.XXX.144 broadcast XX.XXX.XXX.151 gateway XX.XXX.XXX.145 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 208.67.222.222 208.67.220.220 dns-search host.myhost.com auto eth0:1 iface eth0:1 inet static address XX.XXX.XXX.147 netmask 255.255.255.248 broadcast XX.XXX.XXX.151 network XX.XXX.XXX.144 auto eth0:2 iface eth0:2 inet static address XX.XXX.XXX.148 netmask 255.255.255.248 broadcast XX.XXX.XXX.151 network XX.XXX.XXX.144 auto eth0:3 iface eth0:3 inet static address XX.XXX.XXX.149 netmask 255.255.255.248 broadcast XX.XXX.XXX.151 network XX.XXX.XXX.144 
  2. Cloudflare DNS执行到我的服务器的不同IP地址的循环。

  3. 但是,当我使用下面的PHP脚本来检查我的外部IP地址时,我得到$_SERVER['SERVER_ADDR'];不同值$_SERVER['SERVER_ADDR']; 但我的外部IP地址保持不变(由http://checkip.dyndns.com/下面的脚本检查)。

     <?php $externalContent = file_get_contents('http://checkip.dyndns.com/'); preg_match('/Current IP Address: ([\[\]:.[0-9a-fA-F]+)</', $externalContent, $m); $externalIp = $m[1]; echo $externalIp; echo '<br/>'; echo $_SERVER['SERVER_ADDR']; ?> 

我在这里错过了什么,我想执行一个外部的可执行文件,它应该使用我的服务器上可用的不同的公有IP地址轮stream?

想通了,解决办法是configurationiptables规则如下:

iptables -t nat -I POSTROUTING -m state --state NEW -p tcp --dport 80 -o eth0 -m statistic --mode nth --every 1 --packet 0 -j SNAT --to-source XX.XXX.XXX.146 iptables -t nat -I POSTROUTING -m state --state NEW -p tcp --dport 80 -o eth0 -m statistic --mode nth --every 2 --packet 0 -j SNAT --to-source XX.XXX.XXX.147 iptables -t nat -I POSTROUTING -m state --state NEW -p tcp --dport 80 -o eth0 -m statistic --mode nth --every 3 --packet 0 -j SNAT --to-source XX.XXX.XXX.148 iptables -t nat -I POSTROUTING -m state --state NEW -p tcp --dport 80 -o eth0 -m statistic --mode nth --every 4 --packet 0 -j SNAT --to-source XX.XXX.XXX.149

如果要在使用file_get_contents PHP函数时使用不同的源IP地址,则应尝试使用PHP 上下文并指定bindto套接字选项。

如果你不使用PHP,而你的客户端连接没有提供绑定到特定源地址的选项,那么你不能再使用iptables source-nat:你可以为每个外出IP地址定义正确的iptables NAT翻译 。

请注意,DNS并不代表您需要的任何angular色,因为它只涉及INBOUND服务。