Não consigo acessar o Discourse após alterar o adaptador de rede

Recentemente, alterei o adaptador de rede e agora o Discourse não está funcionando. Tentei reconstruir o Discourse, mas ele ainda não responde a solicitações HTTPS. Posso ver que os processos Ruby estão ativos e em execução.

Acho que isso pode ter algo a ver com o endereço MAC. Após reconstruir o Discourse, vejo esta linha:

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

No entanto, não há nenhum adaptador com o endereço MAC começando com 02:3b. Vejo três adaptadores no sistema: vethec9f10b começando com 6e:a2, ens160 começando com 00:0c e docker0 começando com 02:42:eb:XX:XX:XX.

Estou supondo que este seja um endereço MAC antigo, anterior à troca do adaptador de rede. Se for esse o caso, como posso informar ao Discourse para usar o endereço MAC correto? Isso parece ser o endereço MAC do adaptador de rede do Docker, mas parece ter mudado.

Ao usar o Docker, você tem um adaptador virtual adicional que representa o endereço do seu servidor na ponte virtual 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

Qualquer contêiner Docker em execução terá um endereço MAC nesta ponte virtual:

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

(em outra janela:)
○ → 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
Endereço                 TipoHW  EndereçoHW          Flags Máscara         Interface
172.17.0.2               ether   02:42:ac:11:00:02   C                     docker0

Isso é completamente separado das suas interfaces do sistema. Esse endereço MAC deve aparecer na ponte docker0, no entanto:

○ → brctl showmacs docker0
nº porta	endereço mac		é local?	tempo de envelhecimento
  1	02:42:ac:11:00:02	não		 187.24
…

O que exatamente você mudou ao “alterar o adaptador de rede”?

Ele ainda obtém um IP e tudo o que deveria? Ou seja, a rede normal está funcional?

Execute ip addr e verifique se ele ainda possui o mesmo endereço que você está tentando acessar.

Talvez seja útil colar a saída aqui.

O cliente se conecta ao socket, mas não recebe nenhuma resposta?

Muito obrigado! Essa foi a indicação que eu precisava. Quando mudei o adaptador de rede, o endereço IP estático da máquina mudou para um IP dinâmico e, por isso, não estava respondendo aos clientes. Restabeleci o endereço IP e tudo voltou a funcionar. Aparentemente, não tem relação com o endereço MAC, mas sim com o endereço IP.