Назад | Перейти на главную страницу

Как установить привязку сетевого интерфейса в 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. Я хочу гарантировать прохождение внешнего маршрутизатора, и поскольку их будет несколько, мне нужно иметь возможность связываться с произвольными сетевыми адаптерами.

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

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

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

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

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

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, что является метрикой.