Бір Pi-де екі VPN секіріс: қай маршрут қай серіктесті тасымалдайды
Бір Pi-де екі туннель мекенжайы ақау емес. Әр мақсатқа өзінің тасымалдаушысы, өзінің дәлелі және сыртқы секіріс өлгенде жарияланған қосалқы жоспар керек.
Бір кішкентай тақтада екі туннель мекенжайы қате сияқты көрінеді, ал рефлекс — біреуін жою. Бұл рефлекс ретке келтіруі тиіс нәрсені бұзады. Екі секірісті тасымалдайтын хост әр қосылымға бір мекенжай ұстайды, және әр мекенжайды басқа маршрут таңдайды. Сұрауға тұрарлық сұрақ — қай маршрут қай мақсат үшін қай тасымалдаушыны таңдайды, қанша мекенжай бар екені емес.
Әртүрлі тасымалдаушы қажет үш мақсат
Екі секірісті шынжыр — бір-біріне қабатталған үш мақсат класы, және әрқайсысын басқа қосылым тасымалдайды. Сыртқы серіктеске физикалық байланыс арқылы жету керек. Ішкі серіктеске сыртқы туннель арқылы жету керек. Қамтылған қолданбаның мақсатына ішкі туннель арқылы жету керек, оның өз тасымалын сыртқы туннель көтереді.
| Destination class | View that names the carrier | Command that proves it | Symptom when the wrong carrier wins |
|---|---|---|---|
| Outer peer, 198.51.100.10 | the main table, by destination | ip route get 198.51.100.10 | the outer handshake never completes |
| Inner peer, 203.0.113.7 | the main table once the outer tunnel is up | ip route get 203.0.113.7 | the inner handshake leaves over the physical link |
| Application destination, 172.30.9.1 | the table the inner client's traffic is selected into | ip route get 172.30.9.1 from 10.8.0.2 | the exit address looks right and the traffic never crossed the outer hop |
| Parallel tunnels, one per source group | one policy per group, not the main table | ip rule show beside a marked test connection | both tunnels are up and one steals the other's traffic |
Маршрутқа тиіспес бұрын жолдарды оқырманның нақты мекенжайларымен толтырыңыз, өйткені кесте нақты болғанда ғана пайдалы. Жұмыс істейтін шынжыр төрт жолды бір уақытта қанағаттандырады, ал жартылай жұмыс істейтін шынжыр әдетте солардың біреуін қате тасымалдаушымен қанағаттандырады. Дәл қате жолды ақау деп оқу маршруттау мәселесін тұтас түстен кейінгі түзетулерге айналдырады.
Мекенжайлардың саны емес, рөлі бар
Linux бір интерфейсте бірнеше мекенжайға және бір хостта бірнеше туннельге рұқсат береді, сондықтан сан дұрыстық туралы ештеңе айтпайды. Маңыздысы — қай мекенжай қай қосылымға тиесілі және берілген серіктес үшін маршрут сіз көздеген қосылымды таңдай ма. Үш көрініс бұған үш бағыттан жауап береді, және оларды әр жолы бірдей ретпен оқыған жөн.
Мекенжай тізімі ненің бар екенін және қай қосылымның оған ие екенін көрсетеді. Маршруттар кестесі қарапайым мақсаттық трафик үшін тасымалдаушы сұрағына жауап береді. Саясат көрінісі көз немесе белгі бойынша таңдалған трафик үшін қайта жауап береді, бұл екі клиент бір хостты бөліскендегі қалыпты орналасу.
ip -4 addr show
ip -4 route show table all
ip rule show
Тізім ұзын көрінгендіктен мекенжайды жою жолдың бір бөлігін алып тастауы мүмкін, ал артық көрінгендіктен маршрутты жою сол істі анағұрлым тыныш жасайды. Екеуі де қате бермейді; серіктес жай ғана сіз көздеген жолда жауап беруді тоқтатады, бірақ басқа жолмен қолжетімді болып қалады. Ішкі серіктестің шығу мекенжайын хабарлайтын қолданба трафиктің сыртқы туннельден өткенін дәлелдемейді, өйткені тікелей қатынас сол бақылауды береді. Бақылау мен дәлел арасындағы дәл осы алшақтық тасымалдаушының маршруттау деңгейінде тексерілуінің себебі.
Іске қосу реті бекітілген ұйқыдан басым
Егер ішкі клиент сыртқы клиент беретін мекенжайға немесе маршрутқа тәуелді болса, іске қосу кідірісті емес, сол ресурсты күтуі керек. Ұйқы сыртқы туннель баяу болатын күнге дейін жұмыс істейді, содан кейін ол ешкім қайталай алмайтын түрде үзіліспен сәтсіздікке ұшырайды. Тәуелділікке негізделген рет болжамды жояды және тәуелділікті бір рет сипаттаудан басқа ештеңе қажет етпейді. Интерфейс атаулары да реттеу механизмі емес.
Ядро tun0 және tun1 сияқты атауларды жасалу ретімен береді, және бұл рет қайта жүктеулер немесе қайта қосылулар арасында өзгеруі мүмкін. Конфигурацияны құрал ұсынатын сәйкестікке немесе өзіңіз әдейі беретін атауға байлаңыз. Сіз таңдаған атау — келісім; ядро таңдаған атау — кездейсоқтық.
Әр клиенттің тасымалын екіншісінің қолданба маршрутынан тыс ұстаңыз және OpenVPN 2.6 маршруттау параметрлері шынымен нені уәде ететіні туралы дәл болыңыз. Құжатталған әдепкі бағыттау механизмі клиенттің өз алыс серіктесіне бұрыннан бар қақпа арқылы жету қабілетін сақтайды, бұл бір нақты рекурсия циклін кеседі. Ол бір клиентті екіншісінің тасымалдаушысына айналдырмайды, сондықтан шынжырдың қалған бөлігі сіздің дизайныңыз болып қалады. Шынжырға маршрут емес, саясат қажет жерде айқын көз немесе белгі ережесін жазыңыз және оны сәйкесуі тиіс трафикпен сынаңыз.
Сыртқы секіріс өлгенде не болады
Шынжыр толық деп есептелмес бұрын сыртқы секіріс жоғалғанда не болатынын шешіңіз. Ішкі клиенттің тасымалы онымен бірге өледі, ал келесі қадам техникалық емес, саяси сұрақ: сәтсіздік, қайта әрекет, немесе физикалық байланыс арқылы тікелей қайта қосылу. Дәл үшінші нәтиже ойлануға тұрарлық. Ол пайдаланушы қамту әлі де бүлінбеген деп сенетін сәтте екі секірісті дизайнды бір секірісті дизайнға тыныш айналдырады.
Егер екі секіріс міндетті болса, ішкі клиент сыртқы жоқ кезде тікелей жол орната алмауы керек, және мұны білу жолы — сыртқы секірісті үзіп, ішкінің не істейтінін бақылау. Бекітілген қосалқы жоспар — заңды жауап, бірақ ол жазылуы, сыналуы және хабарлануы керек. Ешкім құжаттамаған қосалқы жоспар оқиғаны қарау кезінде ағып кетуден ажыратылмайды.
DNS және екінші мекенжай тобы сол шешімге жатады. Жергілікті түрде жасалған сұрау хосттың өз саясатын ұстанады, жіберілген клиенттің саясатын емес, сондықтан жіберілген трафик үшін жұмыс істейтін шешуші хост өзі қолданатын шешуші болмауы мүмкін.
Әр қабатты оны салған ретіңізбен қабылдаңыз
Шынжыр салынған ретпен сынаңыз: алдымен жалғыз сыртқы туннель, содан кейін сыртқы туннель арқылы ішкі клиенттің тасымалы, содан кейін ішкі туннель арқылы қолданба. Әр қабылдау бұрын ашық болған бет емес, жаңа қосылым болуы керек. Содан кейін әр қабатты бөлек үзіп, қалпына келтіріңіз және келесісінің не істейтінін бақылаңыз.
Қосалқы жоспардың нәтижесі мұнда ең құнды бақылау және жалпыға ашық IP беті ешқашан көрсетпейтін нәрсе. Серіктестердің жолдарын, олар пайдаланатын мекенжайларды және сол нәтижені конфигурацияның қасында сақтаңыз, өйткені бақытты жол кейін сұралатын бөлік емес.