Унтраах скрипт эсвэл firewall дүрэм: алдагдлыг аль нь зогсоох вэ?
Холболт тасрах үед интерфэйсийг буулгах нь бүдүүлэг бөгөөд ихэвчлэн эрхгүй ажилладаг. Тасралтыг даван туулж, завсрыг хаадаг firewall дүрэмтэй харьцуулна уу.
Хоёр загвар нэг л зүйлийг амладаг: туннель унах үед, юу ч нээлттэй байдлаар гадагш гарахгүй. Нэг нь унтраах үед скрипт ажиллуулж интерфэйсүүдийг огтолдог. Нөгөө нь firewall дүрмийг хүчинтэй үлдээж, VPN клиентээс юу ч шаарддаггүй. Тэд хэн үйлдэх эрхтэй, завсарлагааны үед юу болох, дараа нь машин хэрхэн дахин сүлжээнд орох зэргээр ялгаатай. Тэднийг энэ гурван цэгээр харьцуулах нь аль нь чанга вэ гэж маргахаас илүү ашигтай.
Нэг ажил, хоёр механизм
Профайл скрипт ажиллуулахыг зөвшөөрвөл клиент туннель босох үед болон унтраах үед дэгээ ажиллуулж болно. Тэр дэгээ клиентийн амьдралын мөчлөгийн дотор, холболт хаагдаж буй яг тэр мөчид ажилладаг. Харин firewall дүрэм системд хамаарах бөгөөд клиент ажиллаж байна уу, унасан уу, аллагдсан уу гэдэг нь түүнд хамаагүй.
| Property | Teardown script | Firewall unit |
|---|---|---|
| Runs when the client is killed | No | Yes |
| Needs privilege at teardown time | Usually yes | Configured once, at boot |
| Acts on the whole machine | Often, including recovery paths | Only 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 бол зүгээр л цуу яриа.