VPN гарцын хоёр талд бичлэг тавьж, нэг урсгал дөрвөн өөр хаяг харуулж болно. Эх NAT нь пакет хаанаас ирж байгаа мэт харагдахыг дахин бичдэг; очих NAT нь хаашаа явж байгааг дахин бичдэг. Masquerade бол гурав дахь чиглэл биш, харин тогтмол утгын оронд гадагшлах интерфейсийн хаягийг авдаг эх NAT дүрэм юм. Гурваас аль нь үнэхээр хэрэгтэйгээ нэрлээрэй, тэгвэл «VPN эвдэрсэн» тасалбаруудын ихэнх нь буцах зам тухай асуулт болж хувирна.

Дүрэм бүр юуг дахин бичдэг

Эх NAT, ихэвчлэн SNAT гэж бичигддэг, урсгал чиглүүлэгч эсвэл гарцаас гарах үед эх хаягийг өөрчилдөг. Хүлээн авагч үйлчилгээ хөрвүүлсэн хаяг руу хариу өгөх ба хөрвүүлэгч хайрцаг тухайн холболтод хадгалсан төлөвөөр өөрчлөлтийг буцаана. Linux дээр энэ төлөв conntrack дотор амьдардаг тул conntrack -L анхны болон хариу хосуудыг зэрэгцүүлэн хэвлэдэг.

Очих NAT, DNAT, оронд нь очихыг өөрчилдөг. UDP 51820 дээрх нийтийн хаяг руу илгээсэн пакетыг 10.8.0.2:51820 дахь дотоод WireGuard сервер рүү дахин бичиж болно. Гэрийн чиглүүлэгч эсвэл үүлэн ачааллын тэнцвэржүүлэгч VPN сонсогчийг ингэж нийтэлдэг бөгөөд энэ нь туннель дараа нь юу зөөж болох тухай юу ч хэлэхгүй.

Masquerade нь SNAT бүлэгт хамаарна. Дүрэм ямар ч хаяг нэрлэдэггүй; пакет гарах үед гадагшлах интерфейст байгаа хаягийг ашигладаг. Linux түүнд өөрийн зорилгыг өгдөг бөгөөд хаягаа DHCP эсвэл PPPoE-ээс авдаг WAN интерфейс дээр энэ нь ердийн сонголт юм.

Зураглал хаана амьдардаг нь эвдрэлийг тодорхойлно

Хосыг хил бүрт бичээрэй: туннелийн өмнө, дотор нь болон нийтийн интерфейс дээр. Туннелийн доторх бичлэг гаднахыгаас хууль ёсоор ялгаатай бөгөөд хөрвүүлэлт хаана болж байгааг мэдэхгүйгээр хоёрыг харьцуулсан хүн буруу хостны араас хөөцөлдөнө.

Буцах урсгал нь зураглалыг барьж буй төхөөрөмжөөр дамжих ёстой. Хэрэв хариу өөр зам, хоёр дахь дээд суваг, бодлогын зам эсвэл таны хувийн мужийг хэзээ ч сонсоогүй үйлчилгээ үзүүлэгчээр явбал төлөвтэй урвуу хөрвүүлэлт хэзээ ч болохгүй бөгөөд харилцагч нэг чиглэлийн урсгалыг харна. Эх NAT нэмэх нь алдагдсан буцах замыг ховор засдаг; нэг урсгал дээр шинж тэмдгийг нууж, бусад бүх газарт хаягт суурилсан бодлогыг эвдэж болно.

Өөр нэг түгээмэл алдаа бол туннель чиглүүлэлтийн чадвар бий болгоно гэж хүлээх юм. Пакет нь интернет рүү гардаг хувийн харилцагчид хүчинтэй гарах зохион байгуулалт хэрэгтэй: анхдагч зам, дамжуулдаг гарц, ихэвчлэн нийтийн хаяг руу эх хөрвүүлэлт. Зөвхөн шифрлэлт нь хувийн хаягийг хүртээмжтэй болгодоггүй.

Masquerade эсвэл тодорхой SNAT

Хоёулыг амлаж буй зүйлээр нь харьцуулаарай. Masquerade гарах хаягийг сонгодог, тодорхой SNAT түүнийг бэхэлдэг. Тогтвортой нийтийн хаягтай гарц дээр бэхлэлт нь бүртгэл болон түншийн зөвшөөрлийн жагсаалтад нэг урьдчилан таамаглахуйц утга өгдөг. Динамик WAN холбоос дээр бэхэлсэн SNAT хаяг түрээс өөрчлөгдөх мөчид буруу болдог бөгөөд Masquerade яг энэ тохиолдолд зориулж бүтээгдсэн.

Хамрах хүрээ нь сонголттой адил чухал. Гарцаас гарч буй бүх пакеттай тохирох, эх эсвэл очих хязгааргүй Masquerade дүрэм таны хөндөхгүй үлдээхийг хүссэн урсгалыг ч хөрвүүлдэг, бусад хувийн сүлжээ рүү чиглэсэн урсгалыг оролцуулан. Дүрмийг харилцагчийн муж, зорилтот очих болон интерфейсээр хязгаарлаарай.

Бодлогод суурилсан IPsec энд хамгийн хүчтэй хазайдаг. strongSwan-ы дамжуулалтын гарын авлага IP дамжуулалтыг асаах болон харилцагчдад эх NAT дүрэм нэмэхийг алхам алхмаар үзүүлдэг бөгөөд мөн энэ баримт бичиг анхны хаягаа хадгалах ёстой урсгалыг хасаж орхихыг хамардаг. Аюулгүй байдлын бодлого таархаас өмнө эхийг хөрвүүлээрэй, тэгвэл туннель босох боловч урсгал унасаар байна, учир нь пакет цаашид хэлэлцсэн сонгогчтой адил харагдахгүй.

