У меня есть псевдоним для 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
.