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

Маршрутизация между разными псевдонимами сетевой карты без lo

У меня есть псевдоним для eth0 называется eth0:0.

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

Подробно: я хочу маршрутизировать пакеты из eth0:0 (используя LD_PRELOAD, Я могу изменить IP-адрес src) на eth0. Но этим занимается lo интерфейс, а я этого не хочу. Я хочу, чтобы пакеты из eth0:0 должен перейти на какой-то шлюз по умолчанию, который затем будет отправлять пакеты, а затем отправлять их на eth0.

Я могу отправлять пакеты с исходным IP-адресом eth0:0 псевдоним, но полная настройка не работает, так как я не могу выделить разные MAC адреса для eth0 и eth0:0 и поэтому, когда внешний шлюз должен отправить пакеты обратно, он не может понять, куда отправлять пакеты.

Как лучше всего этого добиться?

РЕДАКТИРОВАТЬ: Мне сказали, что вопрос не ясен.

eth0: IP address: 10.0.0.1
eth0:1: IP address: 10.0.0.2
Gateway: 10.0.0.10

Я хочу отправлять пакеты с 10.0.0.2 на 10.0.0.1 через внешний шлюз 10.0.0.10, чтобы я мог выполнить некоторую обработку пакетов, а затем отправить на 10.0.0.1.

В основном 10.0.0.0.2 <-> шлюз <-> 10.0.0.1

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

Я не могу выделить разные MAC-адреса для eth0 и eth0: 0, и поэтому, когда внешний шлюз должен отправить пакеты обратно, он не может понять, куда отправлять пакеты.

Я предполагаю, что ваш маршрутизатор использует это как мостовую петлю, и в этом случае просто используйте отражатель где-нибудь еще в сети.

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

Если вы используете настольную версию Linux, просто установите Virtual Box и установите в нее еще одну копию Linux. Настройте виртуальную машину на использование сетевого моста для работы в сети.

Затем используйте две разные подсети, как это

Хост.

address 10.0.0.0.1
netmask 255.255.255.0
gateway 10.0.0.254

ВМ

address 10.0.1.1
netmask 255.255.255.0
gateway 10.0.1.254

Настройте маршрутизатор для работы в обеих подсетях с использованием псевдонима ip.

Если вы удалите IP из локальной таблицы маршрутизации (это возможно, и он будет посылать из eth0), то на обратном пути (спорно это будет когда-либо сделать свой путь обратно) Linux будет считать это пакет, который будет направлен и не локально доставлен. Вы никогда не будете обрабатывать полученные пакеты, а попытаетесь их переслать.

Если вы хотите добавить на устройство проблемы с сетью. Попробуйте посмотреть на netem qdisc.

Например.

tc qdisc add dev lo parent root netem loss random 50

Сбросит 50% пакетов, предназначенных для lo.