Как сделать маршрутизацию между мостами в linux?
Я хочу создать мост для моей виртуальной машины. И я хочу иметь доступ в интернет с моего виртуального моста. Что я сделал:
DEVICE=br1
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.1.1
NETMASK=255.255.255.0
В моей сети есть мост (по протоколу dhcp), связанный с eth0:
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.110.14 netmask 255.255.255.0 broadcast 192.168.110.255
br0:
DEVICE=br0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=dhcp
eth0:
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
NAME=eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE=br0
команда iptables:
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 192.168.110.14
но это не работает.
ping -I br1 8.8.8.8
PING 8.8.8.8 (8.8.8.8) from 192.168.1.1 br1: 56(84) bytes of data.
^C
--- 8.8.8.8 ping statistics ---
61 packets transmitted, 0 received, 100% packet loss, time 59999ms
Что я сделал не так? Пожалуйста помоги.
1 ответ
Мостовое соединение находится на уровне 2, а маршрутизация на уровне 3, а iptables работает на уровне 3, а не на уровне 2. На уровне 2 не существует концепции маршрутизации, где работают мосты. Мосты используют уровень 2, например, MAC, адреса и кадры доставляются непосредственно по адресу назначения уровня 2. Мостовое соединение происходит в одной локальной сети. Маршрутизация происходит между локальными сетями и использует 3-й уровень, например IP-адреса, для отправки пакетов из локальной сети в другую локальную сеть. В локальных сетях кадры инкапсулируют пакеты и используются для отправки кадров непосредственно с одного хоста на другой хост.
Хост в локальной сети замаскирует адрес получателя уровня 3, чтобы определить, находится ли он в своей локальной сети. Если это так, он создаст фрейм для хоста назначения. Если нет, он создаст фрейм для своего настроенного шлюза (маршрутизатора). На втором уровне шлюз - это просто еще один хост в локальной сети. Это шлюз, который будет выполнять маршрутизацию, а не мост. Независимо от того, доставляются ли кадры хосту назначения или шлюзу зависит от хоста источника, а не от моста.