Как можно иметь шлюз по умолчанию за пределами сетевого диапазона любого интерфейса?

Я всегда думал, что шлюзы по умолчанию должны находиться в той же сети, что и сервер / клиент, пытающийся подключиться к Интернету. Однако сегодня я арендовал сервер у Hetzner, и сервер может подключаться к Интернету, хотя, как мне кажется, шлюз по умолчанию определенно не подключен к той же сети. Также сетевая маска, похоже, установлена ​​на /32.[1240 visible. Спасибо !

2
задан 9 January 2020 в 04:16
1 ответ

Если быть точным, то шлюз должен находиться в той же физической сети, что и компьютер, так как для его достижения (или достижения любого компьютера в сети, на самом деле) требуется отправка ARP-пакетов. Для этого любая локальная сеть требует маршрутного элемента, который определяет "подключенные" компьютеры. Вот как будет выглядеть маршрутный элемент для более распространенной сетевой установки:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.193.254 0.0.0.0         UG    0      0        0 enp0s3
192.168.193.0   0.0.0.0         255.255.255.0   U     0      0        0 enp0s3

Как вы видите из второй строки, хорошо определено, как достичь шлюзового сервера. Если бы не этот элемент, то gw был бы недоступен, даже если он находится в одной сети.

В вашем случае, вторая строка маршрутного элемента служит этой цели, хотя она предназначена для одного узла, а не для сети:

172.31.1.1      0.0.0.0         255.255.255.255 UH    0      0        0 eth0

Таким образом, решение заключается в том, что ваш компьютер и шлюз, вероятно, находятся в одной физической сети, и вашему серверу сказано, как связаться со шлюзом. С этого момента не имеет значения, находятся ли они в одной логической сети или нет.

Кроме того, не имеет значения, что такое сетевая маска, если таблица маршрутизации содержит записи о компьютерах. Установка сетевой маски только определяет, как заполнить таблицу маршрутизации, но если у вас есть /24 запись подсети в таблице маршрутизации (как в моем первом примере), и установите сетевую маску в /32, то сервер с радостью свяжется с каждым компьютером, определенным в таблице маршрутизации.

Это работает и в обратном направлении: если у вас есть /24 сетевая маска, но нет записей маршрутизации "on-link", то локальная сеть будет недоступна.

.
0
ответ дан 9 January 2020 в 21:56

Теги

Похожие вопросы