Linux-Сеть: Как заставить маршрутизацию работать с двумя сетевыми интерфейсами в одной подсети? [закрыто]

У меня есть машина Ubuntu с включенным ip_forwarding. iptables тоже вперед. У меня 3 сетевые карты.

eth0 - internet

eth1 - client1

eth2 - client2

Я хочу, чтобы eth1 и eth2 находились в одной подсети, обменивались данными друг с другом и имели доступ к Интернету.

Мне удалось заставить его работать, только когда я использовал для них разные подсети.

Каков стандартный способ сделать это?

-2
задан 10 April 2015 в 12:49
4 ответа

Вы хотите, чтобы eth1 и eth2 находились в одной подсети, поэтому они должны быть на одном и том же Ethernet-канале: вы должны настроить ваш Linux-сервер как мост между eth1 и eth2.

Это создаст новый сетевой интерфейс (ниже назван br0 ): ядро ​​будет работать как коммутатор, соединяющий ваши eth1 и eth2 (на уровне 2) . Конфигурация IP будет выполняться на br0 вместо eth1 и eth2 (на основе MAC-адресов). Он не будет маршрутизироваться между клиентом1 eth1 и клиентом2 eth2 .

        eth1    eth2
[ IP  ]<---------->[IP  ]
[ Eth ]<->[Eth ]<->[Eth ]
 Client1  bridge   Client2

Маршрутизация осуществляется между клиентами ( br0 ) и Интернетом eth0 на основе IP-адресов:

        br0   eth0
[ IP  ]<->[IP ]<->[IP  ]
[ Eth ]<->[Eth]<->[Eth ]
Client1   router  to internet

Из командной строки:

brctl addbr br0
brctl addif br0 eth1 eth2
ip link up br0
ip addr add br0 $ip/$netmask

Или в / etc / network / interfaces :

iface br0 inet static
    bridge_ports eth1 eth2
    address ...
    netmaks ...
    broadcast ...
8
ответ дан 5 December 2019 в 21:02

Просто чтобы объяснить, зачем вам нужен мост ...

Мост создает связь между двумя сетями уровня 2 ( eth1 и ] eth2 в вашем случае) действовать как единая сеть уровня 2. Это коммутация.

Маршрутизатор создает связь между двумя сетями уровня 3 ( eth0 и br0 в вашем случае после создания моста). Это маршрутизация.

Если оба клиента находятся в одной подсети, маршрутизация не требуется. Поскольку вам нужна одна и та же подсеть, это один и тот же уровень 3, поэтому вам потребуется общая сеть уровня 2 под ним.

4
ответ дан 5 December 2019 в 21:02

Свяжите их для надежности и скорости и используйте псевдонимы для связанного интерфейса.

3
ответ дан 5 December 2019 в 21:02

Обычно это делается с использованием псевдонимов (по крайней мере, для IPv4)

У вас будет три интерфейса, каждый с разными IP-адресами.

eth0 eth0: 1 eth0: 2

Выполнение этого с отдельными устройствами ... в высшей степени болезненно, особенно когда вы сталкиваетесь с проблемами асимметричной маршрутизации / брандмауэра (добавьте какое-то внешнее устройство NAT - например, некоторые балансировщики нагрузки), а вы ' Будет весело (если вы мазохист). Я попытался (довольно усердно, хотя маршрутизация на основе политик была для меня в новинку) заставить работать аналогичную вещь, при которой пакеты будут возвращаться через тот же интерфейс, через который они пришли.

Надеюсь, это возможно, но не стоит головной боли. Однако люблю доказывать неправоту.

1
ответ дан 5 December 2019 в 21:02

Теги

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