Нэг 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 одоо ч боломжтой.