-o tun+ гэж бичих нь нарийн заавар мэт санагддаг ч үнэндээ цөмийн бүх туннельтай таарах орлуулагч тэмдэгт юм. Хоёр дахь VPN клиент, контейнерын гүүр эсвэл сүйрсэн сессээс үлдсэн интерфейс бүгд үүнийг хангадаг бөгөөд хост дараа нь бодлого сэргийлэх ёстой байсан урсгалыг нэвтрүүлдэг. Доорх журам нэг төхөөрөмжийн нэрийг тогтоож, туннель үнэхээр үүсэхийн тулд үл хамаарах дүрмүүдийг эрэмбэлж, дүрмүүд муу таарвал буцах замыг чинь үлдээнэ. Алхам бүр дангаараа буцаах боломжтой хэмжээнд богино.

1-р алхам: одоогийн дүрмүүдийг бичиж ав

Анхдагч бодлогыг өөрчлөхөөс өмнө одоогийн төлөвийг хадгал, ингэснээр буцаах нь дурсамж биш тушаал болно. iptables-save > /root/iptables.pre хүснэгт бүрийг сэргээж болох файлд бичдэг бөгөөд root сесс нээлттэй хоёр дахь терминал нь тогтоох гэж буй бодлого түүнийг зөөж буй холболтыг таслахад хэт сэрэмж биш юм. Хэрэв алсаас ажиллаж байгаа бол flush-ийг онцгой унтраалга болгон төлөвлө.

Дараа нь интерфейсүүдийг жагсаа, учир нь таамагласан нэр бол унших ёстой байсан нэр: ip -br link яг одоо юу байгааг харуулж, туннель босох хүртэл харагдахгүй. Уншихдаа төхөөрөмжийн нэрсийг бичиж ав.

2-р алхам: туннельд өөрийн нэрийг өг

OpenVPN клиентийн тохиргоонд dev tun_work хүлээн авч, дараа нь Linux tun0 хуваарилахын оронд яг тэр нэрээр интерфейс үүсгэдэг. Өөр юу ч түүнд шаардлага гаргахгүй л бол нэр дахин холбогдох хооронд тогтвортой үлддэг бөгөөд төхөөрөмжийг нэрлэсэн дүрмийг утга учиртай болгодог нь энэ.

Нэрийг хянах боломжгүй газарт туннелийн хаяг эсвэл пакетын тэмдэглэгээтэй тааруул. Хоёулаа ажилладаг, хоёуланг нь уншихад хэцүү, туннель дахин дугаарлагдах үед хоёулаа илүү чимээгүйгээр бүтэлгүйтдэг. Ямар ч тохиолдолд нэг зүйлтэй тааруулж, аль нь болохыг тодорхой хэл.

3-р алхам: бодлогыг endpoint үл хамаарах дүрмээр эхлүүлж бич

Зөвхөн VPN-тэй хост гэдэг нь богино үл хамаарах жагсаалттай анхдагч хориг хост бөгөөд хамгийн чухал үл хамаарах зүйл нь туннелийг оршин байхыг зөвшөөрдөг дүрэм юм. Туннелийн төхөөрөмжийн дүрмээс өмнө endpoint дүрмийг тавьж, энэ дарааллаар барь, ингэснээр гар барих газар олдоно:

# allow the tunnel to be built, then everything the tunnel carries
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -A INPUT  -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -d 198.51.100.7 -p udp --dport 1194 -j ACCEPT
iptables -A OUTPUT -o tun_work -j ACCEPT
iptables -A INPUT  -i tun_work -j ACCEPT
iptables -A INPUT  -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

