Як праверыць, ці сапраўды працуе VPN-тунэль Linux
Сцягі інтэрфейса, пошук маршрутаў, табліца 220 і пазнакі часу рукапаціску адказваюць на розныя пытанні. Прывяжыце кожны крок сцэнара да праверкі, якая даказвае яго перадумову.
Cron перазапускае цалкам спраўны VPN кожныя дзесяць хвілін, а тая ж задача пакідае мёртвы працаваць тыдзень. Абедзве памылкі паходзяць ад трактоўкі «працуе» як адной з'явы, хаця гэта як мінімум чатыры. Прылада можа быць адміністрацыйна ўключана, правільна маршрутызавана, цалкам зашыфравана і ўсё адно не перадаваць нічога карыснага. Спачатку падзяліце назіранні, і праверка амаль напішацца сама.
Сцягі злучэння апісваюць прыладу, а не шлях
Праверка, якую ўсе капіруюць, шукае апаратны адрас з саміх нулёў. Гэты трук аддзяляе сапраўдны інтэрфейс ад заглушкі ў некаторых драйверах і нічога не даказвае ў астатніх, бо ў прылады tun увогуле няма MAC, які можна паведаміць. ip -brief link show tun0 замест гэтага дае сцягі: UP азначае, што адміністратар уключыў прыладу, а LOWER_UP азначае, што драйвер лічыць злучэнне прыдатным. Чытаныя разам, яны кажуць, што прылада існуе і не адключана адміністрацыйна. Ні адзін з іх не кажа, што пакету ёсць куды ісці.
OpenVPN стварае сваю прыладу tun да ўсталявання маршрутаў, таму сцягі могуць выглядаць бездакорна, пакуль нішто не маршрутызавана. Разглядайце іх як перадумову, ніколі як адказ.
Запытайце, куды пойдзе пакет
Пошук маршруту адказвае на пытанне, на якое сцягі не могуць. ip route get 10.8.0.1 from 10.8.0.2 называе інтэрфейс, адрас крыніцы і табліцу, якую выкарыстае ядро, — менавіта тое, супраць чаго трэба правяраць раздвоены тунэль. Без адраса крыніцы вы пытаецеся пра іншае, а з палітычнай маршрутызацыяй адказ можа адрознівацца для кожнай крыніцы. Гэта самы танны сумленны тэст, бо ён звяртаецца да тых жа правілаў, што і ваш трафік.
Для WireGuard дадайце рукапаціск. wg show друкуе пазнаку часу апошняга рукапаціску для кожнага суразмоўцы, і пазнака, якая перастала расці, азначае, што суразмоўца знік, што б ні казалі сцягі інтэрфейса. Наладжаны інтэрфейс без нядаўняга рукапаціску — адна з найчасцейшых ілжывых спрацоўванняў у самаробным маніторынгу.
Табліца 220 расказвае гісторыю IPsec
strongSwan усталёўвае маршруты для ўзгодненых селектараў у табліцу 220, калі ўсталяванне маршрутаў уключана. ip route list table 220 таму аддзяляе ўзгодненае ад маршрутызаванага: пустая табліца побач з загружаным злучэннем азначае, што SA IKE і CHILD узняліся, але трафік у іх не накіроўваецца. Праверце ip xfrm state побач, бо яна пералічвае ўсталяваныя асацыяцыі бяспекі і іх канчатковыя пункты.
Палітыка пасткі — гэта выпадак, за якім трэба сачыць. Яна чакае цікавага трафіку замест таго, каб маршрутызаваць яго, таму табліца застаецца пустой, пакуль нешта не запусціць тунэль.
Стан мэнэджара і стан дэмана — гэта розныя спісы
NetworkManager пералічвае толькі злучэнні, якімі ён валодае. nmcli -t -f NAME,TYPE connection show --active нічога не вяртае для тунэлю, запушчанага напрамую праз wg-quick або праз дэман OpenVPN.
Гэтае адрозненне важнае, калі сцэнар павінен вырашыць, які з двух мэнэджараў апытаць. Выберыце той, што сапраўды валодае тунэлем на гэтым хосце, і ігнаруйце маўчанне другога. Калі ёсць абодва, вырашыце, які з іх аўтарытэтны, і адключыце другі, бо два мэнэджары, якія перапісваюць маршруты на адным інтэрфейсе, спараджаюць збоі, якія ніхто не можа ўзнавіць. Адсутны запіс — гэта інфармацыя пра мэнэджара, а не пра тунэль.
Прывяжыце наступны крок да патрэбнай яму праверкі
Апытанне порта UDP нічога не даказвае пра гатоўнасць, бо ў UDP няма рукапаціску і nc -u спрацоўвае, як толькі пакет выйшаў. Праверце тое, што наступны крок сапраўды спажывае: TCP-злучэнне да перанакіраванага порта, запыт да хоста ўнутры тунэлю, імя, якое развязаецца толькі там. Абмяжуйце чаканне тайм-аўтам і лікам спроб і гучна памыляйцеся, калі яны скончацца.
Хукі лепш за апытанне, калі кліент іх прапануе. Сцэнары OpenVPN --up і --down запускаюцца пасля змены стану інтэрфейса, што цалкам прыбірае гонку, але яны ідуць з прывілеямі, якія дэман захаваў. Калі OpenVPN апусьціўся да непрывілеяванага ўліковага запісу праз user і group, хукі ідуць ад імя гэтага запісу. Перазапуск сістэмнай службы тады патрабуе sudo, які дазваляе менавіта гэтую каманду. Даручыце паўтор мэнэджару службаў, а не цыклу cron: абмежаваная палітыка перазапуску з лімітам запускаў выяўляе зламаны тунэль, а неабмежаваны цыкл хавае яго бясконца.