Miks päris tulemüür kodus muudab mängu
Mulle meeldib omada oma võrgu üle päriselt kontrolli.
Mitte ainult selles mõttes, et saan Wi-Fi parooli muuta või DHCP serveris IP-aadresse reserveerida, vaid selles mõttes, et saan ise otsustada, milline liiklus minu võrgust välja pääseb, milliseid teenuseid seadmed kasutada tohivad ja milliseid mitte.
Just siin tuleb minu arvates kõige paremini välja erinevus tavalise teenusepakkuja ruuteri ja päris tulemüüri vahel.
Minu koduvõrgu gateway on pfSense. See jookseb väikesel AliExpressist tellitud passiivjahutusega mini-PC-l, millel on Intel N100 protsessor, 8 GB RAM-i ja neli gigabitist võrguliidest.
Midagi väga erilist selles riistvaras ei ole, aga võimalused, mida pfSense mulle annab, on hoopis teine maailm.
DNS server oli olemas, aga sellest sai mööda minna
Minu koduvõrgus täidab DNS serveri rolli Technitium DNS.
Mul on kaks Technitiumi serverit, mis töötavad clusterina, ning DHCP kaudu saavad kliendid mõlema serveri aadressid.
Technitium tegeleb lisaks tavapärasele DNS lahendamisele ka reklaamide, telemeetria ja muu soovimatu sisu blokeerimisega. Samuti olen DNS tasemel blokeerinud Apple Private Relay kasutamise.
Olen oma DNS lahendusest eraldi pikemalt kirjutanud siin:
Kõik tundus ilus, kuni tekkis üks väga lihtne küsimus.
Mis juhtub siis, kui mõni seade lihtsalt ignoreerib DHCP kaudu saadud DNS servereid?
Näiteks võib mõnel IoT seadmel olla sisse hardcode'itud:
8.8.8.8
8.8.4.4
Samuti võib kasutaja ise arvutis DNS serveri käsitsi ära muuta.
Sellisel juhul võib seade minu Technitiumist lihtsalt mööda minna.
Ehk siis DNS server võib olla ideaalselt seadistatud, aga kui klient seda kasutada ei taha, ei ole sellest palju kasu.
DHCP soovitab, firewall jõustab
Siin tulebki mängu pfSense.
pfSense võimaldab teha DNS redirecti ehk püüda kinni kõik klientide DNS päringud, mis lähevad TCP või UDP pordile 53, ning suunata need automaatselt minu lokaalsesse DNS serverisse.
Näiteks klient arvab, et teeb päringu:
Client -> 8.8.8.8:53
aga pfSense teeb taustal:
Client
|
| DNS -> 8.8.8.8:53
v
pfSense
|
| NAT Redirect
v
Technitium DNS
Kliendi jaoks toimub kõik läbipaistvalt.
Ta võib arvata, et kasutab Google DNS-i, aga tegelikult jõuab päring ikkagi minu Technitiumi serverisse ja sellele rakenduvad minu DNS poliitikad.
Just sellised võimalused meeldivad mulle päris tulemüüri puhul kõige rohkem.
Ma ei pea lootma sellele, et iga seade minu võrgus käitub täpselt nii, nagu ma soovin.
Ma saan tulemüüri tasemel määrata poliitika.
Kuidas reegel tehtud on?
pfSense'is asub see:
Firewall -> NAT -> Port Forward
Põhimõte on järgmine:
Interface: LAN / VLAN
Protocol: TCP/UDP
Source: local network
Destination: kõik peale minu DNS serverite
Destination port: 53
Redirect target: Technitium DNS
Redirect port: 53
Oluline on välistada minu enda DNS serverid, sest nende liiklust ei ole vaja uuesti redirectida.
Kõik muu püütakse kinni.
Client -> Technitium:53 = lubatud
Client -> 8.8.8.8:53 = redirect
Client -> 1.1.1.1:53 = redirect
Client -> ISP DNS:53 = redirect

pfSense'il on selle lahenduse jaoks olemas ka ametlik juhend:

DNS over TLS blokeerisin lihtsalt ära
Lisaks pordile 53 võib DNS liiklus minna ka DNS over TLS kaudu pordile 853.
Seda ma redirectima ei hakanud.
Minu võrgust välja minevad TCP ja UDP pordi 853 ühendused on lihtsalt tulemüüris blokeeritud.
TCP/UDP 53 -> redirect Technitium DNS-i
TCP/UDP 853 -> block
DNS over HTTPS on eraldi teema, kuna see kasutab tavaliselt HTTPS liiklust pordil 443 ja seda ei saa nii lihtsalt ühe firewall reegliga eristada.
Aga minu eesmärk siin ei olnud ehitada täiesti läbimatut süsteemi.
Eesmärk oli eemaldada lihtne võimalus kasutada minu võrgus suvalist klassikalist DNS serverit.
Kõige lihtsam test
Seda saab väga lihtsalt kontrollida.
Linuxis näiteks:
dig @8.8.8.8 google.com
või:
dig @1.1.1.1 google.com
Päring töötab.
Aga kui vaatan Technitiumi query logi, on sama päring seal olemas.
Ehk klient küsis enda arvates Google'i DNS serverilt, aga tegelikult vastas minu lokaalne DNS.




Minu arvates on see päris hea näide sellest, mida tähendab kontroll oma võrgu üle.
Ja just sellepärast meeldib mulle pfSense
Sarnaseid näiteid on minu koduvõrgus veel.
Saan VLAN-ide vahel täpselt määrata, kes kellega suhelda võib.
Saan teatud seadmete liikluse policy-based routing'u abil läbi Mullvad VPN tunneli saata.
Saan blokeerida teenuseid, protokolle või terveid sihtvõrke.
Saan kasutada aliaseid, NAT reegleid, WireGuardi, packet capture'it ja vaadata state table'it.
Ehk tulemüür ei ole minu jaoks lihtsalt kast, mis teeb NAT-i ja annab internetti.
See on koht, kus defineerin oma võrgu poliitika.
Kas teenusepakkuja ruuteriga saaks sama teha?
Mõne mudeliga võib-olla midagi saab.
Aga enamiku ISP ruuterite puhul on võimalused üsna piiratud.
Võid muuta Wi-Fi nime.
Võid teha mõne port forwardi.
Võid muuta DHCP seadeid.
Aga proovi teha näiteks läbipaistvat DNS redirecti, policy-based routing'ut, keerulisemaid VLAN reegleid või saata ainult valitud seadmete liiklus WireGuardi tunneli kaudu.
Tõenäoliselt jõuad üsna kiiresti piiranguteni.
Minu pfSense jookseb odaval N100 mini-PC-l ja sellest piisab koduvõrgu jaoks rohkem kui küll.
Kui sulle meeldib võrgundus või homelab, siis korralik tulemüür on minu arvates üks parimaid investeeringuid.
Mitte tingimata sellepärast, et sul oleks seda hädasti vaja.
Vaid sellepärast, et saad lõpuks ise otsustada, kuidas sinu võrk töötab.
Ja kui oled kord harjunud sellega, et saad enda võrgus päriselt poliitikaid jõustada, on üsna raske tagasi minna ruuteri juurde, mille ainus ülesanne on lihtsalt „internetti anda”.