Kill switch í beininum sem nær yfir FORWARD, OUTPUT og IPv6
Kill switch aðeins í FORWARD lætur beininn leka frjálslega, og reglur aðeins fyrir IPv4 láta IPv6 vera opið. Raðaðu keðjunum og prófaðu með göngin niðri.
Þú skráir þig inn í beininn, límir inn kill switch reglusett úr færslu á spjallborði, og staðarnetið hættir að vafra um leið og göngin falla. Tveimur dögum síðar er beininn enn að uppfæra sína kviku DNS-færslu um venjulega WAN-ið, og gestafartölvan nær enn IPv6-síðum. Báðar hegðanir eru eðlilegar, því límdu reglurnar náðu yfir eina keðju og eina vistfanga-fjölskyldu, og hvorugt þeirra er allur beininn. Að ganga um pakkaleiðirnar í röð sýnir nákvæmlega hvað var sleppt.
Byrjaðu á beininum, ekki fartölvunni
Stefna á beina-stigi er aðlaðandi fyrir lítið skrifstofu því hvert tæki fyrir aftan hana erfir sömu hegðun og enginn getur gleymt að kveikja á rofa hjá biðlaranum. Hún gefur þér líka einn stað til að prófa eftir hverja fastbúnaðaruppfærslu. Það sem hún gefur þér ekki er sjálfvirk þekja á eigin umferð beinsins eða annarri vistfanga-fjölskyldu, og það eru tvær eyður bak við flestar misheppnaðar uppsetningar.
Áður en þú breytir einhverju skaltu skrifa þrjár staðreyndir á pappír: nafn WAN-tengisins, nafn LAN-brúarinnar og vistfang og port VPN-endapunktsins. Þú munt þurfa öll þrjú í reglunum, og að giska á nöfn tengja er algengasta ástæðan fyrir því að reglusett sem lítur rétt út gerir ekkert.
Farðu í gegnum þrjár leiðir sem pakki getur tekið
Umferð frá fartölvu til internetsins er send áfram, svo hún fer í gegnum FORWARD-keðjuna. Umferð sem beininn býr sjálfur til, svo sem DNS-framleiðsla, NTP-fyrirspurnir, DDNS-uppfærslur og stjórnrás VPN, fer í gegnum OUTPUT. Stjórnunumferð sem er beint að beininum kemur í gegnum INPUT.
Kill switch sem byggður er aðeins í FORWARD verndar því biðlara og ekkert annað. Taflan sýnir hvers vegna lekið í upphafssenunni er fyrirsjáanlegt en ekki ráðgáta.
| Packet path | Example | Chain that sees it |
|---|---|---|
| LAN client to WAN or tunnel | Browser request | FORWARD |
| Router-originated | DDNS update, NTP | OUTPUT |
| Addressed to the router | SSH from the LAN | INPUT |
Í flestum hönnunum þarftu ekki kill switch á INPUT, en þú verður að halda stjórnunaraðgangi gangandi meðan göngin eru niðri. Annars keyrir þú á skrifstofuna með stjórnborðssnúru í fyrsta skipti sem VPN-ið bregst.
Raðaðu reglunum svo göngin geti enn komist upp
Virkandi kill switch er leyfislisti sem endar á höfnun, og röðin er það sem gerir hann að kill switch frekar en múrsteini. Leyfðu fyrst loopback, VPN-endapunktinn, svör fyrir núverandi flæði og göngutengið; hafnaðu restinni síðast.
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
Endapunkturinn verður að vera vistfang á þessum stað, ekki hýsilnafn. Þegar endanleg höfnun lokar DNS er ekki lengur hægt að leysa reglu sem nefnir hýsilnafn þjónustuaðilans, og göngin ræsa aldrei aftur eftir endurræsingu. Ef þjónustuaðilinn skiptir um endapunkta skaltu leysa nafnið áður en stefnan er beitt og endurnýja þá reglu úr sama skriftunni.
Endurtekja formið í FORWARD fyrir umferð biðlara, og setja skýra stjórnunarreglu fyrir ofan höfnunina. Haltu þeirri stjórnunarreglu þröngri en aðgengilegri, og staðfestu hana með því að opna aðra SSH-lotu áður en þú lokar þeirri fyrstu. Að læsa sig úti meðan kill switch er breytt er nógu algengt til að skipuleggja fyrir því. Á beini sem keyrir WireGuard ákvarða allowed-ips jafningsins hvað fer inn í göngin, en þessar reglur ákvarða hvað má fara út án þeirra.
IPv6 þarf eigin hurð
Allt hér að ofan er IPv4. Ef staðarnetið þitt er með virkt IPv6 og göngin flytja aðeins IPv4, hefur hvert þakið tæki enn beina leið á internetið sem nýju reglurnar þínar sjá aldrei. Tvíhlaða fartölva mun gjarnan velja hana, og kill switch mun aðeins virðast bilaður fyrir þann sem prófar með IPv4.
ip6tables -A FORWARD -i br-lan -j REJECT
ip6tables -A OUTPUT -o eth0 -j REJECT
ip6tables -A OUTPUT -o lo -j ACCEPT
Röðin skiptir líka máli hér: leyfið fyrir loopback verður að koma á undan höfnun WAN, annars byrja staðbundnar þjónustur á beininum að bila á undarlegan hátt. Ef netið notar IPv6 alls ekki er einfaldara að slökkva á því á WAN og LAN og skilur ekkert eftir til að gleyma.
Sumir VPN-biðlarar setja upp sjálfgefna leið aðeins fyrir IPv4 og láta fyrirliggjandi IPv6-sjálfgefnu leiðina ósnerta. Athugaðu leiðartöfluna eftir að göngin hafa tengst í stað þess að gera ráð fyrir að biðlarinn hafi séð um það.
Sannaðu það með göngin niðri
Stöðvaðu göngin frá beininum og prófaðu frá þremur stöðum í þessari röð:
# 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
Leiðaruppflettingin segir þér hvert pakki myndi fara, og teljararnir segja þér hvort reglurnar þínar hafi einhvern tímann passið. Regla með núll pakka eftir misheppnað próf verndar ekkert, og venjulega orsökin er tengjanafn sem er öðruvísi en það sem þú skrifaðir. Prófaðu umferð sem beininn býr til sérstaklega, því próf frá LAN-hlið getur ekki æft OUTPUT.
Ákveddu bilaða haminn áður en þú þarft á honum að halda. Fail-closed heldur biðlurum ótengdum þar til göngin koma aftur; fail-open endurheimtir venjulegan WAN-aðgang og eyðileggur tilganginn fyrir þá umferð sem þér þótti vænt um. Blackhole-leið að VPN-pottinum með háu mæligildi er gagnlegt annað lag fyrir fail-closed hönnun, þar sem hún lifir af þegar gönguleiðin hverfur í stað þess að falla aftur á sjálfgefnu leiðina.
Samþykktu uppsetninguna aðeins þegar LAN-biðlari, beiðni sem beininn býr til og IPv6-beiðni mistakast öll með göngin niðri, og öll þrjú virka aftur þegar þau eru komin upp.