Múltiplos IPs, uma interface - Como configurar a conexão de saída com IP diferente?

4

Eu configurei eth0 com 8 IP também adiciono virtualhost no apache para IPs diferentes e tudo funciona quase bem. Quando o script (como PHP, ruby) lançado pelo apache2 tenta fazer a conexão de saída (através do cURL), ele usa o padrão eth0: 0 IP, não relacionado ao domínio (e requisição recebida). Estou tentando usar algo parecido com isso

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
    
por bugthelady 05.11.2012 / 13:16

2 respostas

3

Você pode usar a chave --interface para cURL para direcionar qual interface ela usa, mas você precisará descobrir qual interface usar e passá-la como um parâmetro do seu script

--interface Perform an operation using a specified interface. You can enter interface name, IP address or host name. An example could look like:

          curl --interface eth0:1 http://www.netscape.com/

         If this option is used several times, the last one will be used.
    
por 05.11.2012 / 13:25
0

Isso pode complicar demais as coisas um pouco. Você precisa alterar sua tabela de roteamento de uma maneira mais avançada que route . Em vez disso, você pode usar o conjunto de ferramentas iproute2. Esta ferramenta é padrão na maioria das distribuições de linha principal.

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 -^
    
por 05.11.2012 / 14:39

Tags