KVM Guest и Docker не могут подключиться друг к другу

У меня есть ящик с одним сетевым интерфейсом eno1 и двумя IP (x.x.x.100 и x.x.x.101). Моему центру обработки данных (Hetzner) требуются разные MAC-адреса для каждого IP.

/ etc / network / interfaces:

auto  br0
iface br0 inet static
  address x.x.x.100
  netmask 255.255.255.255
  gateway x.x.x.1
  bridge_ports eno1
  bridge_stp off
  bridge_fd 1
  bridge_hello 2
  bridge_maxage 12

Внутри гостя у меня есть интерфейс типа «мост» со вторым Mac-адресом IP.

2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether x:x:x:x:x:x brd ff:ff:ff:ff:ff:ff
inet x.x.x.101/27 brd x.x.x.x scope global dynamic ens3
   valid_lft 40300sec preferred_lft 40300sec
inet6 ...

Docker работает на это собственный мост "docker0".

Поскольку докер возился с iptables на моем хосте, я запустил

iptables -A FORWARD -p all -i br0 -j ACCEPT

Теперь мой гость,контейнеры хоста и докеры (на хосте) могут получить доступ в Интернет. С хоста я могу ping и tcp оба IP-адреса. Из гостевого KVM-гостя я могу проверить связь с хостом.

Я не могу проверить связь с гостевым KVM-запросом изнутри любого из контейнеров докеров, и я не получаю никакого ответа от докеризованного веб-сервера.

Как я могу соединить два моста br0 и docker0?

[EDIT] Вывод iptables -S:

-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-N DOCKER
-N DOCKER-ISOLATION-STAGE-1
-N DOCKER-ISOLATION-STAGE-2
-N DOCKER-USER
-A INPUT -i docker0 -j ACCEPT
-A FORWARD -i virbr1 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -j DOCKER-USER
-A FORWARD -j DOCKER-ISOLATION-STAGE-1
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A FORWARD -o br-5acb826875b5 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o br-5acb826875b5 -j DOCKER
-A FORWARD -i br-5acb826875b5 ! -o br-5acb826875b5 -j ACCEPT
-A FORWARD -i br-5acb826875b5 -o br-5acb826875b5 -j ACCEPT
-A FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i br0 -j ACCEPT
-A DOCKER -d 172.17.0.2/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 443 -j ACCEPT
-A DOCKER -d 172.17.0.2/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 80 -j ACCEPT
-A DOCKER -d 172.17.0.19/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 9980 -j ACCEPT
-A DOCKER -d 172.17.0.25/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 8000 -j ACCEPT
-A DOCKER -d 172.17.0.28/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 8000 -j ACCEPT
-A DOCKER -d 172.17.0.30/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 8000 -j ACCEPT
-A DOCKER -d 172.17.0.33/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 8000 -j ACCEPT
-A DOCKER -d 172.17.0.36/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 8000 -j ACCEPT
-A DOCKER -d 172.17.0.39/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 8000 -j ACCEPT
-A DOCKER -d 172.17.0.44/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 22 -j ACCEPT
-A DOCKER -d 172.17.0.44/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 80 -j ACCEPT
-A DOCKER -d 172.18.0.8/32 ! -i br-5acb826875b5 -o br-5acb826875b5 -p tcp -m tcp --dport 9000 -j ACCEPT
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -i br-5acb826875b5 ! -o br-5acb826875b5 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -j RETURN
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -o br-5acb826875b5 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -j RETURN
-A DOCKER-USER -j RETURN
0
задан 23 June 2019 в 19:21
1 ответ

Перед этими двумя правилами:

-A FORWARD -i virbr1 -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -i virbr0 -j REJECT --reject-with icmp-port-unreachable

Вам нужно разрешить трафик с docker0 на virbr0

-A FORWARD -i docker0 -o virbr0 -j ACCEPT
-A FORWARD -i virbr0 -o docker0 -j ACCEPT
0
ответ дан 23 November 2019 в 23:18

Теги

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