Яку адресу вказувати в DNS для сервера, під'єднаного через VPN?
У розміщеного сервера є три адреси, і вони не є взаємозамінними. Виберіть значення, яке потрібне кожній службі, а потім підтвердьте його ззовні машини.
У розміщеного сервера з установленим VPN зрештою є три адреси, і лише одна з них належить кожному місцю, яке ви збираєтеся налаштувати. Копіювання номера з панелі провайдера в DNS, у слухача або до списку дозволів — це шлях, на якому робочий тунель перетворюється на службу, до якої ніхто не може дістатися. Цей посібник упорядковує роботу так, щоб кожна адреса вибиралася для заявленої мети. Він також перелічує команди, які підтверджують те, що ви справді опублікували.
Складіть карту трьох адрес, перш ніж щось публікувати
Називайте їх за функцією. Адреса underlay — це те, що машина використовує для доступу до кінцевої точки VPN через інтернет, і вона часто приватна за NAT провайдера. Адреса тунелю живе всередині VPN і видається сервером або клієнтом залежно від продукту. Публічний вихід — це адреса, яку віддалений сайт записує після трансляції, і їй не потрібно існувати на жодному інтерфейсі, який ви можете опитати.
Панель, що показує одну публічну адресу для машини, дуже мало говорить про дві інші ролі. Доступність underlay — це вимога, а не покупка: ноутбук за домашнім маршрутизатором може дістатися до розміщеної кінцевої точки VPN, не володіючи публічною адресою IPv4. Чого ви не можете, так це вигадати вхідний шлях, написавши ім'я, яке розв'язується в адресу, яку ніхто не пересилає.
Вибирайте адресу за службою, а не за ярликом
Запишіть, що сервер має робити, перш ніж вибирати номер. Вихідним викликам API потрібен стабільний вихід, коли протилежна сторона веде список дозволів. Приватному доступу потрібна адреса тунелю, на яку клієнти можуть маршрутизувати, і прив'язаний до неї слухач. Публічному хостингу потрібне вхідне зіставлення, яке провайдер справді пропонує, і сам лише адреса виходу його не дає.
Одна машина може обслуговувати всі три цілі й при цьому використовувати три різні адреси. Ламається припущення, що одне значення покриває їх усі:
| Requirement | Value that belongs there | What you see when the roles are swapped |
|---|---|---|
| Outbound allowlisting | Public exit | Requests reach the service but are rejected |
| Private client access | Tunnel address | Client connects, nothing answers |
| Inbound web service | Provider mapping | Name resolves, connection times out |
Вхідний рядок — той, про який сперечаються люди. Запис, що вказує на адресу виходу, не створює слухача, відкриття брандмауера чи зіставлення порту, і очікування цього не змінює. Коли провайдер продає виділену адресу разом із вхідним правилом, цей пакет і є можливість, яку ви купили; сама адреса не є правом.
Команди, які показують, яка адреса яка
Читайте машину, а не панель. Імена інтерфейсів різняться між системами, тому зіставляйте адреси з пристроями, а не довіряйте ярлику.
Перший рядок перелічує кожну адресу IPv4 та її пристрій, а другий запитує в ядра, який пристрій воно використало б для відомого зовнішнього призначення:
ip -brief -4 addr show
ip -4 route get 198.51.100.10
curl -4 -s https://ifconfig.me
ss -lntp | grep -E ':(443|1194)'Якщо пошук маршруту відповідає пристроєм тунелю для публічного трафіку, ваш повний тунель діє. Перевірка слухача не менш важлива, бо процес, прив'язаний лише до 127.0.0.1, ніколи не відповість на адресі тунелю, яке б ім'я ви не опублікували.
Опублікуйте його, потім перевірте ззовні
Опублікуйте лише те значення, яке потрібне службі: запис A або AAAA для хостингу, запис у списку дозволів для вихідних викликів, профіль клієнта для приватного доступу. Потім перевірте з тієї позиції, яка важлива, і це ніколи не машина, яку ви щойно редагували.
Дві перевірки охоплюють більшість, і обидві достатньо дешеві, щоб тримати їх у скрипті:
dig +short vpn.example.net A
curl -4 -sS -o /dev/null -w '%{http_code}\n' https://vpn.example.net/healthВідповідь DNS, що доводить існування вашого запису, не доводить, що запит доходить, а один успішний запит доводить лише те, що один шлях працює з однієї мережі. Повторіть перевірку через мобільне з'єднання, коли задіяний список дозволів, бо спостережуваний вихід може залежати від родини адрес і обраного маршруту. Запишіть, яку родину ви перевірили; робочий шлях IPv4 нічого не говорить про IPv6.
Якщо служба вхідна, адреси виходу недостатньо
Вхідному доступу потрібні чотири узгоджені речі: ім'я або адреса, до якої клієнт може дістатися, маршрут, що доставляє пакет машині, слухач, який його приймає, і політика, яка його не відкидає. VPN змінює другий елемент і іноді перший, а для третього й четвертого не робить нічого. Коли тунель є шляхом доставки, клієнти підключаються до адреси тунелю, а не до виходу.
Запишіть, від якої адреси залежить кожна служба, і переглядайте цей запис щоразу, коли провайдер змінює свою модель маршрутизації. Сервер, який відповідає приватно і зазнає невдачі публічно, зазвичай не зламаний; він відповідає під неправильною ідентичністю, і виправлення — це рішення про зіставлення, а не зміна брандмауера.