Таны нийтийн Linux үйлчилгээ яагаад VPN-ээр хариулдаг вэ
Орон нутгийн үйлчилгээ eth0 дээр хүлээн авч бүрэн туннельт VPN-ээр хариулж болно. Бүрэн WAN хүснэгттэй эх сурвалжийн дүрэм тэдгээр хариултыг анхны зам дээр байлгана.
Сокерт хүсэлтийг аль интерфейс зөөснийг санадаг зүйл байхгүй тул бүрэн туннельт VPN-ийн анхдагч маршрут WAN-д хамаарах хариултыг барьж чадна. Үйлчилгээ орж ирэх интерфейсийг үл тоомсорлож байгаа юм биш; Linux локалд үүсгэсэн хариултыг хүрэх газар болон эх сурвалжийн бодлогын дагуу чиглүүлдэг. Эх сурвалжид суурилсан дүрэм харин зөвхөн үйлчилгээний хариултыг бүрэн WAN хүснэгтээр илгээж, ердийн гарах урсгалыг туннельд үлдээж чадна. Хариулт буруу замаар гарч байх хооронд порт нээлттэй хэвээр байдаг тул шинж тэмдэг нэг талт харагддаг.
Буруу ойлголт: хариултууд ирсэн интерфейсээ дагадаг
eth0 дээр ирсэн пакет eth0-оор гарна гэдэг логиктой санагддаг. Төлөвгүй пакет шүүлтүүрийг ингэж бичиж болох бөгөөд орж ирэх талын tcpdump хүсэлтийг яг хүлээж байсан газарт нь харуулдаг. Хост өөрөө үүсгэсэн урсгалын хувьд чиглүүлэлт ингэж ажилладаггүй.
Үйлчилгээ холболтыг хүлээн авсны дараа түүний хариулт нь локалд шинээр үүсгэсэн пакет юм. Цөм хариултын хүрэх газар болон эх сурвалжийн чиглүүлэлтийн дүрмийг шалгадаг бөгөөд VPN-ийн анхдагч маршрут бүрэн хүчинтэй хариулт юм. Сокерт хүсэлтийг аль интерфейс зөөснийг санадаг зүйл байхгүй.
Тиймээс шинж тэмдэг нэг талт харагддаг: хүсэлтүүд ирдэг, хариултууд алга болдог. Тиймээс орж ирэх портод галын хананы дүрэм нэмэх нь ч юу ч өөрчлөхгүй. Пакет дотогш явах замд нь хаагдаагүй; гарч явах замд нь өөр тийш чиглүүлэгдэж байна. Хариултыг эх сурвалжаар тодорхойлсон хайлтаар дагавал тойрог зам харагдана.
Цөм яг юуг чиглүүлдэг вэ: эх сурвалжийн хаяг
Танд хэрэгтэй бариул бол үйлчилгээ хариултад ашигладаг локал хаяг юм. eth0 хаяг нь жишээ нь 192.0.2.10/24, гарц нь 192.0.2.1 байх хост дээр тэр хаяг интерфейс дээр байдаг. Үүлэн VM дээр нийтийн хаяг дээд талд хөрвүүлэгдэж, зочинд байхгүй байж болзошгүй тул хост үнэхээр эзэмшдэг хаягийг ашиглана уу.
Хүснэгтийн дугаар эсвэл дүрмийн тэргүүлэх чиглэлийг нөөцлөхөөс өмнө одоогийн төлөвийг шалгана уу. Одоо байгаа бодлогын дүрмүүд шинийг сүүдэрлэж болох бөгөөд ижил дугаартай хуучин хүснэгтэд холбоогүй маршрутууд аль хэдийн байж болно:
ip -4 addr show dev eth0
ip -4 rule show
ip -4 route show table all
Дараа нь эх сурвалжаар хүснэгт сонгоно уу. Дүрэм 192.0.2.10-ыг аль хэдийн зөөж буй хариултуудтай таарч, энэ нь таны чөлөөлөхийг хүсэж буй локалд дууссан урсгал юм. Дамжуулсан урсгал болон бусад локал хаягаас ирсэн пакетууд таарахгүй.
Хагас анхдагч биш, бүрэн буцах хүснэгт байгуулаарай
Зөвхөн анхдагч маршруттай хүснэгт хангалтгүй. Цөм гарцыг шийдэх шаардлагатай хэвээр байгаа бөгөөд энэ шийдэлд ижил хүснэгт дэх холбогдсон префикс хэрэгтэй. Тэр префикс байхгүй хүснэгт анхдагч маршрут нь зөв харагдаж байсан ч гарцыг шийдэх үед бүтэлгүйтдэг. Хоёуланг нь нэмээд, дараа нь эх сурвалжийн дүрмийг хүснэгт рүү чиглүүлнэ үү:
ip -4 route add table 100 192.0.2.0/24 dev eth0 src 192.0.2.10
ip -4 route add table 100 default via 192.0.2.1 dev eth0
ip -4 rule add priority 1000 from 192.0.2.10/32 lookup 100
Жишээг хуулахын оронд бодит префикс болон гарцыг ашиглана уу. On-link гарцтай /32 хэлбэрээр тохируулсан үүлэн интерфейс өөр холбогдсон маршрут шаарддаг бөгөөд буруу префиксээс бүтээсэн хүснэгт эхний үсрэлтэд бүтэлгүйтдэг. src шинж чанар тухайн маршрутын давуу эх сурвалжийг заадаг; энэ нь эх сурвалжийн дүрмийг орлохгүй.
Дараалал ч бас чухал. Бага тэргүүлэх дугаартай өргөн дүрэм эхэлж үнэлэгддэг тул энэ урсгалыг үндсэн хүснэгт рүү буцаах аливаа дүрмээс өмнө эх сурвалжийн дүрэмд хүрэх ёстой. Нэмсний дараа ip rule show-аар тэргүүлэх чиглэлийг шалгана уу, зөвхөн ачаалах үед биш.
Эх сурвалжаар тодорхойлсон хайлтаар баталгаажуулна уу
Цөмд үйлчилгээний хаягаас туршилтын хүрэх газар руу чиглүүлэхийг хүсээрэй. Хариулт нь туннель биш, eth0 болон WAN гарцыг нэрлэх ёстой:
ip -4 route get 198.51.100.25 from 192.0.2.10
Дараа нь шинэ зөвшөөрөгдсөн холболт үүсгэж, хоёр чиглэлийг ажиглаарай. Зөв хүснэгтийг сонгож байхад амьд холболт нь бүтэлгүйтсээр байвал энэ нь хүснэгт биш, харин урвуу замын шүүлт эсвэл галын хананы дүрэм рүү заана. Ямар нэг зүйлийг глобал байдлаар идэвхгүй болгохын өмнө тэдгээр хяналтыг шалгаарай.
Эцсийн маршрутууд болон дүрмийг интерфейсийг эзэмшдэг сүлжээний менежерийн доор байрлуулна уу. Хаягийн өөрчлөлт, DHCP шинэчлэлт, VPN дахин холболт бүгд цөмийн төлөвийг дахин бичдэг бөгөөд гараар нэмсэн дүрэм дараагийн үйл явдлын дараа алга болдог эсвэл хуучрал гарц руу заадаг.
Энэ онцгой тохиолдол хаана зогсдог
Дүрэм нь нэг эх сурвалжийн хаягаас локалд дууссан урсгалыг чөлөөлдөг. Энэ нь Docker-ын нийтэлсэн портууд, DNAT эсвэл хостоор дамжуулсан үйлчилгээг хамардаггүй, учир нь тэдгээр пакетууд дамжуулсан урсгал хэлбэрээр чиглүүлэгддэг бөгөөд хотын локал эх сурвалжийг ижил аргаар хэзээ ч зөөдөггүй. Ийм загварт ихэвчлэн орох хэсэгт тавьсан тэмдэг болон тэр тэмдэгт таарах дүрэм шаардлагатай.
Мөн хостын нийтийн хаягийг интерфейс дээр гаргадаггүй. Дээд талын NAT тэр хаягийг эзэмшиж байвал, хариулт нь тухайн NAT-ын хүлээж буй замаар гарцаар гарах ёстой, тиймээс WAN хүснэгт таамагласан нийтийн хүрээ биш, анхны гарц болон префиксыг тусгах ёстой.
Онцгой тохиолдлыг хүснэгтийн дугаар, дүрмийн тэргүүлэх чиглэл, яг эх сурвалжийн хаягийн хамт баримтжуулж хадгалаарай. VPN эсвэл интерфейсийн дараагийн өөрчлөлт үүнийг чимээгүй эвдэж болох бөгөөд гурван утгыг нэрлэсэн тэмдэглэл нь харилцагчийн тайлангаас шинж тэмдгийг дахин олж илрүүлэхээс хурдан шалгагддаг.
Эх сурвалжаар тодорхойлсон хайлт амжилттай болсны дараа ч үйлчилгээ буруу замаар хариулж байвал амьд сокетийн эх сурвалжийн хаягийг дүрэм дэх хаягтай харьцуулна уу. Wildcard хаягт холбогдсон үйлчилгээ таны туршсан хаягаас өөр эх сурвалж сонгож болох бөгөөд тэр зөрүү нь үлдсэн цоорхой юм.