Хоёр VPN клиент, хоёр нийтийн хаяг: SNAT-ыг тохируул
Эх сурвалжид суурилсан SNAT нь нийтийн хаяг сонгож болох боловч гарц нь клиентүүдийг ялгаж чадах хүртэл л болно. Дүрэм бичихээс өмнө үлдсэн эх сурвалжийг шалга.
Хоёр VPN клиент хоёр өөр нийтийн IPv4 хаягаар гарч болох бөгөөд үүнийг хийдэг дүрэм ихэнх хүний бодож байгаагаас богино. Үүнийг ажиллуулж байгаа нь iptables синтакс биш, харин пакет гарцын гинжид хүрэх үеийн төлөв юм: тэндхийн эх хаяг клиентүүдийг ялгах ёстой хэвээр. Хэрэв өмнөх masquerade аль хэдийн хоёуланг нь нэг хаяг руу нэгтгэсэн бол ямар ч клиент тус бүрийн дүрэм энэ ялгааг сэргээж чадахгүй. Эхлээд энэ асуудлыг шийдэж, дараа нь орчуулгыг бич.
Ямар таних тэмдэг гарц хүртэл үлддэг
Дүрэм нь пакетийн эх хаягтай таарч, VPN хэрэглэгчийн нэртэй болон клиент программын харуулдаг нэртэй таарахгүй. Замд пакетийг эрт орчуулдаг бүхэн таны дүрэм юу харж чадахыг тодорхойлно. nat хүснэгтийг дараалуулан ажиллуулж, эх сурвалж клиент бүрт тусдаа хэвээр байгаа цэгийг ол.
iptables -t nat -S POSTROUTING
Тэр жагсаалтыг дээрээс унш. Дээд хэсгийн ойролцоох masquerade дүрэм тохирох урсгал бүрийн эх хаягийг дахин бичдэг бөгөөд түүний дараа тавьсан клиент тус бүрийн бичлэгүүд одоо байхгүй хаягтай таардаг. Хоёр LAN төхөөрөмж нэг хонгилыг хуваалцаж, нэг дотоод хаягаар ирэх үед дизайн галт ханаас өмнө өөрчлөгдөх ёстой: тэдний эх мужуудыг тусдаа байлга эсвэл тус бүрт өөрийн дотоод хаяг өг.
Дотоод хаягийн хуваарилалтыг баталгаажсан клиенттэй холбо. Тэр хаягийг өөр төхөөрөмжид өгөх нь гарцын бодлогыг хамт шилжүүлдэг бөгөөд эх орчуулга нь өөрөө таних тэмдгийн баталгаа биш.
Орчуулга хаяг зохиож чадахгүй
Нийтийн хаяг бүр энэ гарцын цэгт хуваарилагдах эсвэл энэ зүг рүү чиглүүлэгдэх ёстой бөгөөд хариултууд эргэж ирэх замаа олох ёстой. Хэн ч буцааж чиглүүлдэггүй хаягаас трафик илгээдэг дүрэм холын төгсгөлд хаягдах эсвэл хэзээ ч гуйгаагүй хост руу хариулт өгөгддөг. Үүлэн үйлчилгээ үзүүлэгчийн инстанс ихэвчлэн пакет гарахаас өмнө нийтийн хаягаа хувийн интерфэйсийн хаяг руу орчуулсан байдаг тул SNAT-ын эх нь үйлчилгээ үзүүлэгчийн хүлээн авах хаяг байх ёстой, консол харуулдаг утга биш. Үйлчилгээ үзүүлэгчийн хаягийн загварыг уншиж, нийтийн утгыг пакет бүрт хуулахын оронд түүнийг дага.
Практикт энэ нь галт хананд хүрэхээс өмнө үйлчилгээ үзүүлэгчийн консолд чиглүүлсэн префиксийг шалгах, зураглал нэг-нэг байх үед хувийн интерфэйсийн хаягийг орчуулгын эх болгон ашиглахыг хэлнэ. Доорх жишээнүүдэд ашигласан хаягууд нь баримт бичгийн мужаас авсан тул хамгийн түрүүнд солих зүйл бол хаягийн текст өөрөө.
Ерөнхий masquerade-ээс өмнө оруул
Ямар нэгэн зүйл нэмэхээс өмнө гарцын интерфэйс болон одоогийн гинжийг баталгаажуул. Эхнийх нь дүрэм ямар пакеттай таарахыг тодорхойлж, хоёр дахь нь түүний урд юу зогсож байгааг харуулна.
ip -4 route show default
iptables -t nat -L POSTROUTING -n -v --line-numbers
Эхний команд нь интернэт рүү явж буй пакет үнэхээр аль интерфэйсээр гарч байгааг нэрлэнэ. Хоёр дахь нь гинжийг мөрийн дугаартай хамт хэвлэнэ. Ерөнхий masquerade бичлэг бол дээрээс нь үлдэх ёстой мөр юм.
iptables -t nat -I POSTROUTING 1 -s 10.88.4.20/32 -o ens3 -j SNAT --to-source 198.51.100.77
iptables -t nat -I POSTROUTING 1 -s 10.88.4.21/32 -o ens3 -j SNAT --to-source 198.51.100.78
Дээрх хоёр дүрэм тус бүр нэг дотоод хаягтай таарч, тохирлыг гарцын интерфэйсээр хязгаарлаж, эх сурвалжийг тодорхой тогтоодог. Нэмэхийн оронд оруул: 1-р байрлалд тэдгээр нь masquerade мөрний өмнө үнэлэгддэг. Хоёрын хоорондын дараалал хамаагүй, учир нь тэдний эх сурвалж өөр. ens3-ыг маршрутын команд мэдээлсэн зүйлээр сольж, бусад галт ханын менежерүүдийг ижил дэгээнүүдээс хол байлга, учир нь хоёр хэрэгсэл нэг хүснэгт бичих нь зөв дүрэм үр дүнгүй байх нийтлэг шалтгаан.
Эх сурвалжийг шинэ урсгалаар нотол
Stateful NAT урсгал эхлэх үед орчуулгыг холбож, дараагийн пакетуудад дахин ашигладаг тул өөрчлөлтөөс өмнө нээсэн сесс өөрчлөлтийн дараа ч хуучин эх сурвалжаа хадгална. Зөвхөн шинээр эхэлсэн холболт л дүрмийг нотолно.
conntrack -L -s 10.88.4.20 -p tcp --dport 443
Тэр бичлэгийн хариу чиглэлийг унш: түүний очих газар нь холын төгсгөл эх сурвалж гэж хардаг хаяг. Үүнийг зорьсон нийтийн хаягтай харьцуулж, хуучин хаягтай бичлэгийг эвдэрсэн дүрэм биш, хэт эрт эхэлсэн урсгалын нотолгоо гэж үз. Клиентээс шинэ холболт нээхийг хүс, дараа нь асуултыг давт. Бүх хяналтын хүснэгтийг цэвэрлэх нь туршилтыг албадахын тулд гарц дээрх бусад бүх сессийг таслана.
Орчуулга одоо ч маршрутыг сонгохгүй, урсгалыг шүүлтүүрээр нэвтрүүлэхгүй, ирж буй үйлчилгээг нийтлэхгүй. Буруу маршрут болон дутуу зөвшөөрлийн дүрэм төгс SNAT дүрмийн дараа ч бүтэлгүйтсээр байна. IPv6 болон аливаа хоёрдогч гарцын замыг мөн шалгаж, дараагийн өөрчлөлт дүрмийн текстоос биш зураглалаас эхлэхийн тулд дотоод-нийтийн хосуудыг галт ханын баримт бичигт тэмдэглэ.