Чиглүүлэгчид нэвтэрч, форумын нийтлэлээс kill switch дүрмийн багц хуулж тавихад туннель унасан тэр мөчид LAN хөтлөхөө болино. Хоёр хоногийн дараа ч чиглүүлэгч динамик DNS бичлэгээ ердийн WAN-аар шинэчилсээр байгаа бөгөөд зочны зөөврийн компьютер IPv6 сайтуудад хүрсээр байна. Хоёр зан үйл хоёулаа хэвийн, учир нь хуулсан дүрмүүд нэг гинж, нэг хаягийн гэр бүлийг хамарсан бөгөөд аль нь ч бүхэл чиглүүлэгч биш юм. Багцын замуудыг дараалан туулах нь юу орхигдсоныг яг харуулна.

Зөөврийн компьютерээс биш, чиглүүлэгчээс эхэл

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

Ямар нэг зүйлийг өөрчлөхөөс өмнө цаасан дээр гурван баримт бич: WAN интерфэйсийн нэр, LAN гүүрний нэр, мөн VPN-ийн төгсгөлийн цэгийн хаяг ба порт. Гурвыг чинь дүрмүүдэд хэрэгтэй бөгөөд интерфэйсийн нэр таамаглах нь зөв харагдах дүрмийн багц юу ч хийдэггүйн хамгийн түгээмэл шалтгаан юм.

Багц явж болох гурван замыг туул

Зөөврийн компьютерээс интернэт рүү гарах урсгал дамжуулагддаг тул FORWARD гинжээр дамждаг. Чиглүүлэгчийн өөрөө үүсгэдэг урсгал, жишээлбэл DNS дамжуулалт, NTP асуулга, DDNS шинэчлэл, VPN-ийн удирдлагын суваг OUTPUT-оор дамждаг. Чиглүүлэгч рүү хаягласан удирдлагын урсгал INPUT-ээр орж ирдэг.

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

Packet pathExampleChain that sees it
LAN client to WAN or tunnelBrowser requestFORWARD
Router-originatedDDNS update, NTPOUTPUT
Addressed to the routerSSH from the LANINPUT

Ихэнх загварт INPUT дээр kill switch хэрэггүй, гэхдээ туннель унтарсан үед удирдлагын нэвтрэлтийг ажиллагаатай байлгах хэрэгтэй. Эс бөгөөс VPN анх удаа бүтэлгүйтэхэд консолын кабель бариад оффис руу явна.

Туннель өсөх боломжтой байхаар дүрмийг эрэмбэл

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

iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -d 198.51.100.7 -p udp --dport 51820 -j ACCEPT
iptables -A OUTPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o wg0 -j ACCEPT
iptables -A OUTPUT -o eth0 -j REJECT

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

Клиентийн урсгалд зориулж хэлбэрийг FORWARD дээр давтаж, татгалзалын дээр тодорхой удирдлагын дүрэм байрлуул. Тэр удирдлагын дүрмийг нарийн боловч хүрч болохуйц байлгаж, эхний SSH сессийг хаахаас өмнө хоёр дахь сессийг нээж баталгаажуул. Kill switch солих үед өөрийгөө гадагш түгжих нь төлөвлөхөд хангалттай түгээмэл. WireGuard ажиллуулж буй чиглүүлэгч дээр хамтрагчийн allowed-ips нь туннельд юу орохыг шийддэг бол эдгээр дүрэм нь түүнгүйгээр юу гарч болохыг шийддэг.

IPv6-д өөрийн хаалга хэрэгтэй

Дээрх бүхэн IPv4. Хэрэв таны LAN ажиллаж буй IPv6-той бөгөөд туннель зөвхөн IPv4 зөөдөг бол хамарсан төхөөрөмж бүр таны шинэ дүрмүүд хэзээ ч хардаггүй интернэт рүү шууд замтай хэвээр байна. Хос стект зөөврийн компьютер үүнийг дуртайяа илүүд үзэх бөгөөд kill switch нь IPv4-ээр туршиж буй хүнд л эвдэрхий харагдана.

ip6tables -A FORWARD -i br-lan -j REJECT
ip6tables -A OUTPUT -o eth0 -j REJECT
ip6tables -A OUTPUT -o lo -j ACCEPT

Энд ч дараалал чухал: loopback-ийн зөвшөөрөл WAN-ийн татгалзалаас өмнө байх ёстой, эс бөгөөс чиглүүлэгч дээрх локал үйлчилгээнүүд хачин байдлаар бүтэлгүйтэж эхэлнэ. Хэрэв сүлжээ IPv6-г огт ашигладаггүй бол WAN болон LAN дээр унтраах нь илүү энгийн бөгөөд мартах зүйл үлдэхгүй.

Зарим VPN клиент зөвхөн IPv4-д зориулж өгөөмөр маршрут суулгаж, одоо байгаа IPv6 өгөөмөр маршрутыг хөндөхгүй үлдээдэг. Туннель холбогдсоны дараа чиглүүлэлтийн хүснэгтийг шалга, клиент үүнийг шийдсэн гэж бүү бод.

Туннель унтарсан үед үүнийг батал

Туннелийг чиглүүлэгчээс зогсоож, гурван газраас энэ дарааллаар турш:

# systemctl stop wg-quick@wg0
# ip route get 203.0.113.1
# curl -m 5 -sS http://example.com || echo blocked
# iptables -vnL OUTPUT | head
# ip6tables -vnL OUTPUT | head

Маршрутын хайлт нь багц хаашаа явахыг хэлж, тоолуурууд нь таны дүрмүүд хэзээ нэгэн цагт тохирсон эсэхийг хэлнэ. Бүтэлгүй туршилтын дараа тэг багцтай дүрэм юу ч хамгаалахгүй бөгөөд түгээмэл шалтгаан нь таны оруулсан интерфэйсийн нэрээс өөр интерфэйсийн нэр юм. Чиглүүлэгчийн үүсгэсэн урсгалыг тодорхой турш, учир нь LAN талаас хийсэн туршилт OUTPUT-ыг ажиллуулж чадахгүй.

Бүтэлгүйтлийн горимыг хэрэгтэй болохоос өмнө шийд. Fail-closed нь туннель буцаж ирэх хүртэл клиентүүдийг офлайн байлгана; fail-open нь ердийн WAN нэвтрэлтийг сэргээж, танд чухал байсан урсгалын зорилгыг устгана. Өндөр метрик бүхий VPN-ийн пул руу чиглэсэн blackhole маршрут нь fail-closed загварт хэрэгтэй хоёр дахь давхарга бөгөөд туннелийн маршрут алга болоход өгөөмөр маршрут руу буухын оронд амьд үлддэг.

LAN клиент, чиглүүлэгчийн үүсгэсэн хүсэлт, IPv6 хүсэлт гурвуулаа туннель унтарсан үед бүтэлгүйтэж, туннель өсөхөд гурвуулаа дахин ажиллаж байж л тохиргоог хүлээн зөвшөөр.

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