Я пытаюсь сделать так, чтобы сетевой мост работал на сжатии Debian (я экспериментирую, чтобы создать виртуальную машину QEMU / KVM, которая будет видна для внешней сети, как если бы это была отдельная машина). Проблема в том, что когда я печатаю brctl addif br0 eth0
затем я теряю подключение к сети, пока не наберу brctl delif br0 eth0
.
В частности, вот как выглядит моя машина, прежде чем я что-нибудь сделаю (по сути, eth0
слушает 147.102.160.153):
root@laura:/home/anthony# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 8c:73:6e:db:1c:1b brd ff:ff:ff:ff:ff:ff
inet 147.102.160.153/24 brd 147.102.160.255 scope global eth0
inet6 2001:648:2000:a0:8e73:6eff:fedb:1c1b/64 scope global dynamic
valid_lft 2591848sec preferred_lft 604648sec
inet6 fe80::8e73:6eff:fedb:1c1b/64 scope link
valid_lft forever preferred_lft forever
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc mq state DOWN qlen 1000
link/ether 4c:ed:de:8e:44:d7 brd ff:ff:ff:ff:ff:ff
4: vboxnet0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether 0a:00:27:00:00:00 brd ff:ff:ff:ff:ff:ff
5: pan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN
link/ether ee:7c:88:59:d0:e8 brd ff:ff:ff:ff:ff:ff
Теперь позвольте мне добавить мост:
root@laura:/home/anthony# brctl addbr br0
root@laura:/home/anthony# ip tuntap add dev tap0 mode tap
root@laura:/home/anthony# ip link set tap0 up
root@laura:/home/anthony# brctl addif br0 tap0
Пока здесь все продолжает нормально работать. Наконец, я пытаюсь добавить eth0
к мосту:
root@laura:/home/anthony# brctl addif br0 eth0
На данный момент у меня больше нет сетевого подключения. Если я попытаюсь ping
что-то, он сообщает "Destination Host Unreachable". Выход ip addr show
кажется нормальным:
root@laura:/home/anthony# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 8c:73:6e:db:1c:1b brd ff:ff:ff:ff:ff:ff
inet 147.102.160.153/24 brd 147.102.160.255 scope global eth0
inet6 2001:648:2000:a0:8e73:6eff:fedb:1c1b/64 scope global dynamic
valid_lft 2591908sec preferred_lft 604708sec
inet6 fe80::8e73:6eff:fedb:1c1b/64 scope link
valid_lft forever preferred_lft forever
[snip wlan0, vboxnet0 and pan0, which are down and irrelevant]
8: br0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN
link/ether 16:30:f2:67:ab:75 brd ff:ff:ff:ff:ff:ff
9: tap0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 500
link/ether 16:30:f2:67:ab:75 brd ff:ff:ff:ff:ff:ff
inet6 fe80::1430:f2ff:fe67:ab75/64 scope link
valid_lft forever preferred_lft forever
Также:
root@laura:/home/anthony# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
147.102.160.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0
0.0.0.0 147.102.160.200 0.0.0.0 UG 0 0 0 eth0
Я не могу понять, что делаю не так. Я хочу, чтобы машина продолжала слушать 147.102.160.153 на eth0
, и в дополнение к этому я хочу иметь tap0
интерфейс, подключенный к eth0
, который будет доступен для гостевой машины, чтобы последняя прослушивала другой IP-адрес (скажем, 147.102.160.205). (Если есть другой способ добиться того, чего я хочу, меня тоже интересует.)
В Linux можно, но не следует назначать IP-адреса интерфейсам перед добавлением их в мост, а скорее назначают их интерфейсу моста.
Кстати, route
исходит из пакета net-tools, который устарел. Использовать ip route
(или просто сокращение ip r
) вместо этого.