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

Нэг ажил, хоёр механизм

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

PropertyTeardown scriptFirewall unit
Runs when the client is killedNoYes
Needs privilege at teardown timeUsually yesConfigured once, at boot
Acts on the whole machineOften, including recovery pathsOnly on the flows it matches

Тэр хүснэгт бол бүхэл маргаан. Зөвхөн цэвэр хаалтын үед ажилладаг скрипт таныг хамгийн бага төвөгшүүлсэн тохиолдлыг хамардаг; чухал тохиолдол бол сүйрэл эсвэл сүлжээ алга болох бөгөөд аль нь ч цэвэр унтраалт өгдөггүй.

Унтраах дэгээ юу хийж чадах, юу хийж чадахгүй

Баримтжуулсан загвар сүлжээний интерфэйсүүдийг тойрч, loopback-аас бусад бүгдийг буулгадаг. Физик төхөөрөмж буусан үед туннелиас гадагш юу ч зугтаж чадахгүй бөгөөд энэ нь яг зорилго юм.

#!/bin/sh
for dev in /sys/class/net/*; do
  name=$(basename "$dev")
  [ "$name" = lo ] || ip link set dev "$name" down
done

Энэ нь мөн локал сүлжээ, машины эзэмшдэг аливаа үйлчилгээ болон асуудлыг засахад ашиглах замыг буулгадаг. Зөөврийн компьютер дээр утасгүй төхөөрөмжийг дараа нь гараар солих шаардлагатай болдог тул богино тасалдал засварын сесс болдог. Бүр муу нь, дэгээд эдгээрийн аль нэгийг хийхийг зөвшөөрөхгүй байж болно: клиент эрхээ өгөхөд унтраах скрипт эрхгүй бүртгэлээр ажиллаж, интерфэйсийн өөрчлөлт бүр хэн ч лог уншихгүй байх тэр мөчид бичигдсэн зөвшөөрлийн алдаатай бүтэлгүйтдэг.

Дэгээнд итгэхээс өмнө клиент хэрхэн эхэлдгийг шалгаарай. root-оор гараар ажиллуулахад ажилладаг скрипт ачаалалтын үед эхэлдэг үйлчилгээний талаар юу ч батлахгүй.

Firewall дүрэм юуг өөрөөр хийдэг

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

Үнэ нь дүрмийг хост машины firewall эзэмшигч бичиж, арчлах ёстой бөгөөд тэр нь клиентийн бодитоор үүсгэдэг туннель төхөөрөмжийг нэрлэх ёстой. Энэ нь дүрэм болон профайлыг хамт арчлах ёстой гэсэн үг; нэр солигдсон интерфэйс бүгдийг блоклож, юу ч тайлбарладаггүй firewall үлдээдэг.

Аль ч механизм нөгөөг нь илүүдэл болгодоггүй. Засварын дараа хэзээ ч дахин ачаалагддаггүй firewall дүрэм хэзээ ч ажилладаггүй скрипт шиг л зохиомол.

persist-tun завсарлага байгаа эсэхийг шийднэ

Туннель төхөөрөмж тасралтыг даван туулбал түүн рүү чиглэсэн маршрутууд ч бас даван туулна. Тэгэхэд урсгал дахин чиглүүлэхийн оронд хаягддаг тул анхдагч маршрут физик гарц руу буцаж унахгүй. Ямар ч firewall дүрэм оролцохоос өмнө алдагдлыг магадлал багатай болгодог нь яг энэ зан төлөв юм.

Энэ тохиргоогүйгээр төхөөрөмж маршрутуудын хамт устдаг бөгөөд анхдагч маршрут дахин физик гарц руу зааж болно. Тийм болох эсэх нь платформ болон клиентээс хамаардаг тул төлөвийг таамаглахгүй, ажиглах ёстой. Тохиргоог kill switch-ийн хэсэг гэж үзээрэй, гүйцэтгэлийн сонголт гэж биш.

Дахин холбогдох замыг амьд байлгаад, дараа нь дөрвөн төлөвийг туршина уу

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

ip route add 198.51.100.20/32 via 192.168.0.1 dev wlan0

Дараа нь шошгыг биш, төлөвүүдийг шалгаарай. Дөрвөн мөчийг санаатайгаар туулаарай: туннельгүй хүйтэн эхлэл, эрүүл сесс, хэн ч шаардаагүй тасралт, сэргэсний дараах сесс. Мөч бүрт анхдагч маршрутыг уншиж, гарах хаяг нь харагдах нэг хүсэлт илгээ. Туннель буусан үед бууж өгдөг програм мэйл клиент эсвэл шинэчлэгчийн талаар юу ч хэлдэггүй тул сүүлийн шалгалтыг нэг арын дэвсгэр програмтай давтаарай. Дүрэм, интерфэйсийн нэрс, сэргээх алхмуудыг бичиж үлдээгээрэй, учир нь хэн ч шалгаж чадахгүй kill switch бол зүгээр л цуу яриа.

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