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, чтобы разрешить все.