endpoint-ийн шууд хаяг болон порт нь таны үйлчилгээ үзүүлэгчийнх, энэ хуудасных биш. Хэрэв endpoint нь хостын нэр бол нэг удаа шийдэж, үр дүнг тогтоо, учир нь дүрэм нэрийг хайж чадахгүй бөгөөд эргэлдэх хариулт дараагийн DNS өөрчлөлтийн дараа бодлогыг чимээгүйгээр эвдэнэ. Портыг ч шалга, учир нь таныг TCP 443 руу шилжүүлдэг үйлчилгээ үзүүлэгчид эс бөгөөс хэн ч бичээгүй дүрэм шаардана. Зөвхөн нэг протоколоор ажилладаг туннель ихэвчлэн яг энэ орхигдол юм, галт хананы гэмтэл биш.

Чиглүүлэгч дээр яг ижил хэлбэр нь ард байгаа клиентүүдийн FORWARD хэлхээнд ордог бөгөөд чиглүүлэгчийн өөрийн урсгалд өөрийн дүрэм хэрэгтэй. Зөвхөн дамжуулсан пакетыг хамарсан дүрмийн багц SSH болон DNS-ийг хуучин замд үлдээдэг бөгөөд туннель босох мөчид чиглүүлэгч хүрэх боломжгүй болдог нь үүнээс.

4-р алхам: зөвхөн байгаа эсэхийг биш, дарааллыг шалга

Дүрмүүд дарааллаар үнэлэгддэг тул эрт ирэх ACCEPT нь дараа нэмсэн REJECT-ийг зүгээр л нуудаг. established болон related тааралт нь ерөнхий орж ирэх зам нээлгүйгээр өөрийн гарч буй хүсэлтэд ирэх хариултыг буцаах боломж олгодог бөгөөд үүнийг туннелийн зөвшөөрлийн дараа байрлуулна гэдэг нь унасан туннель өөрийн интерфейс дээр буцах урсгалыг дамжуулсангүй гэсэн үг.

Дүрмийн тоог нэг дэлгэцээр уншиж болохоор цөөн байлга. Аудит хийж чадахгүй дүрмийн багц бол дээрээс үл хамаарах зүйл нэмж засварладаг багц бөгөөд анхдагч хоригийн бодлогууд аажмаар анхдагч зөвшөөрлийн ирмэгтэй болдог нь үүнээс. Өөрчлөлтийн өмнө болон дараа ACCEPT-уудыг тоол.

5-р алхам: ачаалалт болон хаягийн гэр бүлийг давах боломжтой болго

Гараар оруулсан дүрмүүд дахин ачаалахад алга болдог тул тэдгээрийг түгээмжийн галт хананы үйлчилгээнээс эсвэл туннелийн интерфейс бий болсны дараа ажилладаг unit-ээс ачаал. OpenVPN эхлэхээс өмнө ажилладаг скриптэд tun_work-д лавлах нь унасан урсгалтай ачааллын давталт үүсгэх нийтлэг арга юм.

Дараа нь IPv6-г тусад нь шалга, учир нь IPv4-д сайн анхдагч хоригийн бодлого нөгөө гэр бүлийн талаар юу ч хэлэхгүй. ip -6 route хост зөвхөн IPv4-г боловсруулдаг туннелийг тойрч урсгал зөөж чадах зам байгаа эсэхийг хэлнэ, ip6tables эсвэл nftables-д өөрийн адил дүрэм хэрэгтэй. Дүрмийн багцын тэгш хэмд найдахын оронд IPv6-only очих газартай турш.

6-р алхам: шалгаж, сэргээхэд бэлэн бай

Туннелийг босго, зорьсон үйлчилгээ ажиллаж байгааг батал, дараа нь бодлогоос татгалзах ёстой зүйлийг турш. Хариулт чамайг гайхшруулбал iptables-restore < /root/iptables.pre-аар сэргээ, зөвхөн дараа нь дүрмийг засварлаж эхэл. Тогтвортой байдал болон туршсан сэргээх зам хамтдаа л үүнийг хоёр удаа хийж болох өөрчлөлт болгоно.

Холбоотой нийтлэлүүд