Странно не удается подключиться к домену изнутри сервера
Я не могу подключиться к github.com
Если и только если я попытаюсь сделать это из моего сервера локальной сети (давайте назовем его FQDN server.com
). Если я ssh server.com
а затем попытаться, скажем, curl github.com
, возникает ошибка типа "нет маршрута к хосту":
curl: (7) Failed to connect to github.com port 80: No route to host
Рассматриваемый сервер имеет активные службы DNS (bind9), DHCP, HTTP/s и SSH и, в частности, является преобразователем DNS для всех компьютеров в локальной сети. Пожалуйста, смотрите в нижней части поста некоторую, надеюсь, полезную информацию.
Однако я могу нормально подключаться к GitHub на любой другой моей локальной машине.
Как мне диагностировать и исправить это?
$ systemd-resolve github.com
github.com: 192.30.253.113
192.30.253.112
-- Information acquired via protocol DNS in 48.2ms.
-- Data is authenticated: no
$ host -v github.com
Trying "github.com"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47061
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 13, ADDITIONAL: 2
;; QUESTION SECTION:
;github.com. IN A
;; ANSWER SECTION:
github.com. 8 IN A 192.30.253.113
github.com. 8 IN A 192.30.253.112
;; AUTHORITY SECTION:
. 513652 IN NS a.root-servers.net.
. 513652 IN NS d.root-servers.net.
. 513652 IN NS k.root-servers.net.
. 513652 IN NS j.root-servers.net.
. 513652 IN NS c.root-servers.net.
. 513652 IN NS f.root-servers.net.
. 513652 IN NS h.root-servers.net.
. 513652 IN NS g.root-servers.net.
. 513652 IN NS b.root-servers.net.
. 513652 IN NS i.root-servers.net.
. 513652 IN NS e.root-servers.net.
. 513652 IN NS l.root-servers.net.
. 513652 IN NS m.root-servers.net.
;; ADDITIONAL SECTION:
E.ROOT-SERVERS.NET. 133062 IN AAAA 2001:500:a8::e
G.ROOT-SERVERS.NET. 483477 IN AAAA 2001:500:12::d0d
Received 347 bytes from 127.0.0.1#53 in 0 ms
Trying "github.com"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37084
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;github.com. IN AAAA
;; AUTHORITY SECTION:
github.com. 660 IN SOA ns-1707.awsdns-21.co.uk. awsdns-hostmaster.amazon.com. 1 7200 900 1209600 86400
Received 112 bytes from 127.0.0.1#53 in 0 ms
Trying "github.com"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39053
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 13, ADDITIONAL: 2
;; QUESTION SECTION:
;github.com. IN MX
;; ANSWER SECTION:
github.com. 844 IN MX 1 aspmx.l.google.com.
github.com. 844 IN MX 10 alt3.aspmx.l.google.com.
github.com. 844 IN MX 5 alt2.aspmx.l.google.com.
github.com. 844 IN MX 5 alt1.aspmx.l.google.com.
github.com. 844 IN MX 10 alt4.aspmx.l.google.com.
;; AUTHORITY SECTION:
. 513652 IN NS b.root-servers.net.
. 513652 IN NS j.root-servers.net.
. 513652 IN NS l.root-servers.net.
. 513652 IN NS e.root-servers.net.
. 513652 IN NS i.root-servers.net.
. 513652 IN NS m.root-servers.net.
. 513652 IN NS g.root-servers.net.
. 513652 IN NS k.root-servers.net.
. 513652 IN NS a.root-servers.net.
. 513652 IN NS f.root-servers.net.
. 513652 IN NS d.root-servers.net.
. 513652 IN NS c.root-servers.net.
. 513652 IN NS h.root-servers.net.
;; ADDITIONAL SECTION:
E.ROOT-SERVERS.NET. 133062 IN AAAA 2001:500:a8::e
G.ROOT-SERVERS.NET. 483477 IN AAAA 2001:500:12::d0d
Received 430 bytes from 127.0.0.1#53 in 0 ms
$ sudo traceroute -ITU github.com
traceroute to github.com (192.30.253.112), 30 hops max, 60 byte packets
1 server.com (192.168.0.2) 2998.275 ms !H 2998.252 ms !H 2998.238 ms !H
1 ответ
Я подозревал, что это как-то связано с тем, что я использовал 192.168.0.0/16
подсеть в моей локальной сети и в самом деле так оно и было. Чтобы понять, в чем заключалась проблема, и в конечном итоге решить ее, я начал с запроса маршрутизации сервера, которая выявила странную маску сети:
# ip route show
default via 192.168.0.1 dev enp5s0 onlink
192.0.0.0/8 dev enp5s0 proto kernel scope link src 192.168.0.2
Ищу в /etc/network/interfaces
раскрыл виновника:
iface enp5s0 inet static
address 192.168.0.2
netmask 255.0.0.0
gateway 192.168.0.1
Я больше не могу вспомнить, вернулось ли когда-нибудь при настройке сервера, установка Ubuntu Server запросила у меня информацию о сети или о том, делала ли она молчаливые предположения. Я на самом деле считаю, что он настроен из коробки, чтобы ожидать 10.0.0.0/8
подсеть, и я, должно быть, по ошибке изменил его на 192.168.*.*
но забыл про маску сети.
В любом случае я затем исправил приведенную выше маску сети, чтобы 255.255.0.0
и выполнен systemctl restart networking
, Бег ip route show
показал новую маску в действии, а также, как ни странно, старую. Я должен был явно удалить старый маршрут с ip route delete 192.0.0.0/8 dev enp5s0
и тогда все заработало.
РЕДАКТИРОВАТЬ: ответ на первую часть моего вопроса (как диагностировать) было посмотреть на маршрутизацию машины, которая, если у вас есть проблемы с сетевым подключением, аналогичным моему, может быть хорошим местом для начала.