Я не могу соединиться с github.com
ЕСЛИ и только если я пытаюсь сделать так из моего сервера LAN (давайте назовем его 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 для всех машин на LAN. Посмотрите нижнюю часть сообщения для некоторых, надо надеяться, полезная информация.
Я могу соединиться с 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
Я подозревал, что это как-то связано с тем, что я использовал подсеть 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
[ 1114] Я уже не могу вспомнить, вернулось ли когда-либо при настройке сервера, установка 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
и , а затем все заработало.
РЕДАКТИРОВАТЬ: ответом на первую часть моего вопроса (как диагностировать) было посмотреть на маршрутизацию машины, которая, если у вас есть проблемы с сетевым подключением, аналогичные моим, может быть хорошим местом для первого взгляда.