Адаттагы циклден коргоо — хост маршруту: VPN серверинин жарыя дарегине трафикти upstream аркылуу жөнөтүңүз, ошентип шифрленген сессия өз туннелине эч качан кирбейт. Бул ошол эле сервердеги веб-кызматка туннел аркылуу жетүүнү каалаган учурга чейин иштейт, анткени өзгөчөлүк бара турган жерге байланган, ал эми бара турган жер бирдей. Чыгуу жолу — бара турган жер боюнча классификациялоону токтотуп, пакетти кайсы сокет жөнөткөнү боюнча классификациялоону баштоо.

Бөлгүңүз келген эки агымдан баштаңыз

Бир агым — шифрленген OpenVPN ташымалынын өзү, ал upstream аркылуу чыгышы керек, болбосо туннель өзүнүн сырткы туташуусун алып жүрмөк. Экинчиси — ошол жарыя дарекке кадимки HTTPS суроо, аны туннелдин ичинде каалайсыз, ошондо ал кызматка туннел булагынан жетет. Бирдей бара турган жер, көп учурда бирдей порт номери, башка керектүү жол.

Бул кароодо 10.90.0.10 дарегиндеги кардарды tun1 аркылуу, сервердин 198.51.100.25 жарыя дарегин жана демейки маршруту кадимки upstream-ке багытталган тийилбеген негизги таблицаны болжолдоңуз. Сервер тарабы веб-кызматты ички жолдо да кабыл алып, трафикти туннел булагына кайтарышы керек; жарыя дарекке пакет жөнөтүү сервердин listenerин же firewall саясатын жокко чыгарбайт.

Бир нерсени өзгөртүүдөн мурун хосттун учурдагы эрежелерин жазып алып, башка эч ким колдонбогон маанилерди тандаңыз: белги, таблица номери жана үч эреже артыкчылыгы. Машинага ушул туташуу аркылуу өтпөгөн кайтуу жолун сактаңыз, анткени бул жердеги ката браузер баракчасын бузуу эмес, өз алыскы жеткиликтүүлүгүңүздү жоготот.

Конвертти алып жүргөн сокетти белгилеңиз

Кардардын конфигурациясы өзүнүн шифрленген чыгуучу пакеттери үчүн белги алат жана маршруттарды өзү орнотууну токтотот, ошентип алмаштыруу саясаты жолдорду аныктаган жалгыз нерсе болот:

mark 42
route-noexec
disable-dco

Ондук 42 — он алтылык 0x2a, жана маршруттоо эрежелери дал ушул он алтылык формага дал келет. link-options боюнча маалымдама markты Linuxте шифрленген чыгуучу пакеттерге колдонулуучу нерсе деп сүрөттөйт, башкача айтканда жолун башкаруу керек болгон сокеттин дал өзү. Дайындар каналынын разгрузкасын өчүрүү бул мисалды колдонуучу мейкиндигинин жолунда кармайт, мында белгинин жүрүм-туруму сүрөттөлгөн күйүндө болот.

route-noexec OpenVPNдин маршруттарды автоматтык кошуусун жана өчүрүүсүн басат. Алардын ордуна эч нерсе орнотпойт, ошондуктан ушул учурдан тартып маршрут ээси туннелге керек болгон ар бир маршрутту кармоого тийиш. Эгер өзгөртүүдөн кийин жеке бара турган жер жоголсо, бул жетишпеген алмаштыруу саясаты, белгинин кемчилиги эмес.

Муну жасап жатканда 198.51.100.25 үчүн негизги таблицада хост маршрутун кармабаңыз. Мындай маршрут долбоор тарыткысы келген өзгөчөлүктү кайра киргизет жана HTTPS агымы үчүн төмөнкү саясаттардын бири суралганга чейин эле жеңет.

Калганын баарын туннел таблицасына жөнөтүңүз

Туннел интерфейси пайда болуп, өз дарегин кармагандан кийин саясат мындай көрүнөт:

ip -4 route add default dev tun1 src 10.90.0.10 table 47100
ip -4 rule add priority 20000 lookup main suppress_prefixlength 0
ip -4 rule add priority 20001 not fwmark 0x2a lookup 47100
ip -4 rule add priority 20002 not fwmark 0x2a unreachable

Биринчи эреже хосттун конкреттүү маршруттарын көрүнүктүү кармайт, анын ичинде кабыл алынган жергиликтүү тармак, ал эми негизги таблицанын демейки маршрутун бул издөө үчүн көрүнбөй кылат. Бул айырма маанилүү: демейки маршрутту басуу таблицаны этибарга албоо менен бирдей эмес, ал эми сизге дагы керек жергиликтүү өзгөчөлүктөр дал ошонун аркасында сакталат. Ошол өзгөчөлүктөрдү бир-бирден окуңуз, натыйжа универсалдуу авариялык өчүргүч деп ойлобоңуз.

