Linux соединяет мосты без пересылки

Я пытаюсь настроить мост Linux с двумя интерфейсами Ethernet и не могу заставить его работать правильно. Я использую Gentoo Linux и подумал, что это будет довольно легко, но у меня возникают проблемы с прохождением пакетов через мост. Все, что виртуализируется в Hyper-V, имеет значение для чего угодно (но я сомневаюсь в этом).

Здесь идет моя конфигурация.

 ------              ------------------           --------         -----------
| NUX3 |------------|eth1  BRIDGE  eth0|---------| ROUTER |-------/ INTERNET /
 ------              ------------------           --------        -----------
192.168.1.195/24    192.168.1.197/24 (br0)     192.168.1.101/24
00:15:5d:00:01:12   00:15:5d:00:01:08 (eth0)   00:15:5d:00:01:03
                    00:15:5d:00:01:13 (eth1)       

# cat /etc/conf.d/net

bridge_br0=( "eth0 eth1" )
config_eth0=( "null" )
config_eth1=( "null" )
config_br0=( "192.168.1.197 netmask 255.255.255.0 brd 192.168.1.255" )
routes_br0=( "default via 192.168.1.101" )

# brctl show

bridge name      bridge id              STP enabled      interfaces
br0              8000.00155d000108      no               eth0
                                                         eth1

# brctl showstp br0

<...>
eth0 (1)               state               forwarding
eth1 (2)               state               forwarding
<...>

# cat /etc/sysctl.conf

net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-arptables = 0
net.bridge.bridge-nf-call-iptables = 0

# ifconfig

<...>
br0    UP BROADCAST RUNNING MULTICAST
       inet addr:192.168.1.197  Bcast:192.168.1.255  Mask:255.255.255.0
<...>
eth0    UP BROADCAST RUNNING PROMISC MULTICAST
<...>
eth1    UP BROADCAST RUNNING PROMISC MULTICAST
<...>

# brctl showmacs br0

port no mac addr                    is local?        ageing timer
  1     00:15:5d:00:01:03           no                   1.51
  1     00:15:5d:00:01:08           yes                  0.00
  2     00:15:5d:00:01:12           no                  36.22
  2     00:15:5d:00:01:13           yes                  0.00

МОСТ может пропинговать МАРШРУТИЗАТОР, но не NUX3, NUX3 не может пропинговать ни МОСТ, ни МАРШРУТИЗАТОР. Все кажется хорошим для меня, но я явно что-то упускаю. Я был бы очень рад, если бы кто-то указал мне на это!

Благодарю.

3 ответа

Решение

Возможно, что базовые сетевые устройства на хосте не имеют случайного режима. Например, в VMWare, если базовый виртуальный сетевой адаптер не +promisc, гостевой мост с треском провалится - даже если он думает, что может войти в случайный режим, он не сможет.

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

Если вы отключите мост, вы сможете пропинговать NUX3 и маршрутизатор, правильно?

В диспетчере hyper-v перейдите к настройкам виртуальной машины, для которой вы хотите использовать мост, и на каждом сетевом интерфейсе, который вы хотите использовать в качестве части моста, установите флажок "разрешить подмена MAC-адреса". Я использую Windows Server 2008r2 SP1. Вот что я сделал, чтобы заставить его работать. Я также использую Ubuntu 12.04, в котором предустановлены все драйверы Hyper-V, но я не думаю, что это имеет значение.

Мост работает отлично.

  1. Как говорилось ранее, необходимо включить спуфинг MAC-адреса
  2. В последних версиях iptables правила также актуальны для bridge. Поэтому он должен быть настроен или отключен. Для отключения правил iptables для мостов выполните: sysctl net.bridge.bridge-nf-call-iptables=0
Другие вопросы по тегам