Нэг VPN клиентийн бүлэгт өөрийн нийтийн хаягийг өгөх ёстой байсан NAT дүрэм тэг пакет дээр зогсож байхад мөнөөх бүлэг буруу эх үүсвэрээр гарсаар байна. Дүрэм ихэвчлэн хаяг дээр биш, интерфейс дээр алдаа гаргадаг. -o eth0:0 байхгүй төхөөрөмжийг заадаг, учир нь eth0:0 хаяг дээр хавсаргасан шошго бөгөөд тэр хаягийн төхөөрөмж eth0 юм. Тоолуурыг харах нь үүнийг батлах хамгийн хурдан арга бөгөөд засвар нь мөрдөн шалгалтын хэлж буйгаас бага.

Цөм төхөөрөмжийг хэрхэн нэрлэдэгийг шалгаарай

Ямар нэг зүйлийг өөрчлөхөөс өмнө хоёр харагдацыг тус тусад нь уншаарай:

ip link show
ip address show dev eth0
ip route get 203.0.113.20

Холбоосын жагсаалт интерфейсүүдийг харуулна. Хаягийн жагсаалт дараах шошгыг агуулсан хоёр дахь IPv4 хаягийг харуулж болно eth0:0, тэр хаягийн төхөөрөмж одоо ч eth0 хэвээр байна. iproute2 хаягийн гарын авлага шошгыг хаягийн нэр гэж үздэг, хоёр дахь холбоос гэж биш, бүх асуудал яг энэ ялгаанд тогтдог.

Түүх будлианыг тайлбарладаг. Хуучин ifconfig eth0:0 синтакс үнэхээр шинэ интерфейс мэт харагдаж байсан бөгөөд тэр үеийн скриптүүд одоо ч үүнийг дурддаг. Одоогийн системд алиас нь хаяг дээрх шошго бөгөөд чиглүүлэлт эсвэл netfilter-ийн замд юу ч үүнийг тусдаа гарах цэг гэж үздэггүй.

Дүрэм яг юутай тохирсныг шалгаарай

Тоолуурыг дүрмийн жагсаалтын хамтаар уншаарай, ой санамжаас биш:

iptables -t nat -L POSTROUTING -v -n --line-numbers

Тохирох урсгал урсаж байхад пакетийн тоолуур тэг дээр зогсож байгаа дүрэм үнэлэгдэхгүй бөгөөд дараахийг нэрлэсэн гарах интерфейсийн нөхцөл eth0:0 нийтлэг шалтгаан юм. Чиглүүлэлтийн сонгосон гарах төхөөрөмж eth0, тиймээс өөр нэр хайсан нөхцөл цөм ямар ч эх хаяг сонгосон бай тэгээс үнэн болохгүй.

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

Төхөөрөмжийг сонгосон чиглүүлэлтийг шалгаарай

Postrouting NAT нь чиглүүлэлт аль хэдийн гарах интерфейсийг сонгосны дараа ажилладаг тул дүрэм дэх интерфейс нь чиглүүлэлтийн сонгосон нь байх ёстой. Цөмөөс шууд асуугаарай ip route get -аар төлөөлөх клиентийн хаягийн хувьд, мөн түүний мэдээлсэн төхөөрөмж ба эх үүсвэрийг хоёуланг нь уншаарай.

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

Орчуулсан эх үүсвэрийг зориуд сонго

Төхөөрөмж зөв болсны дараа эх хаяг нь тусдаа шийдвэр юм. Энэ бол зөвхөн жишээ IPv4 бүлэг ба жишээ хаяг:

iptables -t nat -A POSTROUTING -s 10.8.1.0/24 -o eth0 \
  -j SNAT --to-source 203.0.113.20

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

Эх хаягийг өөрчлөх нь дээд холбоосыг өөрчлөхтэй ижил биш. Жинхэнэ шаардлага өөр физик зам бол чиглүүлэлтийн бодлого эхлээд тэр замыг сонгох ёстой; дараа нь SNAT бодлогын сонгосон төхөөрөмж дээр эх үүсвэрийг дахин бичнэ. Нэмэлт шошго eth0 нэмэх нь зам ч, зөвшөөрөл ч өгөхгүй.

Саяхан нээсэн холболтоор баталгаажуулаарай

Одоо байгаа холболтыг дахин ашиглахгүй, шинэ клиентийн холболт нээгээрэй. Холболтын хяналт урсгал эхлэхэд бүртгэсэн орчуулгыг хадгалдаг тул хуучин сесс өмнөх эх хаягийг үргэлжлүүлэн ашиглаж, зөв шинэ дүрмийг эвдэрсэн мэт харагдуулж болно. Тоолуур өсөхийг ажиглаад, дараа нь орчуулсан эх үүсвэрийг утсан дээр эсвэл алслагдсан төгсгөлд ажиглаарай.

Нэг интерфейсийг хуваалцдаг хэд хэдэн бүлэгт тус бүрд нь тодорхой эх тохирол ба өөрийн орчуулгын хаягийг өгч, галт ханын удирдлаган тохиргоонд байлгаж, ямар дарааллаар үнэлэгддэгийг тэмдэглээрэй. Дараа нь юу баталгаажуулснаа бичээрэй: төхөөрөмжийг ip route get-ээс, хөдөлсөн тоолуурыг, алслагдсан талын харсан эх үүсвэрийг. Тэр бүртгэл шошгын будлианыг давтахгүйгээр дараагийн тайланд хариулна.

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