две сетевые карты в одной подсети - необходимо настроить маршрутизацию

0

У меня сложный случай:

+---+                      +----+
|D1 +->eth0---------<-eth0-+D2  |
|   |                      |    |
|   +->eth1---------<-eth1-+    |
+---+                      +----+

На D2 eth0и eth1есть IP-адреса из той же подсети: eth0 10.1.1.1/24, eth1 10.1.1.2/24. Интерфейсам на D1 не назначены адреса, и он действует как коммутатор.

Теперь я хочу, чтобы D2 мог отправлять трафик 10.1.1.2через eth0, поэтому путь к пакету должен быть: D2 (eth0) - D1 (eth0) - D1 (eth1) - D2 (eth1).

В тот момент, когда я пингуюсь 10.1.1.2от D2, он отправляет пакеты локально, т.е. D1 не получает никаких. Что я должен изменить на D2, чтобы добиться желаемого поведения?

Благодарю.

отметка
источник
Итак, вы хотите, чтобы он в основном проходил между двумя сетевыми картами? Тогда вам нужно настроить склеивание по кругу.
Братчли
@Bratchley Я не знаком со связыванием, но он делает (в данном случае) два физических интерфейса одним логическим интерфейсом, не так ли? Я думаю, вы должны объяснить это более подробно.
Хауке Лагинг
Я думаю, что, возможно, неправильно понял вопрос сейчас, когда я перечитал его.
Братчли
@ Братчли, нет, мне не нужно склеивать. По сути, я хочу «обмануть» стек IP на D2 и заставить его отправлять трафик с назначением интерфейса eth1 (на D2) через eth0.
Mark
1
Не уверен, поможет ли это, но это читается аналогично: unix.stackexchange.com/a/275888/130303
Якоб Ленферс

Ответы:

1

То, что вы хотите, невозможно с Linux. По крайней мере, не на уровне маршрутизации. Если целевой адрес принадлежит локальному интерфейсу, то пакет всегда проходит через петлевой интерфейс, откуда он не может (посредством RfC) направляться наружу.

Я подумал, что можно было бы использовать iptablesи DNATизменить цель на неиспользуемый адрес в подсети и использовать ip neighдля статического присвоения MAC-адреса одному из других сетевых адаптеров, но даже DNATправило не соответствует для пакетов с локальными адресами.

Это может быть возможно с виртуальной машиной или с сетевыми пространствами имен, так что ядро ​​не видит 10.1.1.1дальше eth0. Но вам понадобятся прокси ARP и DNAT для перемещения входящих пакетов с физического на виртуальный интерфейс.

Если оно того стоит?

Хауке Лагинг
источник
спасибо за ответ Похоже, что это не стоит потраченных усилий :) Я бы лучше нашел другую машину, так как все, что мне нужно, это проверить пропускную способность пересылки пакетов D1, чтобы я мог запускать netserver и netperf на физически разных хостах.
Mark
0

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

В прошлый раз я пытался поиграть с ними, хотя я не мог заставить вещь работать должным образом.

plugwash
источник