Как заставить сокет-соединение использовать определенный сетевой адаптер под Linux? вопрос IP-маршрута?
У меня есть несколько сетевых адаптеров, и мне нужно указать, какой адаптер использует мой сокет для исходящих соединений, чтобы я мог иметь один или несколько сокетов, привязанных к каждой сети. Я посмотрел на другие ответы на эти вопросы, но не могу заставить его работать.
Привязка розетки к IP address
адаптера я хочу подключить через не работает.SO_BINDTODEVICE
тоже не работает, попытался передать либо имя адаптера, либо индекс адаптера, вызов выполнен успешно, но сокет не может подключиться. Я не могу найти полный пример, который использует SO_BINDTODEVICE
уточнить правильное использование.
Симптомы, использующие описанные выше методы, заключаются в том, что сервер получает соединение, но connect()
происходит сбой на клиенте с кодом ошибки 2 (?). Я прочитал, что ip route необходим для того, чтобы ответные пакеты отправлялись через тот же адаптер, в котором они были получены, но, похоже, не могут правильно получить команды ip route
The tables Teth0 and Twlan0 have been added.
For eth0, the IP address is 192.168.1.23, the gateway is 192.168.1.1
For wlan0, the IP address is 192.168.2.100, the gateway is 192.168.2.1
ip route add 192.168.1.1/32 dev eth0 src 192.168.1.23 table Teth0
ip route add default via 192.168.1.1 table Teth0
ip rule add from 192.168.1.23 table Teth0
ip route add 192.168.2.1/32 dev wlan0 src 192.168.2.100 table Twlan0
ip route add default via 192.168.2.1 table Twlan0
ip rule add from 192.168.2.100 table Twlan0
ip route flush cache
яm using
Откройте Embedded Linux 2.6.36 на GumStix Overo (Omap3)`.
Любые советы будут с благодарностью, так как я схожу с ума здесь;)
1 ответ
Вы пытаетесь определить два маршрута по умолчанию во внешний мир. У вас должен быть только один шлюз / маршрут по умолчанию.
Скорее всего, это то, что происходит:
Есть несколько инструментов среднего качества для Linux, которые позаботятся об этом за вас, но это не будет работать со статическим IP-адресом, и, определенно, не с плохой таблицей маршрутизации.