WireGuard DNS DNAT: cadw’r llwybr ateb yn gweithio
Mae DNAT yn ailysgrifennu’r cyrchfan, nid y ffynhonnell. Penderfynwch sut y gall y datryswr uwchraddol ateb cyn ychwanegu’r rheol, a chadwch bob cyfatebiaeth yn gul.
Mae anfon ymholiad DNS cleient WireGuard at ddatryswr gwahanol yn edrych fel un rheol ac yn ymddwyn fel tair penderfyniad. Rhaid ailysgrifennu’r gyrchfan, rhaid anfon y pecyn ymlaen, a rhaid i’r ateb ddod o hyd i’w ffordd yn ôl trwy gyflwr cyfieithu a grëwyd gan y giât. Os hepgorir y trydydd, mae’r ymholiad yn gadael yn lân tra mae’r cleient yn aros am byth.
Cymerwch yr enghraifft o gleientiaid awdurdodedig yn 10.77.0.0/24 yn cyrraedd drwy wg0, yn holi’r cyfeiriad a hysbysebir 10.77.0.1, ac angen datryswr yn 203.0.113.53. Mae’r cyfeiriad uwchraddol yn ddeiliad lle dogfennaeth yn hytrach na gwasanaeth sy’n gweithio.
Mae ailgyfeirio ymholiad yn newid ei gyrchfan yn unig
Mae rheol NAT cyrchfan yn PREROUTING yn ailysgrifennu’r cyfeiriad cyn i’r penderfyniad llwybro gael ei wneud, felly mae’r pecyn wedyn yn cael ei lwybro tuag at y gyrchfan newydd yn lle’r un hen. Nid yw cyfeiriad ffynhonnell y cleient yn cael ei gyffwrdd gan y llawdriniaeth honno. Dyma pam y gall rheol sy’n edrych yn gyflawn gynhyrchu distawrwydd o hyd: mae’r cais nawr yn teithio at ddatryswr nad yw erioed wedi clywed am ystod breifat y cleient. Cyfieithodd y giât un maes ac etifeddu ail broblem.
Mae angen rheolau cyfatebol ar y ddau drafnidiaeth DNS, oherwydd mae cleient yn cwympo’n ôl i TCP pan fydd ateb yn cael ei docio.
Mae’r rheolau isod yn dewis un rhyngwyneb sy’n dod i mewn, un ystod cleientiaid ac un cyfeiriad cyrchfan gwreiddiol. Nid oes dim arall ar y giât yn cael ei effeithio, ac nid yw ymholiad gan y giât ei hun yn cyfateb o gwbl.
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -i wg0 -s 10.77.0.0/24 -d 10.77.0.1 -p udp --dport 53 -j DNAT --to-destination 203.0.113.53:53
iptables -t nat -A PREROUTING -i wg0 -s 10.77.0.0/24 -d 10.77.0.1 -p tcp --dport 53 -j DNAT --to-destination 203.0.113.53:53
Mae’r llwybr ateb yn benderfyniad ar wahân
Mae dau drefniant yn gadael i’r ateb ddychwelyd, ac mae dewis un yn gynnar yn arbed sesiwn dadfygio. Naill ai mae gan y datryswr uwchraddol lwybr yn ôl i 10.77.0.0/24 drwy’r giât hon, neu mae’r giât yn cyfieithu’r ffynhonnell ar egress fel bod yr ateb yn cyrraedd cyfeiriad y mae’r uwchraddol yn ei wybod yn barod. Mae’r ddau’n gweithio; dim ond un sy’n cyfateb i’r rheolaeth sydd gennych dros yr uwchraddol.
Mae llwybro’n haeddu’r cynnig cyntaf, oherwydd mae’n cadw cyfeiriad y cleient yn weladwy i’r datryswr ac yn osgoi ail haen gyfieithu. Pan fydd yr uwchraddol y tu allan i’ch rheolaeth, cyfieithu’r ffynhonnell ar y rhyngwyneb egress penodol yw’r dewis ymarferol.
Cwmpaswch y cyfieithu hwnnw mor dynn â’r ailgyfeirio, neu bydd y rheol yn dod yn NAT pwrpas cyffredinol ar gyfer unrhyw beth sy’n digwydd cyfateb iddi:
iptables -t nat -A POSTROUTING -s 10.77.0.0/24 -d 203.0.113.53 -o eth0 -p udp --dport 53 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.77.0.0/24 -d 203.0.113.53 -o eth0 -p tcp --dport 53 -j MASQUERADE
Mae olrhain cysylltiadau yn cadw’r mapio’n barau, felly mae’r ateb yn cael ei ailysgrifennu’n ôl i dwpl gwreiddiol y cleient ar y ffordd i mewn. Heb y rheol egress, mae’r datryswr yn anfon ei ateb tuag at gyfeiriad preifat na all gyrraedd, ac mae’r cleient yn gweld goramser yn hytrach na gwall.
Ysgrifennwch y rheolau’n gulach nag y mae’r dasg yn edrych
Mae caniatâd anfon ymlaen yn perthyn i’r un cwmpas. Caniathewch y llif o’r cleient i’r datryswr a’r traffig dychwelyd y mae conntrack yn ei adnabod yn barod, yn hytrach na derbyn pob cysylltiad DNAT ar y blwch. Mae derbyniad blanced hefyd yn awdurdodi anfoniadau porth nad oes ganddynt ddim i’w wneud â DNS.
Mae datryswr y giât ei hun yn llwybr cod gwahanol. Mae ymholiad a gyhoeddir yn lleol yn mynd drwy OUTPUT, felly nid yw profi o gragen y giât yn arfer na’r rheol PREROUTING na’r polisi anfon ymlaen. Dyna pam y gall prawf lleol lwyddo tra mae pob cleient yn methu, ac mae’r gwrthwyneb yr un mor gyffredin.
Nid yw dim yma yn cwmpasu DNS dros HTTPS ar borth 443 na DNS dros TLS ar borth 853, ac nid yw’n cwmpasu IPv6. Bydd cleient sydd â datryswr IPv6 wedi’i ffurfweddu yn anwybyddu’r trefniant cyfan yn llawen.
Beth mae ymholiad newydd yn ei brofi
Mae olrhain cysylltiadau yn cofio mapiadau cynharach, felly gall ymholiad a anfonwyd cyn newid rheol gael ei ateb o’r hen gyflwr a gwneud i’r rheol newydd edrych yn doredig. Dechreuwch â phorth ffynhonnell newydd a, lle mae’r cleient yn storio atebion, ag enw newydd.
dig @10.77.0.1 example.com A +short
conntrack -L -p udp --dport 53 | head
Mae’r gorchymyn cyntaf yn dangos a yw llwybr y cleient yn datrys o gwbl, ac mae’r ail yn dangos y cyfieithiad a osododd y giât mewn gwirionedd, gan gynnwys dau gyfeiriad y twpl. Mae mapio sy’n pwyntio at y datryswr cywir gyda chyfrifydd atebion wedi sticio ar sero yn broblem llwybr dychwelyd yn hytrach na phroblem hidlo.
Cadarnhewch fod y datryswr yn gwybod yr enwau rydych yn eu disgwyl cyn ailgyfeirio unrhyw beth. Mae Amnewid sy’n ateb enwau cyhoeddus ond nid eich parth preifat yn troi chwiliad sy’n gweithio yn NXDOMAIN sy’n edrych fel twnnel toredig. Profwch y datryswr yn uniongyrchol, o’r giât, cyn i lwybr y cleient fod yn rhan o’r peth. Ac mae cyfeirnod estyniadau iptables yn dogfennu semanteg DNAT a masquerade y mae’r rheolau hyn yn dibynnu arnynt.