Статический IP приводит к отсутствию доступа к интернету извне.

Вопрос или проблема

Вот моя схема:
ВМ > Unraid сервер > Роутер > Интернет

Когда я разрешаю DHCP, проблем нет. Когда переключаюсь на статический, я получаю полный доступ к локальной интрасети, но не к интернету. Вот несколько изображений, показывающих DHCP ifconfig, ip a, ip route и ip neigh.

DHCP

addohm@cdc:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever 
2: ens2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
        link/ether 52:54:00:94:04:62 brd ff:ff:ff:ff:ff:ff
        altname enp0s2
        inet 192.168.1.198/24 metric 100 brd 192.168.1.255 scope global dynamic ens2
           valid_lft 43110sec preferred_lft 43110sec
        inet6 fe80::5054:ff:fe94:462/64 scope link 
           valid_lft forever preferred_lft forever

addohm@cdc:~$ ifconfig
    ens2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.1.198  netmask 255.255.255.0  broadcast 192.168.1.255
            inet6 fe80::5054:ff:fe94:462  prefixlen 64  scopeid 0x20<link>
            ether 52:54:00:94:04:62  txqueuelen 1000  (Ethernet)
            RX packets 114  bytes 8804 (8.8 KB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 20  bytes 1988 (1.9 KB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 84  bytes 6352 (6.3 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 84  bytes 6352 (6.3 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

addohm@cdc:~$ ip route
default via 192.168.1.1 dev ens2 proto dhcp src 192.168.1.198 metric 100 
192.168.1.0/24 dev ens2 proto kernel scope link src 192.168.1.198 metric 100 
192.168.1.1 dev ens2 proto dhcp scope link src 192.168.1.198 metric 100

addohm@cdc:~$ ip neigh
192.168.1.1 dev ens2 lladdr 6c:99:61:d9:a6:ea STALE

addohm@cdc:~$ netstat nr
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 ens2
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 ens2
192.168.1.1     0.0.0.0         255.255.255.255 UH        0 0          0 ens2

STATIC

addohm@cdc:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:94:04:62 brd ff:ff:ff:ff:ff:ff
    altname enp0s2
    inet 192.168.1.137/24 brd 192.168.1.255 scope global ens2
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe94:462/64 scope link 
       valid_lft forever preferred_lft forever

addohm@cdc:~$ ifconfig
ens2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.137  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::5054:ff:fe94:462  prefixlen 64  scopeid 0x20<link>
        ether 52:54:00:94:04:62  txqueuelen 1000  (Ethernet)
        RX packets 632  bytes 54651 (54.6 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 766  bytes 64930 (64.9 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 865  bytes 69275 (69.2 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 865  bytes 69275 (69.2 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

addohm@cdc:~$ ip route
default via 192.168.1.254 dev ens2 proto static 
192.168.1.0/24 dev ens2 proto kernel scope link src 192.168.1.137

addohm@cdc:~$ ip neigh
192.168.1.136 dev ens2 lladdr 1c:98:ec:0f:c4:30 REACHABLE 
192.168.1.254 dev ens2 INCOMPLETE

addohm@cdc:~$ netstat -nr
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.1.254   0.0.0.0         UG        0 0          0 ens2
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 ens2

Вот моя конфигурация (/etc/netplan/50-cloud-init.yaml):

network:
  version: 2
  ethernets:
    ens2:
      dhcp4: false
      dhcp6: true
      addresses:
      - 192.168.1.137/24
      routes:
      - to: default
        via: 192.168.1.254
      nameservers:
        addresses: [8.8.8.8,8.8.4.4]

Что я упускаю? Для меня все кажется одинаковым, но очевидно, что что-то препятствует доступу снаружи.

Вот ping к DNS серверам Google:

PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
From 192.168.1.137 icmp_seq=1 Destination Host Unreachable
From 192.168.1.137 icmp_seq=2 Destination Host Unreachable
From 192.168.1.137 icmp_seq=3 Destination Host Unreachable
From 192.168.1.137 icmp_seq=4 Destination Host Unreachable

Вот traceroute к DNS серверам Google:

traceroute to 8.8.8.8 (8.8.8.8), 64 hops max
  1   192.168.1.137  1407.485ms !H  *  68.629ms !H

Несмотря на то, что dhcp сообщал мне, что шлюз был 192.168.1.254, когда я переключился на статический, он действительно использует 192.168.1.1.

Ответ или решение

Для решения проблемы отсутствия доступа в интернет при назначении статического IP-адреса, стоит внимательно изучить предоставленную конфигурацию и сравнить ее с конфигурацией, работающей через DHCP. Рассмотрим ситуацию более подробно.

Теория:

Когда вы используете DHCP, ваш роутер автоматически назначает IP-адрес, шлюз по умолчанию и DNS-сервер. Обычно это обеспечивает беспроблемное подключение к сети и интернету, так как DHCP-сервер предоставляет все необходимые для этого параметры. Ситуация меняется, когда вы переключаетесь на статическую конфигурацию, потому что теперь вы сами должны правильно указать все эти параметры.

Основными компонентами настройки сети, влияющими на доступ к интернету, являются:

  1. IP-адрес и маска подсети: Указывают, какой адрес в вашей локальной сети будет принадлежать вашему устройству и какие адреса могут считаться находящимися в той же сети.

  2. Шлюз по умолчанию: Это устройство, через которое ваш трафик будет отправляться в внешние сети, такие как интернет.

  3. DNS-серверы: Используются для разрешения доменных имен в IP-адреса, что нужно, чтобы сайты могли быть найдены в сети.

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

Пример (анализ технических данных):

Из предоставленного вами вывода команд ip a, ip route и `ip neigh можно сделать несколько важных выводов.

При использовании DHCP:

  • IP-адрес: 192.168.1.198
  • Шлюз по умолчанию: 192.168.1.1

При использовании статического IP:

  • IP-адрес: 192.168.1.137
  • Шлюз по умолчанию: 192.168.1.254 (что ошибочно, как вы сами отметили)

Ошибка заключается в неправильном указании шлюза по умолчанию. Правильным шлюзом, вероятно, является 192.168.1.1, так как DHCP выделял именно его.

Конфигурация /etc/netplan/50-cloud-init.yaml, которую вы задали для статической настройки, содержит строку:

routes:
  - to: default
    via: 192.168.1.254

Это неверно, если ваш DHCP-конфиг указывает на 192.168.1.1 как на правильный шлюз.

Кроме того, команда ip neigh показывает, что связь с 192.168.1.254 является INCOMPLETE, что очень вероятно указывает на недоступность этого адреса в вашей сети.

Применение (исправление конфигурации):

Для решения проблемы, вам нужно откорректировать конфигурационный файл 50-cloud-init.yaml, чтобы он использовал правильный шлюз. Следует заменить строку:

via: 192.168.1.254

на:

via: 192.168.1.1

После этого примените изменения с помощью команды:

sudo netplan apply

Дополнительно убедитесь, что ваш файл конфигурации содержит корректные записи DNS-серверов. В вашем случае это:

nameservers:
  addresses: [8.8.8.8,8.8.4.4]

Эти адреса соответствуют публичным DNS-серверам Google и, как правило, работают безотказно.

Заключение:

После корректировки конфигурации (замены шлюза) и применения изменений ваша система должна получить доступ к интернету даже при использовании статического IP-адреса. Если проблема продолжает сохраняться, убедитесь, что роутер действительно использует 192.168.1.1 как шлюз, проверив его настройки, и что других конфликтов с IP-адресами в вашей сети нет.

Оцените материал
Добавить комментарий

Капча загружается...