У меня есть несколько сетевых адаптеров, и мне нужно указать, какой адаптер мой сокет использует для исходящих подключений, чтобы я мог привязать один или несколько сокетов к каждой сети. Я просмотрел другие ответы на эти вопросы, но, похоже, не могу заставить их работать.
Привязка сокета к IP address
адаптера, через который я хочу подключиться, не работает. SO_BINDTODEVICE
тоже не работает, попытка передать имя адаптера или индекс адаптера, вызов завершился успешно, но сокет не может подключиться. Я не могу найти полный пример, в котором используется SO_BINDTODEVICE
чтобы уточнить правильное использование.
Симптомы использования вышеуказанных методов заключаются в том, что соединение получено сервером, но connect()
сбой на клиенте с кодом ошибки 2 (?). Я читал, что IP-маршрут необходим для обеспечения того, чтобы ответные пакеты отправлялись через тот же адаптер, который они были получены, но, похоже, не может правильно получить команды IP-маршрута.
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
яm using
Откройте встроенный Linux 2.6.36 на GumStix Overo (Omap3) `.
Любые подсказки были бы очень признательны, так как я схожу с ума здесь;)
Вы пытаетесь определить два маршрута по умолчанию во внешний мир. У вас должен быть только один шлюз / маршрут по умолчанию.
Скорее всего, вот что происходит:
Есть несколько инструментов среднего качества для Linux, которые позаботятся об этом за вас, но это не будет работать со статическим IP-адресом, и определенно не с плохой таблицей маршрутизации.