Не удается подключиться к Discourse после смены сетевого адаптера

Недавно я заменил сетевой адаптер, и теперь Discourse не работает. Я пытался пересобрать Discourse, но он всё равно не отвечает на HTTPS-запросы. Я вижу, что процессы Ruby запущены и работают.

Кажется, проблема может быть связана с MAC-адресом. После пересборки Discourse я вижу эту строку:

> /usr/bin/docker run --shm-size=512m -d --restart=always -e LANG=en_US.UTF-8 -e RAILS_ENV=production -e UNICORN_WORKERS=5 -e UNICORN_SIDEKIQS=1 -e RUBY_GLOBAL_METHOD_CACHE_SIZE=131072 -e RUBY_GC_HEAP_GROWTH_MAX_SLOTS=40000 -e RUBY_GC_HEAP_INIT_SLOTS=400000 -e RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR=1.5 -e DISCOURSE_DB_SOCKET=/var/run/postgresql -e DISCOURSE_DB_HOST= -e DISCOURSE_DB_PORT= -e LETSENCRYPT_DIR=/shared/letsencrypt -e DISCOURSE_HOSTNAME=XXX -e DISCOURSE_DEVELOPER_EMAILS=XXX -e DISCOURSE_SMTP_ADDRESS=XXX -e DISCOURSE_SMTP_PORT=587 -e DISCOURSE_SMTP_USER_NAME=XXX -e DISCOURSE_SMTP_PASSWORD=XXX -e LETSENCRYPT_ACCOUNT_EMAIL=XXX -e DISCOURSE_MAXMIND_LICENSE_KEY=XXX -h XXX-app -e DOCKER_HOST_IP=172.17.0.1 --name app -t -p 80:80 -p 443:443 -v /var/discourse/shared/standalone:/shared -v /var/discourse/shared/standalone/log/var-log:/var/log -**-mac-address 02:3b:06:XX:XX:XX** local_discourse/app /sbin/boot

Однако в системе нет адаптера с MAC-адресом, начинающимся на 02:3b. Я вижу три адаптера: vethec9f10b с адресом, начинающимся на 6e:a2, ens160 с адресом, начинающимся на 00:0c, и docker0 с адресом, начинающимся на 02:42:eb:XX:XX:XX.

Предполагаю, что это старый MAC-адрес, оставшийся до замены сетевого адаптера. Если так, как мне указать Discourse использовать правильный MAC-адрес? Похоже, что это MAC-адрес сетевого адаптера Docker, но он, видимо, изменился.

При использовании Docker у вас появляется дополнительный виртуальный адаптер, представляющий адрес вашего сервера на виртуальном мосте docker0:

○ → ip addr show dev docker0
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:3a:ad:0b:94 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever

У всех запущенных контейнеров Docker будет свой MAC-адрес на этом виртуальном мосту:

○ → docker run --rm --name example -it debian 
root@ba1b0e1446c8:/# 

(в другом окне:)
○ → docker inspect example | jq '.[0].NetworkSettings.IPAddress'
"172.17.0.2"

○ → docker inspect example | jq '.[0].NetworkSettings.MacAddress'
"02:42:ac:11:00:02"

○ → ping -c 1 172.17.0.2 > /dev/null; arp 172.17.0.2
Address                  HWtype  HWaddress           Flags Mask            Iface
172.17.0.2               ether   02:42:ac:11:00:02   C                     docker0

Это полностью независимо от ваших системных интерфейсов. Однако этот MAC-адрес должен отображаться на мосту docker0:

○ → brctl showmacs docker0
port no	mac addr		is local?	ageing timer
  1	02:42:ac:11:00:02	no		 187.24
…

Что именно вы изменили, когда «поменяли сетевой адаптер»?

Получает ли он по-прежнему IP-адрес и всё, что должно быть? То есть работает ли обычная сеть?

Запустите ip addr и убедитесь, что адрес остался тем же, к которому вы пытаетесь подключиться.

Может быть, стоит вставить вывод команды сюда.

Подключается ли клиент к сокету, но не получает ответа?

Огромное спасибо! Это был именно тот совет, который мне был нужен. Когда я изменил сетевой адаптер, статический IP-адрес машины сменился на динамический, из-за чего она перестала отвечать клиентам. Я сбросил IP-адрес, и всё заработало. Похоже, проблема была не в MAC-адресе, а именно в IP-адресе.