Nammen losse op yn adressen, en dy adressen kinne yn in fjoermuorsk-set bedarje dy't letter routing beynfloedet, wat namme-basearre stjoering sûnder proxy mooglik makket. De fâns is dat fjouwer komponinten goed oerdrage moatte: de oplosser, de set, de klassifisearjer dy't in nije stream markearret, en de partner dy't it draacht. Eltse oerdracht mislearret oars en elk hâldt syn eigen tiid.

Behannelje it ûntwerp as in keatling, net as in konfiguraasje. De fraach by elke stap is hokker komponint de beslissing hat en wat der bart as syn ynfier ûntbrekt.

Wat it DNS-antwurd wol en net kin

dnsmasq kin adressen út antwurden yn in nftables-set kopiearje, wat in fieding is en gjin routingbeslissing. Dy opsje, dokumintearre yn de dnsmasq-hânlieding, neamt de famylje, de tabel en de set, en syn liedende 4# kiest allinnich A-records, dus v6-bestimmingen hawwe har eigen regeling nedich. De set moat al bestean, want de oplosser foeget eleminten ta oan eat dat de eigner fan 'e fjoermuorre makke hat. Nimt yn dy stap neat in ynterface, in tabel of in partner.

De kliïnt moat ek dy oplosser foar de namme brûke. In applikaasje mei eigen fersifere DNS, of in cache-antwurd fan foar't it belied bestie, ferbynt sûnder ien elemint yn 'e set te meitsjen.

De set is in ynfier, gjin rûte

In elemint yn in set is in oerienkommingsbetingst. Earne moat dernei sjen, beslute dat dit pakket in nije stream begjint, en it belied tapasse dat de stream troch de tunnel stjoert. Op Linux betsjut dat meastal in rûte-begiftige útgongspaad dat in mark sette kin, in regel dy't markearre pakketten nei in tawijde tabel stjoert, en in rûte yn dy tabel nei it WireGuard-apparaat. Allinnich lidmaatskip ynstallearret dêr neat fan.

nft add set inet vpn_select office_v4 { type ipv4_addr\; }
ip rule add fwmark 0x40 table 200
ip route add default dev wg0 table 200
wg show wg0 allowed-ips

De partner past in twadde dekkingskontrôle ta dy't minsken ferjitte. WireGuard fersiferet in pakket allinnich foar in partner waans tastiene adressen de bestimming omfetsje, dus in beliedsrûte yn it ynterface is net genôch as de list fan 'e partner dat foarheaksel útslút. Hâld de list ûnder kontrôle fan 'e routingeigner ynstee fan te fertrouwen op hokker rûte-oanmeitsjen de behearder ek docht.

Marken, tabellen en partnerdekking

Marken binne in dielde nammromte, dus sawol de wearde as it masker moat ôfstimd wêze mei al it oare dat se brûkt. In regel dy't markearre ferkear nei in tawijde tabel stjoert, hat in definiearre útkomst nedich as dy tabel gjin oerienkommende rûte hat, want in ûnbeäntwurde opfreage kin trochgean nei de folgjende regel en it pakket by it fysike ynterface útstjoere. In blackhole-standertrûte yn 'e tawijde tabel makket dy stille ûntsnapping ta in sichtbere drip. Wat it ûntwerp noch net kin, is tichtslaan by falen foar in bestimming dy't nea yn 'e set kaam.

De eigen bûtenste pakketten fan 'e tunnel moatte de klassifisearjer ûntkomme. WireGuard-ark biede dêrfoar krekt in soketmark oan, en it brûken dêrfan hâldt de ynkapseling tsjin dat dy weromrûtelet wurdt yn it ynterface dat it bout.

Test elk libbensdiel apart

Trije bewarplakken ferâldzje neffens trije skema's: de cache fan 'e oplosser, de eleminten fan 'e set en de folge ferbining. Test se yn dy folchoarder en sjoch oft elk beweecht as it moat. De kommando's hjirûnder lêze de oplosser, de set, de ferbiningstabel en de beliedsregels sûnder eat te feroarjen.

dig +short office.example
nft list set inet vpn_select office_v4
conntrack -L -d 10.60.8.15
ip rule show

In farske opfreage dy't in elemint tafoeget, bewiist dat de fieding wurket, wylst in ferâldere elemint dat syn antwurd oerlibbet in libbensdiel-misferhâlding is dy't it opskriuwen wurdich is. In nije ferbining yn 'e ferbiningstabel mei de ferwachte mark docht bliken dat de klassifisearjer rûn, en in âlde ferbining dy't syn oarspronklike mark hâldt, is korrekt gedrach en gjin flater. De regellist antwurdet oft de beliedsopfreage oft it bestiet, wat in oare fraach is as oft dy oerienkaam. Lês de fjouwer útfiersels yn dy folchoarder en de mislearre oerdracht ferriedt himsels.

Wêr't de eask is dat in beskate namme altyd ien paad brûkt, kin in DNS-fiede set dat net bewize, want dielde adressen drage ek oare nammen. In proxy of in meganisme op applikaasjenivo is it ark foar dy garânsje.

Relatearre artikelen