curl теоретически может использовать сетевой интерфейс не по умолчанию с опцией --interface . Однако на практике это не работает.
У меня 2 сетевых интерфейса eth0 и eth1 . Каждый из них подключен к Интернету через собственный маршрутизатор и использует DHCP для автоматической настройки. Допустим, eth0 IP - это ip0 а eth1 IP - это ip1 .
Итак, я установил eth0 как соединение по умолчанию через /etc/sysconfig/network-scripts и выполнил следующую команду:
curl --url "http://ip-api.com/json"
Я получаю JSON-ответ, где вижу, что фактическим внешним IP является ip0 . Теперь я устанавливаю eth1 вместо eth0 качестве интерфейса по умолчанию, и эта же команда возвращает мне ip1 .
Теперь я снова установил eth0 как IP-адрес по умолчанию и выполнил следующую команду:
curl --url "http://ip-api.com/json" --interface "eth0"
Нет проблем, возвращает ip0 .
И наконец:
curl --url "http://ip-api.com/json" --interface "eth1"
приводит к следующей ошибке:
curl: (7) не удалось подключиться к хосту
Как мы видим из предыдущего теста (где eth1 был интерфейсом по умолчанию), eth1 не имеет проблем. На самом деле это очень надежное проводное соединение, поэтому проблема не связана с проблемами стабильности сети.
Моя таблица маршрутизации выглядит следующим образом:
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
Кто-нибудь может объяснить, почему curl не работает с нестандартным интерфейсом?
