macvlan — контейнер не пингуется с других устройств в физической сети

Пытаюсь понять, как работает macvlan, и хотел бы иметь возможность назначить IP-номер док-контейнеру и сделать его доступным для проверки связи из всей моей сети.

Мой физический маршрутизатор имеет IP-адрес 192.168.1.1, маска подсети — 255.255.255.0.

На моем хосте докера я создал такую ​​​​сеть:

      sudo docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=enp0s3 -o macvlan_mode=bridge mynetwork

Затем я запустил контейнер на базе alpine и присвоил ему IP-номер:

      sudo docker container run -it --name alpine1 --network mynetwork --ip 192.168.1.223 alpine

В этом контейнере, когда я проверяю IP-адрес, я получаю:

      inet 192.168.1.223/24 brd 192.168.1.255 scope global eth0

Но я не могу пропинговать этот контейнер ни с одной другой физической машины в моей сети.

Я где-то читал, что родительский интерфейс на хосте должен находиться в неразборчивом режиме?

Итак, на хосте я сделал это:

      ip link set dev enp0s3 promisc on

Но я все еще не могу проверить связь с контейнером.

Любая помощь в попытке понять все это будет очень признательна.

Обновлять

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

Итак, проблемы, с которыми я столкнулся, были связаны с тем, что мой первоначальный тест проводился в контейнере внутри виртуальной машины VirtualBox. Хотя я до сих пор не определил, в чем проблема.

1 ответ

Поскольку это сценарий виртуальной машины внутри контейнера, вам необходимо изменить настройку сети в vbox с NAT->bridge и ниже, чтобы включить promisc, чтобы разрешить все.

Другие вопросы по тегам