nginx эвдрэхээс өмнө OpenVPN-ийн SNAT дүрмийг хязгаарла
Клиентүүд баталгаажуулагддаг ч юу ч чиглүүлэгдэхгүй, эсвэл VPN өссөний дараа сайт унана. tun-ийн хандалтыг шалгаад, дараа нь орчуулгыг pool ба нэг интерфэйсээр хязгаарла.
Ижил төрлийн хостноос хоёр алдаа байнга ирдэг. Эхний үед клиентүүд баталгаажуулагдаад дараа нь туннелээс цааш юунд ч хүрэхгүй. Хоёр дахь үед VPN өсөж, серверийн өөрийн вэбсайт хариу өгөхөө болих бөгөөд энэ нь хажуугийн хохирол мэт харагддаг тул илүү түгшүүртэй. Контейнерт суурилсан VPS дээр хоёулаа ихэвчлэн ижил богино шалгалтын жагсаалт руу буцдаг бөгөөд дараалал чухал: эхлээд төхөөрөмж, хоёрдугаарт орчуулга, гуравдугаарт хамрах хүрээ.
Контейнер tun төхөөрөмж үүсгэж чадахыг баталгаажуул
Туннелийн интерфэйс оршин тогтнож чадахгүй бол өөр юу ч чухал биш. /dev/net/tun байгаа эсэх, туршилтын төхөөрөмж үүсгэх нь амжилттай болохыг шалга, учир нь олон нийлүүлэгч контейнер дотор tun-ийг анхдагчаар унтраадаг. Хэзээ ч үүсгэгдээгүй төхөөрөмжийг ямар ч firewall ажил нөхөж чадахгүй.
Хэрэв төхөөрөмж байхгүй бол зөвхөн хост эсвэл нийлүүлэгч үүнийг идэвхжүүлж чадна. Өөр төлөвлөгөө нь долоо хоног үргэлжлэх нээлттэй дэмжлэгийн урсгалаас хямд байх нь олонтаа. OpenVPN-ийн бүртгэлийн нэг мөр уншихаас өмнө үүнийг баталгаажуул. Эс бөгөөс оройг хэзээ ч пакет харахгүй дүрмүүдийг тохируулахдаа өнгөрөөнө.
Энэ интерфэйс дээр MASQUERADE юу хийдгийг шийд
Энгийн виртуал машин дээр ердийн гарах дүрэм үндсэн интерфэйсээс POSTROUTING MASQUERADE байдаг. OpenVZ контейнерт харагдах төхөөрөмж ихэвчлэн venet0, өөрөөр хэлбэл хост удирддаг виртуал интерфэйс, чиглүүлсэн сүлжээний карт биш бөгөөд MASQUERADE тэнд зааварт таамагласан шиг үргэлж ажилладаггүй.
Ажиллах хэлбэр нь клиентүүд аль хэдийн хүрдэг хаяг руу тодорхой орчуулга бөгөөд хоёр чиглэлд дамжуулахыг зөвшөөрнө. Серверийн тохиргооноос pool-ыг солих нь хаягийг солихтой адил чухал. Мөр бүрийг наахаас өмнө унш.
iptables -t nat -A POSTROUTING -o venet0 -s 10.8.0.0/24 -j SNAT --to-source 203.0.113.10
iptables -A FORWARD -i tun0 -j ACCEPT
iptables -A FORWARD -o tun0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPTДамжуулах дүрэмгүйгээр орчуулга бүрээр болдог бөгөөд цөм бүрээр дамжуулахаас татгалздаг. Энэ хослол нь NAT дүрмийн тоолуурууд өсөж байхад клиент юу ч авахгүй будлиантай төлөвийг үүсгэдэг. Хоёр FORWARD мөр мөн ижил хэлхээн дэх аливаа өргөн drop дүрмээс өмнө байх ёстой. Дараалал нь тохиргооны нэг хэсэг, хэрэгжүүлэлтийн дэлгэрэнгүй биш.
Дүрмийг нэг pool, нэг интерфэйсээр хязгаарла
Хоёр дахь шинж тэмдэг өөр шалтгаантай: эх сурвалж, гарах хязгаарлалтгүй POSTROUTING дүрэм. Ийм дүрэм хостыг орхиж буй пакет бүрийг дахин бичдэг.
Анхны эх сурвалжаас хамааралтай үйлчилгээнүүд дараа нь буруу ажилладаг. Орон нутгийн проксины ард байгаа вэб сервер хариу өгөхөө больж болох бөгөөд дахин эхлүүлэх нь юу ч өөрчлөхгүй, учир нь дүрэм зам дээр хэвээр байна. Хост өөрийн нийтийн хаяг руу илгээдэг урсгал ч өртдөг тул алдаа нь firewall биш DNS эсвэл гэрчилгээний асуудал мэт харагдаж болно. Дүрмийг эхний шинж тэмдгийг засахын тулд нэмсэн байх нь бараг лавтай.
Шийдэл нь тохирлыг туннелийн pool, гарах интерфэйс хүртэл нарийсгаж, дараа нь хэд хэдийг хамахын тулд нэг дүрмийг өргөтгөхийн оронд pool бүрт нэг дүрэм нэмэх юм.
Дүрмүүдийг тогтвортой болгож, тэдгээрийг өөр хэн эзэмшдэгийг олж мэд
Гараар нэмсэн дүрмүүд дахин ачааллахад алга болдог тул iptables-save-аар хадгал эсвэл суулгасан газарт нь netfilter-persistent-ээр удирд. Сэргээлт OpenVPN эхлэхээс өмнө ажиллахыг баталгаажуул. Дараа нь тохиолдлын үеэр цоорхойг илрүүлэхийн оронд нэг удаа санаатайгаар дахин ачаал.
Контейнер хост дээр тогтвортой байдлын файл бичих боломжтой контейнерын санд байгаа, нийлүүлэгч ачаалах үед шүүлтийг орлуулахгүй байгааг ч мөн баталгаажуул. Зарим платформ бодлогыг контейнерээс гадуур удирддаг бөгөөд тэнд орон нутгийн дүрмүүд эсвэл үл тоомсорлогдоно, эсвэл хостын өөрийн дүрмүүдтэй зөрчилдөнө.
Тоолуур болон нэг бичигдсэн урсгалаар баталгаажуул
Холбогдсон клиентээс гадаад үйлчилгээ мэдээлдэг нийтийн хаягийг шалга. Хэрэв тэр серверийн хаягтай таарч байвал орчуулга ажиллаж байна; таарахгүй бол пакет өөр замаар гарч байна эсвэл огт гарахгүй байна. Дараа нь сервер дээр байрлуулсан үйлчилгээ болон нийтийн интернэт дэх үйлчилгээг хоёуланг нь туршиж үз, учир нь тэд нэг дүрмийн багцаар өөр өөр замаар явдаг.
Сервер дээр NAT болон FORWARD дүрмүүдийн пакетын тоолуурыг iptables -t nat -L -v -n-оор уншиж, бичлэгт нэг урсгалыг ажигла. Хэрэв бичлэгт клиентийн хаяг харагдаж, хариу дагахгүй бол цоорхой нь буцах замд эсвэл нийлүүлэгчийн шүүлтэд байна, клиентийн профайлд биш. Бичигдсэн эх сурвалжийг дүрэм орчуулж буй хаягтай харьцуул, учир нь зөрүү нь эхлээд өөр дүрэм таарсныг илтгэнэ. Ажигласан нэг урсгал нэг хуудас тохиргоо уншихаас илүүг шийддэг.
Pool, орчуулсан хаяг, интерфэйсийн нэрийг өөрчлөлтийн бүртгэлд хамт хадгал. Нэг pool-д зөв дүрэм дараагийнхыг буруу орчуулдаг.