У меня есть машина Ubuntu с включенным ip_forwarding. iptables тоже вперед. У меня 3 сетевые карты.
eth0 - internet
eth1 - client1
eth2 - client2
Я хочу, чтобы eth1 и eth2 находились в одной подсети, обменивались данными друг с другом и имели доступ к Интернету.
Мне удалось заставить его работать, только когда я использовал для них разные подсети.
Каков стандартный способ сделать это?
Вы хотите, чтобы 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 ...
Просто чтобы объяснить, зачем вам нужен мост ...
Мост создает связь между двумя сетями уровня 2 ( eth1
и ] eth2
в вашем случае) действовать как единая сеть уровня 2. Это коммутация.
Маршрутизатор создает связь между двумя сетями уровня 3 ( eth0
и br0
в вашем случае после создания моста). Это маршрутизация.
Если оба клиента находятся в одной подсети, маршрутизация не требуется. Поскольку вам нужна одна и та же подсеть, это один и тот же уровень 3, поэтому вам потребуется общая сеть уровня 2 под ним.
Обычно это делается с использованием псевдонимов (по крайней мере, для IPv4)
У вас будет три интерфейса, каждый с разными IP-адресами.
eth0 eth0: 1 eth0: 2
Выполнение этого с отдельными устройствами ... в высшей степени болезненно, особенно когда вы сталкиваетесь с проблемами асимметричной маршрутизации / брандмауэра (добавьте какое-то внешнее устройство NAT - например, некоторые балансировщики нагрузки), а вы ' Будет весело (если вы мазохист). Я попытался (довольно усердно, хотя маршрутизация на основе политик была для меня в новинку) заставить работать аналогичную вещь, при которой пакеты будут возвращаться через тот же интерфейс, через который они пришли.
Надеюсь, это возможно, но не стоит головной боли. Однако люблю доказывать неправоту.