Как настроить сходство сетевого интерфейса под Ubuntu Linux?

У меня есть многосетевой Linux-пакет с 6 сетевыми интерфейсами, который я использую для запуска некоторых тестов оборудования маршрутизатора. Я хотел бы иметь возможность установить "соответствие NIC" (из-за отсутствия лучшего термина) для произвольного процесса, так что даже если IP-адрес назначения может соответствовать локальному интерфейсу, весь сетевой трафик для этого процесса будет направляться через другой Интерфейс (и зациклен на внешнем устройстве). В идеале настройка сродства одного процесса не влияет на настройку другого.

В качестве примера использования, скажем, у меня eth0=192.168.0.1 и eth1=10.0.0.1. и внешний маршрутизатор, подключенный к eth0 и eth1 с IP-адресами 192.168.0.2 и 10.0.0.2 соответственно. Если я открою свою оболочку и пингую 10.0.0.1, никакой трафик не будет проходить по внешнему соединению, поскольку место назначения соответствует локальной машине, но если бы мне нужно было как-то установить привязку процесса оболочки к eth0, трафик ICMP протекал бы через eth0, во внешний маршрутизатор и снова в eth1. Я хочу гарантировать обход внешнего маршрутизатора, и, поскольку их будет больше одного, мне нужно иметь возможность привязываться к произвольным сетевым картам.

Это возможно? Учитывая мои поиски до сих пор, я не вижу ответов, но отсутствие упоминаний о том, что я пытаюсь сделать, заставляет меня подозревать, что я упускаю важное соображение, поскольку это не похоже на оригинальный вопрос (просто странный).

Кстати, это Ubuntu Linux 11.10. Будем весьма благодарны за любые ссылки на аналогичные работы или предложения по инструментам. Спасибо!

2 ответа

Решение

Это похоже на ситуацию, когда вам может потребоваться сделать один шаг назад и дать нам более общее представление о том, чего вы пытаетесь достичь, а не о том, как реализовать конкретное решение.

При этом, чтобы установить процесс, связанный с конкретным интерфейсом в Linux, вам нужно взломать системный вызов bind (man 2 bind). Вы можете сделать это, используя альтернативные библиотеки и предварительно загрузив их, см. Как использовать разные сетевые интерфейсы для разных процессов в Super User.

Вы можете добавить новую маршрутизацию по умолчанию в новую сеть, а затем удалить старую сетевую привязку, как показано ниже.

sudo ip route replace default via 192.168.100.1 dev wlp2s0 proto static metric 50
sudo ip route delete default via 192.168.100.1 dev wlp2s0  proto static  metric 600

Здесь Вторая строка - старая маршрутизация с метрикой 600, а первая строка - сродство 50, которое является метрикой.

Другие вопросы по тегам