Белгиленбеген трафик андан кийин туннел таблицасына түшөт, туннел булагын алат жана VPN аркылуу чыгат. Белгиленген трафик кийинки эки эрежедеги fwmark текшерүүсүнөн өтпөйт жана тизмеде төмөнүрөөк турган кадимки негизги издөөгө уланат, анда upstreamтин демейки маршруту дагы бар. Акыркы unreachable эрежеси — туннел маршруту жетпегенде белгиленбеген агымдын upstream-ке тынч кулап кетишине жол бербеген нерсе. Селектор — башынан аягына чейин белги, ал эми бара турган жердин дареги чечимге эч качан кирбейт.

Ошол коргонууну кайра туташуулардын арасында ордунда кармаңыз жана аны саясаттын калганы менен бирге орнотуңуз, кол менен эмес. Интерфейс менен бирге жоголгон эреже — саясат эмес, кокустук. Туннел кулаганда саясатты жок кылуу ийгиликсиздик режимин «бөгөттөлгөндөн» «агып кеткенге» алмаштырат, ал эми кийинчерээк мөөнөтү бүткөн эскирген туннел маршрутун түшүндүрүү туура эмес интерфейстен чыккан трафикке караганда алда канча жеңил.

Кайтуу жолу ошол эле белгини көрсүн

Чыгуучу белгилер — механизмдин жарымы гана, жана бул көптөгөн кайра жаратуулар өткөрүп жиберген бөлүк. Шифрленген сессияга жооптор upstream аркылуу келет жана кайтуу жолун текшерүүгө дуушар болот, ал булак келген жол менен кайра маршрутталабы деп сурайт. Жардам жок болсо, бул издөө сиздин белгиленбеген туннел саясатыңызды колдонуп, пакет туура эмес интерфейсте деп жыйынтыктайт.

Оңдоо firewall ээсине таандык: белгини чыгуучу туташууда сактаңыз, аны тиешелүү кирүүчү пакеттерде калыбына келтириңиз жана тиешелүү жол үчүн булак менен тастыкталган белги иштетүүнү күйгүзүңүз. OpenVPNдин сокет белгисин коюшу ушул үч нерсенин бирин да кылбайт, ал эми клиент опцияларын гана тизмелеген рецепт толук эмес. Ушул интеграцияны жазуу түрүндө сураңыз, анткени бул долбоордун эң көрүнбөгөн бөлүгү жана кайра курууда эң оңой жоголуучу бөлүгү.

Кайтуу жолун бош текшерүү да алмаштыргыч эмес. Бош режим булак үчүн кандайдыр бир маршруттун болушун талап кылат, ал эми сиз кошкон unreachable коргонуусу белгиленбеген издөөлөр үчүн аны атайын алып салат. Бул долбоорго таянбастан мурун туташуу белгисинин интеграциясын бүтүрүп, карап чыгыңыз, жана хост чыпкаларын өзүнчө маселе катары караңыз: белги — маршруттоо сигналы, уруксат эмес. Интеграция болбосо, симптом — туташуу орноп, жооптор келе баштаганда үнсүз калган сессия.

Муну эки маршрут издөө менен далилдеңиз

Ядро эки контекст үчүн эмнени чечээрин салыштырыңыз жана чыгуу статусун эмес, dev жана src талааларын окуңуз:

ip -4 route get 198.51.100.25
ip -4 route get 198.51.100.25 mark 0x2a

Биринчи издөө туннел булагы менен tun1ге, ал экинчиси upstream-ке чечилиши керек. Бул синтетикалык издөөлөр, ошондуктан алар саясатты далилдейт, иштеп жаткан процессти эмес: иштеп жаткан кардардын чыныгы ташуу жолун өзүнчө тастыктаңыз, анан сертификат текшерүүсү күйүк туруп чыныгы HTTPS суроосун жасаңыз.

Даяр деп жарыялоодон мурун долбоор эмнени камтыбай турганын жазып коюңуз. DNS, IPv6 жана эрежелердин жашоо циклы ар бири өз чечимин талап кылат, ал эми бул IPv4 маршруттоо мисалы, толук купуялык конфигурациясы эмес. Анын баалуулугу — селектор: конверт upstream өзгөчөлүгүн алат, ал эми ошол эле даректеги кадимки кызмат аны мурастоого милдеттүү эмес.

Тектеш макалалар