Алслагдсан тал юу харах ёстойг ч шийдээрэй. Хөрвүүлэлтийн дараа үйлчилгээ гарцыг хардаг, тусдаа харилцагчийг биш. Энэ нь буцах чиглүүлэлтийг хялбарчилж, зэрэг бүртгэлийг тэгшлээд харилцагч тус бүрийн зөвшөөрлийн жагсаалтыг үгүй болгоно. Харилцагчийн хаягийг хадгалах нь чухал бол тест давахын тулд нуухын оронд чиглүүлсэн буцах замыг төлөвлөөрэй.

Linux гарц дээр дүрмүүдийг унших

Харилцагчид нь 10.8.0.0/24 дээр, WAN интерфейс нь eth0 нэртэй алсын хандалтын гарцад дамжуулалт асаалттай, урсгалыг зөвшөөрсөн шүүлтүүрийн бодлого байх ёстой, тэгж байж ямар ч NAT дүрэм туслах болно. iptables хувилбар хоёр чиглэлийг nat хүснэгтэд хадгалдаг:

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 51820 \
  -j DNAT --to-destination 10.8.0.2:51820

nftables хэлбэр нь ижил хоёр дэгээг нэрлэсэн интерфейс болон тодорхой гинжтэй ашигладаг:

nft add rule ip nat postrouting ip saddr 10.8.0.0/24 oifname "eth0" masquerade
nft add rule ip nat prerouting iifname "eth0" udp dport 51820 dnat to 10.8.0.2:51820

Хоёр хэсэг нь шүүлтүүрийн гинж дамжуулсан урсгалыг аль хэдийн хүлээн авдаг гэж үздэг. NAT бол зөвшөөрлийн дүрэм биш бөгөөд зөв хөрвүүлсэн пакет нэг хүснэгтийн дараа ч хаягдаж болно. Амьд зураглалыг conntrack -L-аар баталгаажуулж, юу ачаалагдсаныг nft list ruleset эсвэл iptables-save -t nat-аар баталгаажуулаад, хаяг үнэхээр өөрчлөгдөж буйг харахын тулд хоёр интерфейс дээр бичлэг хийгээрэй.

Муу дүрэм мэт харагдах эвдрэлийн горимууд

Үсний тээглүүрийн урсгал бол сонгодог. Серверийн нийтийн хаягаар дотоод серверт хүрдэг дотоод харилцагчид орох замд DNAT, буцаж гарах замд эх хөрвүүлэлт хэрэгтэй, эс бөгөөс сервер харилцагч руу шууд хариулж, хариу нь татгалзагдана. Залруулга нь тэр дотоодоос нийтийн тохиолдолд зориулсан хоёр дахь, илүү нарийн дүрэм бөгөөд бүх зүйлд зориулсан илүү өргөн Masquerade дүрэм биш.

Давхар хөрвүүлэлт бол чимээгүйхэн. Операторын түвшний NAT-ын ард байгаа харилцагч таны гарц руу буцааж чиглүүлэх боломжгүй хаягтай ирдэг тул дахин хөрвүүлдэг. Ажилладаг боловч бүртгэлд одоо хувийн хаяглалтын хоёр үсрэлт байгаа бөгөөд аливаа мөрдөлтөд хоёр зураглал ч хэрэгтэй. Бодлогод суурилсан IPsec гурав дахь эргэлтийг нэмдэг: бодлого таарахаас өмнө хөрвүүлээрэй, тэгвэл урсгал дамжаагүй ч боссон SA гарна, энэ нь NAT-ын бус галт хананы алдаа мэт уншигдана.

Дараа нь давах тест болон бүтэлгүйтэх байршуулалт байна. NAT командыг гараар ажиллуулах нь механизмыг баталдаг, тохиргоог биш. Ажиллах үед нэмсэн дүрэм дахин ачаалах эсвэл дараагийн интерфейсийн үйл явдалд алга болдог, дугаар нь өөрчлөгддөг интерфейстэй холбогдсон Masquerade дүрэм алслагдсан талын харж буй хаягийг чимээгүй өөрчилж болно. Дүрмийг эзэмшиж буй галт хананы тохиргоонд хийж, дахин холбогдсоны дараа дахин шалгаарай.

Дүрмийг хадгалахаас өмнөх шалгах хуудас

Эхлээд чиглэлийг нэрлээрэй: эх, очих эсвэл хоёулаа. Дараа нь төлөвийг хэн барих ёстойг тодорхойлоорой — гарц, дээд чиглүүлэгч эсвэл IPsec түнш — хариу зам түүгээр буцаж ирж буйг баталгаажуулаарай. Дүрмийг үнэхээр санаж буй харилцагчийн муж, очих болон интерфейсээр хязгаарлаж, алслагдсан тал гарцыг эсвэл харилцагчийн анхны хаягийг харах ёстойг урьдчилан шийдээрэй.

Гарцаас биш, харилцагчаас туршаарай. Гарц дээрх хөтөч харилцагчийн хөрвүүлэлтийн дүрмийг бүрэн тойрч болох тул тэнд ажиллаж буй хуудас туннелийн тухай юу ч батлахгүй. Харилцагчаас үүссэн нэг хүсэлт илгээж, тоолуур болон conntrack хүснэгтийг ажиглаад, ажиллаж буй газарт тань аль нэг нь боломжтой бол туннель дахин холбогдсон болон WAN хаяг өөрчлөгдсөний дараа давтаарай.

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