nftables скуп који храни DNS ка WireGuard-у: како функционише предаја
DNS одговор може хранити nftables скуп, али скуп не рутира ништа. Пратите четири предаје и три животна века који одлучују да ли ће усмеравање радити.
Имена се разрешавају у адресе, а те адресе могу завршити у скупу заштитног зида који касније утиче на рутирање, што омогућава усмеравање по имену без проксија. Зачкољица је у томе што четири компоненте морају исправно да предају: разрешивач, скуп, класификатор који означава нови ток и партнер који га носи. Свака предаја не успева на други начин и свака држи своје време.
Третирајте дизајн као ланац, а не као конфигурацију. Питање на сваком кораку је која компонента поседује одлуку и шта се дешава када њен улаз недостаје.
Шта DNS одговор може, а шта не може
dnsmasq може да копира адресе из одговора у nftables скуп, што је храњење, а не одлука о рутирању. Та опција, документована у приручнику dnsmasq, наводи фамилију, табелу и скуп, а њен водећи 4# бира само A записе, па је за v6 одредишта потребно сопствено уређење. Скуп мора већ да постоји, јер разрешивач додаје елементе у нешто што је створио власник заштитног зида. Ништа у том кораку не бира интерфејс, табелу или партнера.
Клијент такође мора да користи тај разрешивач за име. Апликација са сопственим шифрованим DNS-ом или кеширан одговор од пре постојања политике повезује се без стварања било ког уноса у скупу.
Скуп је улаз, а не рута
Елемент у скупу је услов подударања. Нешто мора да га погледа, одлучи да овај пакет започиње нови ток и примени политику која ток шаље кроз тунел. На Linux-у то обично значи излазну путању способну за рутирање која може да постави ознаку, правило које означене пакете шаље у посебну табелу и руту у тој табели према WireGuard уређају. Само чланство не инсталира ништа од тога.
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
Партнер примењује другу проверу покривености коју људи заборављају. WireGuard шифрује пакет само за партнера чије дозвољене адресе укључују одредиште, па рута по политици у интерфејс није довољна када листа партнера искључује тај префикс. Држите листу под контролом власника рутирања уместо да се ослањате на то какво ће стварање рута менаџер случајно да изведе.
Ознаке, табеле и покривеност партнера
Ознаке су заједнички именски простор, па и вредност и маска морају бити усаглашене са свим другим што их користи. Правило које означени саобраћај шаље у посебну табелу захтева дефинисан исход када та табела нема одговарајућу руту, јер неодговорена претрага може да настави на следеће правило и пошаље пакет напоље кроз физички интерфејс. Подразумевана рута типа blackhole унутар посебне табеле претвара тај тихи бег у видљиво одбацивање. Оно што дизајн још не може јесте да се затвори при отказу за одредиште које никада није ушло у скуп.
Сопствени спољни пакети тунела морају да избегну класификатор. WireGuard алати дају ознаку сокета управо у ту сврху, а њено коришћење спречава да се инкапсулација рутира назад у интерфејс који гради.
Тестирајте сваки животни век одвојено
Три складишта старе по три распореда: кеш разрешивача, елементи скупа и праћена веза. Тестирајте их тим редом и гледајте да ли се свако помера када треба. Команде испод читају разрешивач, скуп, табелу веза и правила политике без икаквих измена.
dig +short office.example
nft list set inet vpn_select office_v4
conntrack -L -d 10.60.8.15
ip rule show
Свежа претрага која додаје елемент доказује да храњење ради, док застарео елемент који надживи свој одговор представља неслагање животног века које вреди записати. Нова веза у табели веза са очекиваном ознаком показује да је класификатор радио, а стара веза која задржава првобитну ознаку је исправно понашање, а не грешка. Листа правила одговара на питање да ли претрага политике уопште постоји, што је друго питање од онога да ли се поклопила. Прочитајте четири излаза тим редом и неуспела предаја ће се сама одати.
Када је захтев да одређено име увек користи једну путању, скуп храњен DNS-ом то не може да докаже, јер заједничке адресе носе и друга имена. Прокси или механизам на нивоу апликације је алат за такву гаранцију.