Бир Linux аккаунтын OpenVPN аркылуу UID эрежеси менен багыттоо
uidrange эрежеси бир аккаунттун IPv4 сокеттерин namespace жок бар туннелге салат. DNS, IPv6 жана камдык жолду өзүнчө чечип, анан текшериңиз.
Аккаунтка негизделген маршруттоо бир Linux колдонуучусуна таандык ар бир IPv4 сокет бар туннел аркылуу чыгышы керек болгондо ылайыктуу, ал эми программа деңгээлинде обочолонуу керек болгондо ылайыктуу эмес. Ал UID боюнча тандайт, ошондуктан ошол аккаунт менен иштегендин баары камтууга кирет, унутуп калган топтом иши да. Бир ip rule-ге тийүүдөн мурун бул маселени чечиңиз.
Төмөнкү мисал UID 1500дөгү атайын браузер аккаунтын, 10.80.0.11 жергиликтүү дарегин кармаган tun-office туннел түзмөгүн жана аталган багыттарга уруксат берген VPNди болжолдойт. Демон өзү ошол UIDден тышкары иштейт.
Механизмди тандаган үч шарт
UID эрежесин ишти аткарган инсан аккаунт болгондо, анын бардык трафигин жылдыруу кабыл алынарлык болгондо жана namespace тапшырмага татыктуудан оор болсо тандаңыз. Тармактык namespaceти жумуш жүгүнө өз интерфейстери, чечүүчүсү жана маршруттоо таблицасы керек болгондо тандаңыз. Проксини же ар бир процесске байлоону так бир колдонмо жылдырылышы керек болгондо, сессиянын калганы жергиликтүү жолдо калганда тандаңыз. Ушул үчөөнү жазып коюу ойлогондон көбүрөөк жашыруун камтыган эреженин алдын алат.
Алыс керек ката — иштеткич ээсин аныктайт деп ойлоо. Башка колдонуучунун сессиясы URL берген браузер UID 1500 астында сокеттерди түзгөн эмес, жана эч бир эреже анын жараткан трафигин жылдырбайт.
Таблица, эреже жана күзөтчү
Бар эрежелерди текшерип, колдонулбаган таблица жана артыкчылык сандарын тандагандан кийин түзүлүш кыска: туннелдин булак дарегин алып жүргөн атайын таблицадагы демейки маршрут, аккаунттун издөөлөрүн ошол таблицага жөнөткөн эреже жана камдык жолду тоскон аяктоочу эреже. Жазып көрсөтсөк, бул идемпотенттүү маршрутту алмаштыруу, ip -4 route replace default dev tun-office src 10.80.0.11 table 51820, андан кийин ip -4 rule add priority 12100 uidrange 1500-1500 lookup 51820.
Күзөтчү — ip -4 rule add priority 12101 uidrange 1500-1500 unreachable, жана ал узундугу түспөлдөгөндөн маанилүүрөөк. Ансыз 51820 таблицасындагы жетишпеген маршрут кадимки жогорку каналга түшөт да, аккаунт саясат кармоого тийиш трафикти үнсүз агызат. Аны менен ошол эле бузулуу күтүү убактысына айланат, башкача айтканда камдык эмес, тосмолош.
Кадимки жергиликтүү дарек эрежесин ушулардын алдында кармаңыз жана LAN же башкаруу өзгөчөлүктөрү тандалган таблицанын алдындабы, аны аң-сезимдүү чечиңиз. Ал жерден табылган демейки кийинчерээк так LAN маршруту үчүн main-тен сурабайт, бул эң узун префикстин дал келиши таблицалар арасында колдонулат деп күткөндөрдү таң калтырат. Көздөлгөн өзгөчөлүктөр тизмесин өзгөртүү жазуусуна, негиздеме али жаңы кезде жазыңыз.
UID маршруттоосу эмнени калтырат: DNS
Чечүүчү демон өзүнүн жогорку сокеттерин өз UIDинин астында ачат, ошондуктан 1500ди тандоо бул сурамдарды 51820 таблицасына жылдырбайт. DNS интеграциясы өзүнчө чечим: аккаунтту туннел аркылуу жеткиликтүү чечүүчүгө багыттаңыз, же аттарды чечүү хосттун жолун ээрчийт, ал эми трафик ээрчибейт деп кабыл алыңыз.
Жергиликтүү stubга loopback сурамы жогорку сурам браузердин маршрутун колдонгонуна далил эмес, кэштен ийгиликтүү барак жүктөө да далил эмес.
IPv6 дизайнда өзүнүн сүйлөмүн талап кылат
Жогорку эрежелер IPv4тү гана камтыйт. Эгер талап ушул аккаунттан түз IPv6сыз IPv4 туннель болсо, каралган аяктоочу эреже кошуңуз, мисалы ip -6 rule add priority 12101 uidrange 1500-1500 unreachable, анан мурунку IPv6 эрежелерин жана сактагыңыз келген loopback өзгөчөлүктөрүн текшериңиз.
Түз IPv6ны тосуу кош катмарлуу туннелдөө эмес; бул чек. Аны туннелдөө деп атоо саясатты окуган кийинки адамды адаштырат, ал эми адашуу бузулган IPv6 сайты тууралуу колдоо билети катары чыгат.
Чыныгы аккаунт менен текшериңиз, анан жашоо циклине ээлик кылыңыз
Издөөлөрдү салыштырыңыз: ip -4 route get 198.51.100.25 uid 1500 ошол эле багытка кадимки UID менен. Анан атайын аккаунттун астында уруксат берилген сурам жасап, алыскы тарап көргөн булак дарегин текшериңиз. Артык көрүлгөн булак дареги source NAT эмес жана башка нерсени байлаган колдонмонун үстүнөн чыга албайт. Эгер эки издөө тең бирдей жолду кайтарса, эреже сиз ойлогонду аткарбайт.
Таблицаны, эрежелерди жана туннел маршрутунун өмүрүн бир ээнин колуна кармаңыз, кайра туташуу менен туннелдин жоголушун сынаңыз, ал эми саясаттан чыгарганда анын так жазууларын гана алып салыңыз. Өзүнчө интерфейстер жана өзүнчө абал чын эле керек болсо, namespace дагы эле жеткиликтүү.