Я переніс домашній VPN-бокс з Wi-Fi на Ethernet, і його «постійна» адреса змінилася того ж вечора. На маршрутизаторі нічого не було зламано. Резервування збігалося з бездротовим адаптером, а цього адаптера на шляху вже не було.

У тієї самої помилки є друга половина. Виправлення адреси LAN нічого не робить для адреси, до якої підключаються ваші друзі, і не має нічого спільного з приватним пулом, який VPN видає клієнтам. Три адреси, три окремі режими відмови, і лише один із них — робота резервування.

Резервування збігається з клієнтом, а не з пристроєм

У DHCPv4 резервування прив’язане до апаратної адреси клієнта; у DHCPv6 — до DUID, який клієнт має зберігати. Поле hostname — це мітка для людей. Маршрутизатор насправді порівнює ідентифікатор, що надходить у запиті.

Читайте запис як умову: коли цей ідентифікатор просить, дайте йому цю адресу. Продовження зберігають ту саму оренду, поки збіг триває, а перезавантаження просто просить знову. Коли ідентифікатор змінюється, запит проминає резервування, і клієнт бере те, що пропонує динамічний пул. Без помилки, без попередження, просто інша адреса.

OpenWrt ясно показує форму. Один блок config host у /etc/config/dhcp зв’язує ім’я, MAC і адресу, і документація про статичні оренди пояснює, як цей запис взаємодіє з пулом. Інші маршрутизатори ховають ті самі три поля за іншими мітками.

Де збіг тихо обривається

Заміна апаратного забезпечення — звичайний випадок. Замініть мережеву карту або перемістіть машину між Ethernet і Wi-Fi, і адреса, яку бачить маршрутизатор, змінюється разом із нею. Старе резервування залишається в списку і досі виглядає правильним.

Перевстановлення — другий випадок, і воно найсильніше кусає на IPv6. Свіжа інсталяція може створити новий DUID, поки стара оренда IPv4 ще дійсна, тому адреса v4 якийсь час живе, а запис v6 перестає застосовуватися без жодного видимого редагування.

Третій — закріплений ідентифікатор клієнта. Кілька клієнтів DHCP дозволяють задати рядок ідентифікатора замість використання MAC. Якщо оновлення або перезапис конфігурації відкине це налаштування, збіг зникає, хоча машина не переїжджала.

Четвертий — дублювання: старий блок і новий блок для того самого хоста. Сервер відповідає тим правилом, яке збігається, часто адресою з пулу, якої ви хотіли уникнути. Видаліть старий запис, а не додавайте другий.

Налаштування на боці хоста і скільки воно коштує

Встановлення адреси на хості повністю знімає питання збігу. Інтерфейс піднімається з цією адресою незалежно від того, чи відповідає DHCP, і саме цього ви хочете від машини, яка має бути доступною після перезавантаження маршрутизатора.

Ціна — власність. Тепер префікс, шлюз і резолвери надаєте ви, і адресу треба самому тримати поза динамічним пулом. В Ubuntu з netplan її несе /etc/netplan/01-vpn.yaml:

network:
  version: 2
  ethernets:
    eth0:
      dhcp4: false
      addresses: [192.168.50.10/24]
      routes:
        - to: default
          via: 192.168.50.1
      nameservers:
        addresses: [192.168.50.1]

Користувачі NetworkManager доходять до того самого стану з nmcli con mod "Wired connection 1" ipv4.method manual ipv4.addresses 192.168.50.10/24 ipv4.gateway 192.168.50.1, потім з nmcli con up "Wired connection 1". Застосуйте netplan з netplan try при першій спробі, а не з netplan apply; неправильно набраний шлюз знімає коробку з мережі й залишає вас шукати консоль.

Усе ж тримайте відповідне резервування. Воно не зайве. Запис фіксує адресу на боці маршрутизатора і не дає DHCP-серверу віддати цю адресу гостьовому пристрою, якщо хтось згодом розширить пул.

Стабільна адреса LAN — не публічна кінцева точка

Спрямуйте проброс порту на 192.168.50.10, і правило переживе кожну зміну на боці LAN. Стабільної інтернет-адреси воно вам не дасть. Ваша публічна IP належить провайдеру і може зсунутися під час перепідключення або заміни модема, для цього й існує динамічний DNS.

За NAT операторського рівня публічної IPv4 для пробросу взагалі немає, і жодне резервування її не створює. Спершу перевірте сторінку WAN маршрутизатора: якщо адреса в спільному діапазоні, вхідний проброс не може працювати, яким би чистим не було резервування.

Третя адреса — пул тунелю, часто щось на кшталт 10.8.0.0/24. Ці адреси існують лише всередині тунелю і ніколи не з’являються в LAN. Плутати їх з адресою LAN сервера — це шлях, яким порт зрештою пробрасується до клієнта, який онлайн лише поки підключений.

Перевіряйте шлях у тому порядку, у якому він ламається

Почніть з маршрутизатора. Порівняйте запис у таблиці оренд із ціллю резервування; якщо сервер узяв адресу з пулу, ідентифікатор неправильний, а ip link show на хості дає значення для порівняння.

Далі хост. ip -4 addr show eth0 має показати очікувану адресу й префікс. Друга адреса на тому самому інтерфейсі зазвичай означає, що DHCP усе ще працює поруч із вашою статичною конфігурацією.

Далі проброс. Переконайтеся, що призначення досі дорівнює адресі, яку ви щойно перевірили, і що щось слухає з ss -lntp. Проброс на закритий порт зовні виглядає точно як зламаний проброс.

Завершіть ззовні, на телефоні з вимкненим Wi-Fi. Саме цей один тест відділяє «локальна адреса неправильна» від «публічна доступність зламана», дві проблеми, які це налаштування постійно змішує.

Запишіть три адреси — LAN, публічну й пул тунелю — і позначте, яка система володіє кожною. Коли наступного місяця з’єднання обірветься, ви знатимете, що перевіряти, замість того щоб міняти всі три одразу.

Схожі статті