172 похожих чатов

Всем привет! Кто в теме? Создал сеть macvlan: docker network create -d

macvlan \
--subnet=192.168.174.0/22 \
--gateway=192.168.172.253 \
--ip-range 192.168.174.180/32 \
-o parent=ens192 \
test-net

Далее настроил docker-compose.yml:
version: '3.9'
services:

alpine: image: alpine:latest
hostname: alpine container_name: alpine
command: ['ping', '192.168.172.253', '-c4'] networks:
test-net: ipv4_address: 192.168.174.180
restart: unless-stopped

networks: test-net:
name: test-net
driver: macvlan
driver_opts:
parent: ens192
ipam:
config:
- subnet: "192.168.174.0/22"
ip_range: "192.168.174.180/32"
gateway: "192.168.172.253"

Запускаю docker-compose up и вижу, что пинг не проходит из контейнера до шлюза в локалке:
Recreating alpine ... done
Attaching to alpine
alpine | PING 192.168.172.253 (192.168.172.253): 56 data bytesalpine |
alpine | --- 192.168.172.253 ping statistics ---
alpine | 4 packets transmitted, 0 packets received, <span style="font-family: markup-bold;">100% packet loss</span>

С хоста где стоит docker шлюз 192.168.172.253 пингуется:
192.168.172.253 ping statistics ---4 packets transmitted, 4 received, 0% packet loss

Подскажите, что может мешать пингу?

16 ответов

45 просмотров

А нужно это все, чтобы ...?

Vladimir- Автор вопроса
Максим Мартынов
А нужно это все, чтобы ...?

чтоб контейнер был в одной подсети локальной. контейнер кстати получает IP 192.168.174.180

Насколько помню (года полтора назад решал такую задачку), еще на самом хосте нужно создать интерфейс macvlan и настроить маршрутизацию через него. А так все, как обычно, отдебажить надо. Как минимум, посмотреть на хосте ip a и ip route до и после создания сети/контейнеров в докере.

Вячеслав Малютин
Насколько помню (года полтора назад решал такую за...

Причем если создать на хосте macvlan с указанием гейтвея , то работать не будет, надо именно без гейтвея. И доступ будет только с хоста до контейнера и с контейнера до хоста и гейтвея. А для доступа с других машин в сети к контейнеру надо еще нат между интерфейсами - пакеты проходят в контейнер, а ответ нет. Вообще, я тоже до конца не доразобрался. Если у кого-то есть хорошая дока по теме, поделитесь.

Vanya Stogramm
Причем если создать на хосте macvlan с указанием г...

Да. Интерфейс macvlan без гейта нужно создавать, потому что уже есть основной интерфейс с гейтом. Потом роутингом через интерфейс macvlan хоста обеспечивается связанность между локалкой и контейнерами. Дока гуглится быстро - https://www.linuxtechi.com/create-use-macvlan-network-in-docker/

Вячеслав Малютин
Да. Интерфейс macvlan без гейта нужно создавать, п...

Спс за доку. Но мне кажется, что надо не роутинг, а достаточно нат-a. Я ставил pi-hole и юдп днс запросы в нее приходили в лог админки, даже снифер не понадобился, а ответы нет - явный признак нехватки ната.

Vanya Stogramm
Спс за доку. Но мне кажется, что надо не роутинг, ...

Как сделать NAT, если сеть хоста и сеть контейнеров одинаковые?

Вячеслав Малютин
Как сделать NAT, если сеть хоста и сеть контейнеро...

Ну может оно между родительским и созданным на хосте macvlan бегает и где-то там трансляция надо? Я не знаю) Надо будет разобраться))

Vanya Stogramm
Ну может оно между родительским и созданным на хос...

Насколько я помню, IP-адреса на физическом и macvaln интерфейсах хоста были разные. Этого было достаточно для решения моей задачи.

Vladimir- Автор вопроса
Вячеслав Малютин
Да. Интерфейс macvlan без гейта нужно создавать, п...

Эта инструкция, а где здесь gateway нужно пропустить?

Vladimir
screenshot Эта инструкция, а где здесь gateway нужно пропусти...

Емнип если руками создаешь  c помощью ip, то создается без гейтвея. Но такой вариант живет до перезагрузки. А когда будешь создавать с помощью nmcli , то с гейтвеем и надо явно задать для него пустое значение.

Vladimir- Автор вопроса
Vanya Stogramm
Емнип если руками создаешь  c помощью ip, то созда...

А можно подробнее. Ткни пальцем в этой инструкции где не нужно вручную вводить gateway?

Vladimir
А можно подробнее. Ткни пальцем в этой инструкции ...

Ну когда на хосте создаешь macvlan который надо для доступности контейнера с хоста или из локалки. В примере с ip оно создаст интерфейс без дефолтного гейтвея для него. А если будешь с nmcli создавать, то оно создаст интерфейс и соединение для него с гейтвеем... По идее если просто повторяешь мануал, то можешь не паритсья, это просто на будущее замечание, может пригодится ))

Vladimir
А можно подробнее. Ткни пальцем в этой инструкции ...

Я пока не читал. Вот мои какие-то записи. 1) способ, как в инструкциях sudo ip link add mac0 link enp3s0 type macvlan mode bridge sudo ip addr add 192.168.1.78/24 dev mac0 sudo ifconfig mac0 up 2) способ, если захочешь чтобы автоматом поднимался ифейс после ребута name=macvlan0 parent=enp3s0 ip="192.168.1.75/24" nmcli connection add type macvlan con-name $name ifname $name mode bridge dev $parent ip4 $ip ipv4.gateway "" nmcli connection modify macvlan0 connection.autoconnect yes nmcli connection up $name ну как-то так у меня было, я сам один раз делал )

Vladimir- Автор вопроса
Vanya Stogramm
Ну когда на хосте создаешь macvlan который надо дл...

Я тебя понял спасибо. Сегодня проверю.

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

Обсуждают сегодня

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта