Падбярыце кліент VPN для Linux пад пратакол старой прылады
Прачытайце апублікаваныя парты прылады, затым усталюйце кліент, які падыходзіць: pppd праз GRE, strongSwan для IKEv1 XAuth або openconnect для партала.
Чатыры сямействы пратаколаў ахопліваюць амаль кожную прыладу, якая яшчэ стаіць у стойцы, і кожнае з іх па-рознаму зрываецца на Linux. Апублікаваныя парты і наладжаныя прапановы далёкага боку вызначаюць ваш пакет, а не дыстрыбутыў, які вам выпала запускаць. Усталяваць тое, што згадваецца ў допісе на форуме, а потым правіць, пакуль нешта не падключыцца, — гэта спосаб, якім знікае пасляабедзенны час. Спачатку прачытайце прыладу, потым усталюйце, трэцім праверце.
Запішыце, што публікуе далёкі бок
Запішыце пратакол, парты і аўтэнтыфікацыю, якіх чакае прылада, перш чым адкрыць мэнэджар пакетаў. Чатыры сямействы ахопліваюць большасць старога абсталявання, і табліца ніжэй — гэта ўсё рашэнне на адным экране.
| Family | Ports | Linux side |
|---|---|---|
| PPTP | TCP 1723 plus GRE, IP protocol 47 | pppd with a peer file |
| L2TP/IPsec | UDP 500, 4500, 1701 | NetworkManager plugin over strongSwan |
| IKEv1 aggressive with XAuth | UDP 500 | native strongSwan connection |
| AnyConnect-style portal | TCP 443 | openconnect with a TUN device |
Кіраўніцтва і ўласныя правілы фаервала прылады надзейнейшыя за назву пратакола на яе старонцы ўваходу. Прылада, якая абвяшчае IPsec, можа размаўляць толькі на IKEv1, і выпушчаная версія прашыўкі, якую ніхто не ўсталяваў, магчыма, і ёсць тым, што урэшце дадае IKEv2. Пацвердзіце і шлях даных, і парт наладкі, бо менавіта тут старое абсталяванне разыходзіцца з сучаснымі сеткамі. Памылка на гэтым кроку азначае адладку вашага кліента супраць функцыі, якой у іншага боку ніколі не было.
PPTP: дакажыце GRE, перш чым правіць pppd
PPTP на Linux — гэта не дэман, які вы запускаеце, а выклік pppd, і параметры злучэння жывуць у названым peer-файле, які pppd чытае, калі яго выклікаюць. Дыстрыбутывы ўсё яшчэ пакуюць яго, хоць вядомыя слабасці пратакола робяць яго непрыдатным для чаго-небудзь адчувальнага, таму трымайце яго строга для прылады, якая не прапануе нічога іншага. Сачыце за GRE, пакуль кліент вядзе перамовы, кароткім запісам, а не здагадкай. Збой, які марнуе найболей часу, — гэта не аўтэнтыфікацыя, а адсутны шлях даных.
pppd call branch-office
tcpdump -ni any proto gre -c 5
Калі наладка завяршаецца, а канал так і не нясе трафік, падазрайце шлях GRE, перш чым чапаць уліковыя даныя. Хмарныя групы бяспекі патрабуюць яўнага правіла для пратакола 47, а некаторыя сеткі блакуюць яго цалкам без бачнай памылкі. Тэстуйце з сеткі, якой сапраўды будзеце карыстацца, а не з лабараторыі, што дазваляе ўсё.
L2TP/IPsec: адна адпаведная прапанова лепш за дзесяць спробаў
Чытайце журнал дэмана, а не дыялог працоўнага стала, бо дыялог згортвае некалькі розных збояў у адно паведамленне. Памылка NO_PROPOSAL_CHOSEN належыць да першай фазы: кліент прапанаваў шыфраванне, хэш або групу Diffie-Hellman, якія сервер не прыме. Пералічыце, што падтрымлівае прылада, і напішыце адну прапанову, якая гэтаму адпавядае, бо выпадковыя камбінацыі часцей за ўсё выдаюць тую ж памылку, толькі павольней. На працоўным стале практычны кліент — гэта плагін NetworkManager L2TP з strongSwan або Libreswan пад ім.
Радок прапановы, які для плагіна працоўнага стала азначае адно, для дэмана, якому ён перадае працу, можа азначаць іншае, таму трымайце сінтаксіс адпаведным узроўню, які вы правіце. Калі прылада яшчэ патрабуе сакрэт тунеля, гэта асобная стадыя ад ключа IPsec. Пацвердзіце, пра які з іх пытаецца інтэрфейс, перш чым нешта ў яго ўпісваць.
Агрэсіўны IKEv1 з XAuth і выпадак партала
Канечная кропка ў стылі FortiGate звычайна хоча агрэсіўны рэжым з XAuth і адрас у рэжыме канфігурацыі, а графічны плагін можа гэтага зусім не паказваць. Родны дэман з гэтым спраўляецца, і блок ніжэй — гэта форма такой канфігурацыі, а не поўны файл. Праверце актуальную дакументацыю вытворцы для значэнняў прапановы.
conn branch
keyexchange=ikev1
aggressive=yes
leftauth=psk
leftauth2=xauth
leftsourceip=%config
right=203.0.113.10
Старыя выпускі strongSwan выкарыстоўвалі xauth=client там, дзе версія 5 выкарыстоўвае leftauth2=xauth, таму скапіяваны фрагмент можа зваліцца на адным сінтаксісе. Для партала TLS openconnect, які размаўляе па пратаколе AnyConnect, спраўляецца з Cisco і большасцю перайменаваных брэндаў, і яму патрэбна прылада TUN плюс правы на яе наладку. Перадайце адрас партала дакладна так, як яго паказвае браўзер, уключаючы любы шлях, якога чакае прылада, затым праверце прызначаны адрас, перш чым тэставаць што-небудзь за ім. Загадзя створаны інтэрфейс здымае адзін клас нечаканасцяў падчас наладкі.
sudo ip tuntap add dev tun0 mode tun
sudo openconnect --protocol=anyconnect vpn.example.com
Падключыцеся, потым правярайце ў фіксаваным парадку
Запускайце роўна адзін мэнэджар VPN за раз, бо профіль NetworkManager і дэман, запушчаны ўручную, будуць ваяваць за маршруты і DNS. Апусціце профіль, перш чым тэставаць ручное злучэнне, і пераканайцеся, што не засталося састарэлага інтэрфейса тунеля. Затым правярайце ў такім парадку: адрас тунеля, маршрут да адзінага ўнутранага хоста, які вам патрэбны, развязанне імёнаў і нарэшце фактычны запыт. Зялёная іконка даказвае аўтэнтыфікацыю і нічога іншага.
ip -4 addr show tun0
ip route get 10.20.30.10
getent hosts app.internal
Калі які-небудзь крок зрываецца, спыніцеся там, а не тэстуйце наступны, бо збой DNS ніжэй за зламаны маршрут нічому вас не навучыць. Захавайце копію працоўнага профілю, перш чым эксперыментаваць, бо выдалены файл злучэння лёгка згубіць і нудна аднавіць. Трымайце значэнні прапановы ў той жа нататцы, што і мадэль прылады з версіяй прашыўкі, бо гэтая нататка — розніца паміж міграцыяй і археалагічным праектам, калі скрыню заменяць.