curl pode usar a interface de rede não padrão com sua opção --interface teoricamente. No entanto, na prática, não funciona.
Eu tenho 2 interfaces de rede eth0 e eth1 . Cada um deles está conectado à Internet através do seu próprio roteador e usa o DHCP para configuração automática. Digamos que eth0 IP seja ip0 e eth1 IP seja ip1 .
Então, eu defino eth0 como conexão padrão via /etc/sysconfig/network-scripts e executo o seguinte comando:
curl --url "http://ip-api.com/json"
Eu recebo uma resposta JSON, onde vejo que o IP externo real é ip0 . Agora eu defino eth1 em vez de eth0 como interface padrão, e o mesmo comando me retorna ip1 .
Agora defino eth0 como o IP padrão novamente e execute o seguinte comando:
curl --url "http://ip-api.com/json" --interface "eth0"
Sem problemas, retorna ip0 .
E finalmente:
curl --url "http://ip-api.com/json" --interface "eth1"
resulta no seguinte erro:
curl: (7) couldn't connect to host
Como podemos ver no teste anterior (em que eth1 era a interface padrão), eth1 não tem problemas. É uma conexão com fio muito confiável, portanto, o problema não está relacionado a nenhum problema de estabilidade de rede.
Minha tabela de roteamento segue:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.85.0 0.0.0.0 255.255.255.0 U 1 0 0 eth1
192.168.182.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth2
169.254.0.0 0.0.0.0 255.255.0.0 U 1004 0 0 eth2
0.0.0.0 192.168.182.2 0.0.0.0 UG 0 0 0 eth0
0.0.0.0 192.168.85.1 0.0.0.0 UG 1 0 0 eth1
Alguém pode explicar por que o curl não funciona com uma interface não padrão?