pfSense VPN сервері және клиенті ретінде: екі жол, бір маршрутизатор
Кіретін қызмет пен шығатын туннель бір құрылғыны бөлісе алады. Олардың маршруттары, аудармасы және ақаулары бөлек қала ма, соны үш шарт шешеді.
Бір құрылғы бір уақытта екі бағытқа қарай алады: роумингтегі пайдаланушылар ішке қосылады, ал сол қорап таңдалған трафик басқа желі арқылы шығуы үшін сыртқа шығу провайдеріне қосылады. Екі қызметті қосу бірнеше минут алады; олардың қатар өмір сүруі жобалауды талап етеді, өйткені екінші рөл біріншісі сүйенетін маршруттау кестесін қайта жазады. Бұл құрылымның жұмыс істеуін үш шарт шешеді: кіретін қызмет өзінің қайту жолын сақтай ма, шығатын туннель әлі де серігіне жете ме, және өткізгіңіз келген трафик шығу үшін таңдала ма. Біреуінде қателессеңіз, екеуі де қосылғанын хабарлайтын, бірақ араларында пайдалы ештеңе өтпейтін екі туннель аласыз. Төмендегі тексерулер әр шартты ақаулар әдетте пайда болатын ретпен орнықтырады.
Кез келген параметрге қол тигізбес бұрын екі рөлді атаңыз
Әр дана үшін төрт деректі жазып алыңыз: оның алыстағы серігі, аутентификация материалы, тарататын мекенжай пулы және оның артындағы желілер. Екі дана құрылғыдағы жеке нысандар және жазбаларыңызда да жеке қалуы керек. Кейінгі барлық дерлік шатастыратын белгі олардың мәндерінің араласуынан келеді, ал екі дана бір жазбалар жинағын бөліссе, дұрыс емес пул дұрыс емес өріске солай түседі.
Кіретін қызметке шығатын туннельдің мекенжайларымен де, құрылғы маршруттайтын кез келген жеке желімен де қабаттаспайтын туннельдік желі қажет. Қабаттасу — екі рөлде де бір уақытта белгі беретін жалғыз қате, оны қағазда ұстау әлдеқайда арзан. Кез келген қызметті конфигурацияламас бұрын екі пулды және әрбір маршрутталған жеке желіні бір жерде салыстырыңыз.
Ортақ жабдық ортақ тіркелгі деректерін білдірмейді, ал қашықтан қатынау пулынан алынған клиент сертификаты шығу провайдеріне қарсы қолданылмауы керек. Бөлек материал кері қайтарып алуды да бүкіл флоттық оқиғаның орнына жергілікті шешімге айналдырады.
Сервердің жауаптарын WAN жолында ұстаңыз
Құрылғы өзі жасайтын жауаптар — немқұрайлы әдепкі маршруттың алғашқы құрбаны. Роумингтегі пайдаланушының қапталған пакеті келгенде, жауап жергілікті пайда болған трафик және ол сол пайдаланушы кірген интерфейстен шығуы керек. Егер шығатын клиент оны ұстайтын әдепкі маршрут орнатқан болса, жауап қате туннельге кіреді де, қызмет әлі де сау көрінген кезде сессия тоқтайды.
Мұны шешетін бір ғана құсбелгі жоқ, себебі шешім шығатын клиент қандай трафикті ұстай алатыны туралы. Не бірде-бір маршрут тартпай, тек таңдағаныңызды бағыттаңыз, не маршруттарды тартып, құрылғының өз қызметтерін жұмыс істеп тұратын ерекшеліктерді қосыңыз. Таңдауды дананың қасына жазыңыз, әйтпесе келесі адам екіншісін болжайды.
netstat -rn | head -20
pfctl -sr | grep -i vpn
ifconfig | grep -A3 ovpn
Маршруттау кестесін ең ұзын сәйкестік бойынша оқыңыз, бірдеңені конфигурациялаған ретіңіз бойынша емес. Сұрақ — шығу серігінің мекенжайы үшін қай жазба жеңеді және кіретін қызметтің жауабы үшін қай жазба жеңеді, ал бұл екі жауап өзгеше болуы мүмкін.
Шығатын туннельге өзінің соңғы нүктесін жеуге жол бермеңіз
Шығатын клиент туннельді мүлдем құру үшін серігінің жария мекенжайына жетуі керек. Егер сол мекенжай өзі туннельге маршрутталса, клиент өз құйрығын қуады: тасымал ешқашан көтерілмейді, немесе көтеріліп, маршрут орнатылған сәтте құлайды. Журнал маршруттау ақауынан гөрі аутентификация уақытының бітуіне ұқсайды, сондықтан маршрут бірінші тексеруге лайық.
Маршрутты тіркелгі деректерінен бұрын және туннель көтерілгеннен кейін тағы да тексеріңіз, өйткені жазба жүктелу кезінде дұрыс, ал бір минуттан кейін қате болуы мүмкін. Серіктің мекенжайы кәдімгі WAN жолын нұсқауы керек, ешқашан туннель құрылғысын емес. Тасымал тұрақтанған соң, қызықты сұрақ жіберілетін трафикке ауысады, бұл келесі шешім.
netstat -rn | grep -F '198.51.100.10'
traceroute -n 198.51.100.10
Қай пайдаланушылар шығуды алатынын таңдаңыз
Бастау саясаты трафиктің құрылғыға кіретін кіреберісіне жатады, сондықтан қашықтан қатынау пулын немесе оның ішіндегі тар идентификаторларды таңдаңыз. Шығуға ешқашан жіберілмейтін жеке межелер мен басқару ерекшеліктерін сақтаңыз және бұл ережелерді кең ережеден бұрын қойыңыз. Содан кейін шығу жолына өзінің аудармасы немесе маршрутталған қайту құрылымы қажет, бұл көптеген жобаларда пулды қамтитын шығу интерфейсіндегі шығыс NAT дегенді білдіреді. Аударма шығуды таңдамайды; ол тек әлдеқашан кеткенді қайта жазады, сондықтан қатысы жоқ WAN-дағы NAT ережесі таңдауға ештеңе өзгертпейді.
Алыс жақ бұл жобадан жіберілетін трафикке рұқсат беретінін растаңыз, өйткені кейбір провайдерлер рұқсат етеді, кейбіреулері жоқ. Айырмашылық қосылатын, бірақ ештеңе тасымайтын туннель ретінде көрінеді, оны жергілікті ақау деп оқу оңай. Үш ағынды жеке-жеке тексеріңіз, өйткені олар тәуелсіз сәтсіздікке ұшырайды, ал үшеудің екеуі — жартылай салынған жоба.
openvpn --config user07.ovpn
curl -sS https://ifconfig.me
curl --interface 10.10.10.1 -sS https://intranet.corp.example/health
Бірінші пәрмен — роумингтегі пайдаланушының сыртқы қосылымы, ол клиент инициализация тізбегі аяқталғанын хабарлағанда жұмыс істейді. Екіншісі сол қосылған ноутбуктен іске қосылады және сіздің WAN мекенжайыңыздың орнына шығу провайдерінің мекенжайын хабарлауы керек. Үшіншісі құрылғыда пул мекенжайына байланған күйде жүреді және қашықтағы пайдаланушыны мүлдем тартпай, жіберілетін трафик үшін бастау саясатын тексереді. Егер ол орнына WAN-нан жауап берсе, саясат сәйкес келмеді, ал NAT-ты өңдеудің қандай да бір мөлшері таңдау мәселесін түзетпейді.
Шығу істен шыққанда не болатынын шешіңіз
Ақаулық мінез-құлқын ол болмай тұрып жазыңыз: шығатын туннель құлағанда пайдаланушылар кәдімгі WAN-ға қайта ма, әлде шығу қайтқанша бұғаттала ма? Екі жауап та қорғауға тұрарлық, ал құрылғы сіздің орныңызға таңдамайды. Жойылған маршрут немесе өлі қақпаға сілтейтін саясат автоматты түрде толық бұғаттау нәтижесін бермейді. Бұғаттауды қаласаңыз, саясат мұны ашық айтуы керек және оны шығуды алып тастау арқылы тексеру керек, ол туралы ойлану арқылы емес. Қайтуды қаласаңыз, оны пайдаланушыларға жариялаңыз, өйткені үнсіз кәдімгі жолды алатын трафик — біреу жабылған деп есептеген дәл сол трафик.
Клиент данасын өшіріңіз, қосылған пайдаланушы әлі неге жете алатынын қараңыз, содан кейін оны қайта іске қосыңыз. Мерзімі бітетін сұрау — сіз сұраған толық бұғаттау нәтижесі; WAN мекенжайымен жауап беретін сұрау — құжаттамаған қайтуыңыз. Тексеруді IPv6 және DNS үшін қайталаңыз, өйткені IPv4 үшін жазылған саясат AAAA трафигі туралы ештеңе айтпайды және кез келген туннель итерген resolver сұрау шын мәнінде шығатын жерден жауап береді.
pfSsh.php playback svc stop openvpn client 2
curl --max-time 6 -sS https://ifconfig.me
pfSsh.php playback svc start openvpn client 2
Netgate-тің маршрутталған OpenVPN рецепті бастау саясатының, интерфейс тағайындауының және шығыс аудармасының қалай үйлесетінін көрсетеді, ал оның сайттан сайтқа қамтуы тұтас көшірілмейтін бөлік. Ол сізге айтпайтыны — жоғарыдағы үш шарттың қайсысын сіздің жобаңыз әлдеқашан бұзғаны.