#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 /…