@faangelius

Как передавать UDP пакеты через определенный интерфейс?

Приветствую!

На пк есть три интерфейса eth0, eth1, eth2. Каждый интерфейс подключен к оборудованию передачи данных.
Каждый интерфейс со своим статическим адресом, у eth0 к примеру 192.168.255.200/16, eth1 2.255.1.2/30, eth2 2.255.2.2/30. С последними двумя интерфейсами пробовала по разному, пока с роутингом у меня проблемы. Попытки жестко задать маршрут тоже не увенчались успехом.
Стоит задача проверки передачи пакетов UDP через оборудование. То есть пакет должен уходить в eth1, "пройти" через оборудование и попасть в eth2. Проблема в том, что система не отправляет пакеты в интерфейс и далее в оборудование, а сразу "получает" их на eth2.
ПО пишу на C++ под Astra Linux 1.5.
Каким образом принудить систему отправлять пакеты в нужный интейрфейс? Каким способом в общем возможно решить поставленную задачу?
  • Вопрос задан
  • 998 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
пакет должен уходить в eth1, "пройти" через оборудование и попасть в eth2. Проблема в том, что система не отправляет пакеты в интерфейс и далее в оборудование, а сразу "получает" их на eth2.

Всё верно, без фокусов эта схема работать не будет.
Возможные фокусы:
- посылать пакет через RAW сокет, чтобы маршрутизатор ядра не вмешивался;
- посылать пакет не на адрес eth2, а на другой адрес. Править адрес назначения с помощью iptables, в таблице mangle, в цепочке POSTROUTING.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Mystray
@Mystray
NOC
Это потому, что linux все, что предназначено ему самому -- никогда и не будет слать наружу.
Возможный выход - один из интерфейсов переместить в выделенный Network Namespace. Тогда из основной системы этот интерфейс пропадет и появится уже в этом namespace, вместе со своей, отдельной таблицей маршрутизации и правилами фаервола.
Соответственно и одно из приложений так же запускать внутри этого namespace.
Но следует учитывать, что и приложение будет или работать в основной системе, или работать в этом namespace, и никакого сетевого взаимодействия кроме как через "снаружи" у них не будет (если не сделать этого явно)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы