Натиснете свързване и в Linux машина се променят три неща: появява се интерфейс, инсталират се маршрути и резолверът започва да отговаря различно. Повечето провали при настройка идват от това едно от тези три да се случи без останалите или две програми да не са съгласни кой ги притежава. Разбирането на последователността обяснява провала по-бързо от четенето на изхода от журнала на клиента.

Интерфейс се появява, преди нещо да заработи

Клиент на тунел отваря виртуален интерфейс и му предава пакети. Устройство TUN носи IP пакети, което е нужно на маршрутизиран VPN; устройство TAP носи Ethernet кадри, което е нужно на мостов дизайн. Ядреният модул предоставя устройството и клиентът го притежава, докато трае сесията.

Появяването на интерфейса не е същото като работещ тунел. Той може да съществува с адрес, докато партньорът е недостъпен, и затова списъкът с интерфейси е първата проверка, а не последната. Устройство, което се отчита като вдигнато, описва виждането на ядрото за виртуална връзка, а не готовността на партньора да отговаря.

Оставете предоставения режим на интерфейса непроменен. Превръщането на TUN профил в TAP не прави маршрутизиран сървър мостов и обикновено дава връзка, която се установява и не предава нищо.

Маршрутите се инсталират от този, който притежава тунела

Маршрутите са втората промяна и тяхната собственост е по-важна от съдържанието им. Профил на NetworkManager, unit на systemd и ръчно стартиран клиент могат да инсталират маршрути и когато два от тях го правят едновременно, се получава таблица, която никой не може да обясни по-късно.

ip -br addr show
ip route show
ip -6 route show

Профилът за пълен тунел замества маршрута по подразбиране; профилът за разделен тунел добавя по-конкретни маршрути и оставя маршрута по подразбиране непроменен. И двете са нормални и второто е причината изтриването на маршрут по подразбиране да е лош първи тест на машина, която администрирате отдалечено. Премахването му е и най-бързият начин да загубите сесията, която използвате, за да оправите проблема.

Четете таблицата, вместо да предполагате. По-конкретен маршрут или правило за политика може да насочва трафик в тунела, докато маршрутът по подразбиране все още сочи към физическия интерфейс, което изглежда противоречиво, докато не прочетете цялата таблица. Тази комбинация е нормална за разделен тунел и обърква всеки, който очаква един ред да опише дизайна. Търсете маршрута, който отговаря на действителната ви дестинация, а не този, който отговаря на диаграмата.

Резолверът сменя собственика

DNS е третата промяна и тази, която най-вероятно се управлява някъде, където не сте гледали. На настолна система NetworkManager може да изпраща настройки на резолвера за всяка връзка. В система с systemd-resolved настройките се прилагат за всяка връзка и /etc/resolv.conf може да е заглушка или символна връзка, а не файл, който трябва да редактирате.

resolvectl status
readlink -f /etc/resolv.conf
cat /etc/resolv.conf

Ако ръчна редакция на файла на резолвера изчезне след повторно свързване, това е сигнал да намерите компонента, който го поддържа, и да промените вместо това профила. Редактирането на генерирания файл е промяна, която повторното свързване ще изтрие.

Частните имена обикновено изискват вътрешния резолвер и домейните за търсене, които операторът е предоставил. Замяната с публичен резолвер може да счупи точно ресурса, заради който съществува VPN, и симптомът изглежда като проблем с маршрутизирането, а не с DNS. Тествайте името и адреса отделно, защото едното работещо и другото неуспешно ви казва точно къде да гледате. Това едно сравнение спестява час отстраняване на проблеми с маршрути.

Един мениджър на връзка

Форматът на профила определя коя програма може да го използва. Профилът на OpenVPN изисква OpenVPN или съвместим плъгин, а конфигурацията на WireGuard има свой формат с ключове на партньора и разрешени префикси. Диалогът за импортиране не превръща едното в другото, каквото и да подсказва разширението на файла.

Изберете един мениджър и го оставете да притежава връзката. Вдигането на същия тунел през два инструмента прави таблицата с маршрути и поведението при повторно свързване двусмислени и обикновено печели вторият, който стартира, по начини, които трудно се възпроизвеждат.

Инсталирайте пакетите, които вашата дистрибуция поддържа, и вземете профила от оператора. Отнасяйте се към него като към идентификационни данни, защото обикновено съдържа частен ключ или еквивалентен материал, и го съхранявайте там, където живеят останалите ви тайни. Профил, оставен в папка за изтегляния, е ключ, оставен на бюро.

Какво да проверявате, когато е вдигнато, но не работи

С вдигнат интерфейс и клиент, който отчита успех, работете навън: избира ли таблицата с маршрути тунела за дестинацията, отговаря ли резолверът за частното име и има ли отсрещната страна обратен път. Всяко има отделна команда и отделен собственик.

nmcli connection show --active
nmcli device status
wg show

Справочникът на nmcli документира командите за състояние и връзка, ако ви трябва пълният набор. Важното тук е разликата между активен профил и устройство, което носи трафик, защото двете могат да се разминават.

Свържете се отново веднъж през същия мениджър, преди да обявите настройката за завършена, и проверете, че DNS все още работи след прекъсване. Конфигурация, която работи само до първата промяна в мрежата, не е завършена, тя просто работи в момента.

Подобни статии