Як перевірити IPv6 через VPN із власним ресурсом
Щоб довести, що один шлях працює, публічний перевіряч IPv6 не потрібен. Використайте ресурс під вашим контролем, зафіксуйте обидва кінці й запишіть, що тест не покрив.
Публічна сторінка перевірки IP відповідає на одне питання, і зазвичай не на те, яке ви поставили. Вона повідомляє адресу виходу, яку побачила сторінка; вона не каже, чи працює маршрут IPv6 через тунель, чи хост надав перевагу IPv6 або відкотився, і чи не пішов виключений застосунок іншим шляхом. Авторизований ресурс під вашим контролем правильно відповідає на вужче питання, бо ви бачите обидва кінці. Інструкція нижче — про те, як дійти висновку, який можна захистити, а не про зелений результат.
Крок 1: скажіть, який маршрут IPv6 ви перевіряєте
Скажіть це одним реченням. Запит до власної адреси IPv6 сервера тунелю перевіряє тунель; запит до хоста за виходом перевіряє вихід IPv6 виходу; запит до приватної адреси IPv6 перевіряє внутрішній маршрут.
Це три різні твердження, і один успішний запит не може підтвердити всі. Виберіть те, що важливе для рішення перед вами, і запишіть його, перш ніж щось запускати. Якщо турбує, чи не протікає IPv6 навколо тунелю, питання про вибір маршруту хостом, а не про доступність виходу. Якщо турбує, чи може далекий бік дістатися внутрішньої служби, вихід не має значення.
Крок 2: переконайтеся, що хост вибирає саме цей маршрут
ip -6 route get 2001:db8:1::10 друкує маршрут, адресу джерела та інтерфейс, який використало б ядро, і саме від цього факту залежить решта тесту.
Наявність інтерфейсу — не те саме, що його вибір. У хостів із подвійним стеком є таблиця пріоритетів, і /etc/gai.conf у Linux може змінити, яка родина переможе для імені, що розв'язується в обидві.
Крок 3: використовуйте законну ціль і законне ім'я
Якщо ви перевіряєте HTTPS, використовуйте те ім'я хоста, для якого видано сертифікат, і залишайте перевірку ввімкненою; перехід на буквальну адресу, щоб тест пройшов, вимикає саме ту перевірку, яка доводить, що ви дісталися потрібного хоста. Діагностична служба під вашим контролем, що відповідає на відомому імені з чинним сертифікатом, — найчистіша ціль. Вона ж дає рядок журналу на боці сервера для зіставлення, чого перевіряч третьої сторони ніколи не дасть.
Запустіть запит у формі, яка показує використану адресу: curl -6 -sS -o /dev/null -w '%{remote_ip} %{http_code}\n' https://test6.example.net/. Опція -6 примусово задає родину, і так ви відокремлюєте «IPv6 не працює» від «IPv6 не було пріоритетним».
Для чистої перевірки доступності, де дозволено ICMPv6, достатньо ping -6 -c 3 2001:db8:1::10. Вона доводить шлях і нічого над ним.
Крок 4: зіставте обидва кінці
Коли у вас є доступ до обох кінців, запустіть tcpdump -ni any ip6 and host 2001:db8:1::10 на клієнті й еквівалент на ресурсі, з позначками часу, і переконайтеся, що той самий потік видно на обох. Саме це перетворює правдоподібний результат на доказ: лише погляд клієнта не відрізняє відповідь від ресурсу від відповіді від чогось посередині. Тримайте захоплення вузьким — одна ціль, щоб вивід залишався читабельним і чиясь стороння сесія не потрапила у файл.
Повторіть тест після повторного підключення, якщо турбує, чи переживає політика перезапуск. Стан маршрутів і міжмережевого екрана, застосований один раз під час підключення, може відрізнятися від стану, що застосовується знову, і різниця видно лише на другому підключенні.
Перевірте випадок відмови окремо, якщо він потрібен. Тунель, який блокує IPv6 під час падіння, і той, що його пропускає, — різні конструкції, і лише одну з них можна підтвердити успішним запитом.
Крок 5: запишіть, що тест не довів
П'ятий крок — записати, що тест не довів, і саме цю частину зазвичай оминають. Успішний тест приватної кінцевої точки не доводить публічний вихід IPv6, не доводить поведінку DNS і не охоплює застосунки, які ви виключили з тунелю. Кожному з них потрібна своя ціль і своє спостереження. Записка «IPv6 працює після одного запиту до одного хоста» — не знахідка; це здогад із позначкою часу.
Запис, який варто зберегти, короткий: ціль, ім'я, вибрана хостом адреса джерела, спостережена віддалена адреса й час. RFC 7359 обговорює, як перевірити, що відповідний шлях IPv6 справді придатний, і це той стандарт, до якого ця інструкція наближається простішими засобами. Якщо для правдивості висновку потрібен публічний перевіряч, тест не був достатньо конкретним.