Обойти маршрут по умолчанию для исходящих соединений - PullRequest
0 голосов
/ 03 ноября 2011

Я пишу небольшое приложение, которое должно подключаться через один из нескольких сетевых интерфейсов на машине.Интерфейс не является «по умолчанию» (тот, у которого есть маршрут по умолчанию).Можно ли привязать исходящий TCP-сокет напрямую к определенному интерфейсу?

Вот пример:

eth0: 192.168.1.10, gateway 192.168.1.1
eth1: 192.168.2.10, gateway 192.168.2.1
default gateway: 192.168.1.1
(both interfaces can reach the Internet through different external IPs)

Теперь я хочу, чтобы мое приложение использовало eth1 для подключения квнешний сервер, даже если система настроена на использование eth0 для внешнего трафика.

(Вопрос, вероятно, тривиален, но я просто хотел узнать, возможно ли это вообще, прежде чем тратить на него время)

В настоящее время я использую Python с Twisted, но если мне нужно использовать BSD-сокеты, пусть будет так.

1 Ответ

0 голосов
/ 03 ноября 2011

От: http://linux.about.com/od/commands/l/blcmdl7_socket.htm

SO_DONTROUTE - Не отправлять через шлюз, отправлять только напрямую подключенным хостам. Этого же эффекта можно добиться, установив флаг MSG_DONTROUTE в операции сокета send(2). Ожидается целочисленный логический флаг.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...