Запуск службы docker в образе CentOS внутри OpenStack прерывает работу сети

#docker #networking #centos #openstack

#docker #сеть #centos #openstack

Вопрос:

У меня есть образ CentOS внутри OpenStack, который правильно подключается к сети, то есть я могу подключиться к нему по SSH.

Мне нужно запустить docker внутри этого образа, потому что он предназначен для запуска HyperLedger в ближайшем будущем. Поэтому мне пришлось установить последнюю версию репозитория и программного обеспечения docker версии 19.03.13.

Всякий раз, когда я запускаю systemctl start docker, я теряю сетевое подключение к изображению и могу получить доступ к нему только через эмулятор терминала OpenStack.

Благодаря этому я вижу, что docker создает два новых сетевых интерфейса (но оставляет тот, который настроен только для общих сетей), а также docker создает некоторые правила iptables.

Я попытался создать /etc/docker/daemon.json с содержимым:

{ «iptables»: false }

Но это не решает проблему (хотя и не позволяет docker создавать большинство правил iptables).

Я получил tcpdump интерфейса после запуска docker, и пока я пытаюсь подключиться по SSH с другого компьютера (отредактированные IP-адреса для конфиденциальности):

 12:13:12.298679 IP X.X.X.X.55628 > blockchain1-0.ssh: Flags [S], seq 1109271651, win 64240, options [mss 1460,sackOK,TS val 2363748592 ecr 0,nop,wscale 7], length 0
12:13:13.212493 IP blockchain1-0.34316 > dns.google.domain: 63674  PTR? 5.2.0.10.in-addr.arpa. (39)
12:13:13.215497 IP dns.google.domain > blockchain1-0.34316: 63674 NXDomain 0/0/0 (39)
12:13:13.216495 IP blockchain1-0.33318 > dns.google.domain: 50843  PTR? X.X.X.X.in-addr.arpa. (44)
12:13:13.219294 IP dns.google.domain > blockchain1-0.33318: 50843 NXDomain 0/0/0 (44)
12:13:13.300330 IP X.X.X.X.55628 > blockchain1-0.ssh: Flags [S], seq 1109271651, win 64240, options [mss 1460,sackOK,TS val 2363749594 ecr 0,nop,wscale 7], length 0
12:13:14.213681 IP blockchain1-0.33914 > dns.google.domain: 62995  PTR? 8.8.8.8.in-addr.arpa. (38)
12:13:14.216976 IP dns.google.domain > blockchain1-0.33914: 62995 1/0/0 PTR dns.google. (62)
12:13:15.316336 IP X.X.X.X.55628 > blockchain1-0.ssh: Flags [S], seq 1109271651, win 64240, options [mss 1460,sackOK,TS val 2363751610 ecr 0,nop,wscale 7], length 0
12:13:19.476352 IP X.X.X.X.55628 > blockchain1-0.ssh: Flags [S], seq 1109271651, win 64240, options [mss 1460,sackOK,TS val 2363755770 ecr 0,nop,wscale 7], length 0
12:13:27.668342 IP X.X.X.X.55628 > blockchain1-0.ssh: Flags [S], seq 1109271651, win 64240, options [mss 1460,sackOK,TS val 2363763962 ecr 0,nop,wscale 7], length 0
12:13:32.682139 ARP, Request who-has blockchain1-0 tell gateway, length 46
12:13:32.682154 ARP, Reply blockchain1-0 is-at fa:16:3e:35:73:ef (oui Unknown), length 28
  

SSH-соединение никогда не завершается, tcpdump перед запуском docker намного длиннее, и SSH завершается.

Кто-нибудь знает, что происходит, или как это исправить?

Комментарии:

1. Можете ли вы объяснить, что вы подразумеваете под «потерей сетевого подключения»? Т.е. Возможно ли подключиться к хосту в общедоступном Интернете из вашего экземпляра? И возможно ли выполнить пинг экземпляра? Кроме того, видите ли вы какой-либо соответствующий трафик в интерфейсе, который обеспечивает подключение по ssh?

2. Под «потерей сетевого подключения» я подразумеваю следующее: я не могу инициировать сеансы SSH, и все открытые сеансы SSH становятся зависшими. К экземпляру можно получить доступ только из нашей внутренней сети. Но он может инициировать доступ к любому хосту в Интернете. Я только что попробовал выполнить пинг 8.8.8.8 до и после запуска службы docker: до того, как это будет совершенно нормально, и после этого это тоже нормально. Я подсчитал пакеты, полученные и переданные по интерфейсу до и после ping -c 3 8.8.8.8, и оба rx и tx увеличиваются ровно на 3.

3. Итак, если я вас правильно понял, вы инициируете сеанс SSH из другого экземпляра в той же подсети? Можете ли вы запустить tcpdump в интерфейсе с IP-адресом, к которому вы подключаетесь по SSH?

4. Я добавил tcpdump о том, когда запускается docker и выполняется попытка сеанса SSH.

5. Спасибо, это подтверждает, что трафик действительно достигает экземпляра. Вы заблокировали IP-адреса, но имеет смысл, что docker добавил маршрут, который перенаправляет ваш трафик в контейнер. Какой диапазон IP-адресов вы настроили для своей подсети? serverfault.com/questions/916941 /…