لا يمكن الوصول إلى 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 الصحيح؟ يبدو أن هذا عنوان محول شبكة 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 وتأكد من أن العنوان لا يزال هو نفسه الذي تحاول الوصول إليه.

ربما يمكنك لصق المخرجات هنا.

هل يتصل العميل بالـ socket لكنه لا يتلقى أي استجابة؟

[اقتباس=“supermathie، المشاركة: 5، الموضوع: 141216”]
ip addr
[/اقتباس]

شكرا جزيلا! كانت هذه هي النقطة التي احتجت إليها. عندما قمت بتغيير محول الشبكة، تغير عنوان IP الثابت للجهاز إلى عنوان IP ديناميكي، وبالتالي لم يكن يستجيب للعملاء. قمت بإعادة تعيين عنوان IP وبدأ في العمل. على ما يبدو لا يتعلق بعنوان MAC بل بعنوان IP بدلاً من ذلك.