LINUX.ORG.RU
решено ФорумAdmin

Пинг на соседний сервер идёт, а в пределах одного сервера – нет

 , , ,


0

1

Попытался сейчас схематически изобразить свою сеть. Надеюсь, понятно, что как подключено.

Суть в том, что с containerA1 я могу пингануть pfSense (10.0.0.1), оба сервера (10.0.0.15 и 10.0.0.16) и containerB1 (10.0.1.5), но не могу пингануть containerA3 (10.0.0.200). Так и должно быть? Где я что-то упустил при настройке?

При этом traceroute 10.0.1.5 такой:

traceroute to 10.0.1.5 (10.0.1.5), 30 hops max, 46 byte packets
 1  172.30.0.1 (172.30.0.1)  0.021 ms  0.020 ms  0.016 ms
 2  10.0.1.5 (10.0.1.5)  0.378 ms  0.300 ms  0.209 ms

А traceroute 10.0.0.200 такой:

traceroute to 10.0.0.200 (10.0.0.200), 30 hops max, 46 byte packets
 1  172.30.0.1 (172.30.0.1)  0.020 ms  0.022 ms  0.022 ms
 2  10.0.0.15 (10.0.0.15)  3079.330 ms !H  3070.161 ms !H  3072.149 ms !H
★★★★★

Контейнеры по умолчанию изолированы друг от друга файрволом (если не принадлежат одной сети).

У тебя уже есть контейнеры, которые подключены более чем к одной сети, так что о правильном решении ты похоже догадываешься :-)

Скорее всего проще всего будет добавить отдельное разрешающее правило на всю сеть 10.0.0.0/24 (без указания выходного интерфейса!) в файрвол в цепочку DOCKER-USER на сервере 'docker server A'

Ну или докинуть macvlan-сеть в containerA1

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 6)
Ответ на: комментарий от Pinkbyte

Ну или докинуть macvlan-сеть в containerA1

Это очевидное решение, о нём я догадываюсь.

добавить отдельное разрешающее правило на всю сеть 10.0.0.0/24 (без указания выходного интерфейса!) в файрвол в цепочку DOCKER-USER

А вот об этом я сейчас буду гуглить и читать.

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от CYB3R

Ну или докинуть macvlan-сеть в containerA1

А у macvlan уже починили баг когда хост не мог общаться с гостями?

На сколько я помню там была проблема коммуникации именно с хоста.

vel ★★★★★
()
Последнее исправление: vel (всего исправлений: 1)
Ответ на: комментарий от Pinkbyte

Что-то я не осилил iptables. Добавил правило -A DOCKER-USER -s 10.0.0.0/24 -j ACCEPT, но вроде бы ничего не изменилось. Попробовал ещё правило -A DOCKER-USER -d 10.0.0.0/24 -j ACCEPT, но тоже ничего. И даже количество пакетов растёт, но пинги всё равно не идут. Сейчас цепочка выглядит так:

Chain DOCKER-USER (1 references)
num   pkts bytes target     prot opt in     out     source               destination
1      812  224K ACCEPT     all  --  any    any     10.0.0.0/24          anywhere
2      445  311K ACCEPT     all  --  any    any     anywhere             10.0.0.0/24
3    15513 1795K RETURN     all  --  any    any     anywhere             anywhere
CYB3R ★★★★★
() автор топика
Ответ на: комментарий от CYB3R

vel правильно подсказывает(я про это запамятовал, у меня настолько сложных топологий с контейнерами нет), у тебя получается следующая штука:

containerA шлет пинг на 10.0.0.200, пакет проходит через NAT и транслируется в адрес 10.0.0.15. С которого НЕ МОЖЕТ быть доступа в 10.0.0.200(без дополнительных костылей), потому что так работает macvlan

Посмотри это и это

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от Pinkbyte

Ага, похоже именно то, что мне нужно, спасибо!

CYB3R ★★★★★
() автор топика
Ответ на: комментарий от Pinkbyte

Да, добавил ещё один macvlan, теперь всё работает. Выглядит как костыль, но зато вся сеть доступна.

CYB3R ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.