Mae’r cleient LAN yn cyrraedd ei VPN yn gywir ac eto mae ei ymholiadau DNS yn ymddangos ar y cyswllt esgyn anghywir. Nid yw hynny’n golled yn yr ystyr arferol; dyma’r hyn sy’n digwydd pan fo’r llwybrydd yn rhoi’r gorau i ddanfon ymholiad ac yn ateb ei hun. Mae’r rhyng-gipio yn ailysgrifennu’r cyrchfan i soced lleol, ac yna mae’r datryswr yn agor ail sgwrs, ddigyswllt, gyda’i gyfeiriad ffynhonnell ei hun a’i benderfyniad llwybro ei hun. Mae’r marciau a roddir ar lif y cleient yn disgrifio’r sgwrs gyntaf ac yn gwbl ddim am yr ail.

Nid yw’r marc yn teithio gyda’r ymholiad

Mae marciau pecyn yn byw ar gofnod conntrack ac ar y pecyn sydd ar daith. Mae rheol REDIRECT yn dod â’r daith honno i ben: trosglwyddir y beichusrwydd i soced lleol, ac mae’r cofnod gwreiddiol wedi gwneud ei waith. Yr hyn sy’n gadael y llwybrydd wedyn yw soced ffres a grëwyd gan broses y datryswr, â chyfeiriad y llwybrydd ei hun yn ffynhonnell.

Dyna pam nad yw llwybr polisi wedi’i seilio ar gyfeiriad cleient y LAN byth yn cyfateb i’r ymholiad esgyn. Mae’r soced newydd yn perthyn i dnsmasq yn hytrach na’r cleient, ac mae’r cnewyllyn yn gwerthuso’r llwybr ar gyfer traffig y llwybrydd ei hun. Mae rheolau ffynhonnell, rheolau rhyngwyneb a rheolau marc i gyd yn gweld tuple gwahanol. Tybio bod y marc yn lledaenu yw’r camgymeriad mwyaf cyffredin yn y gosodiad hwn, ac mae’n anweladwy mewn cipiad ar ochr y cleient.

Mae’r ddwy sgwrs yn rhannu enw ac amser, a dyna sy’n gwneud iddynt edrych fel un llif pan fyddwch yn pori cipiad yn gyflym.

Lle mae anfon yn troi’n ddatrysiad lleol

Dechreuwch drwy ganfod a yw porth 53 yn cael ei ailgyfeirio, ei gyfieithu i westeiwr arall, neu ei adael yn llonydd, oherwydd mae’r tri achos yn ymddwyn yn wahanol. Mae ailgyfeirio i borth lleol yn diweddu anfon, tra bod cyfieithu i beiriant arall yn cadw’r pecyn yn symud ac yn cadw tuple’r cleient yn ystyrlon.

Edrychwch ar y ddau brotocol. Bydd datryswr y gellir ei gyrraedd dros UDP a TCP yn cael ei brofi dros y ddau, ac mae set rheolau sy’n cwmpasu UDP yn unig yn gadael twll tawel ar gyfer atebion mawr. Mae rheolau a gynhyrchir gan reolwr cyfluniad y llwybrydd ei hun yn cyfrif hefyd, ac mae golygu ffeil a gynhyrchwyd fel arfer yn colli i’r ail-lwytho nesaf.

sudo nft list ruleset | grep -n -B2 -A4 'dport 53'
sudo iptables -t nat -L -n -v | grep -E ':53|dns'
sudo ss -lunp | grep ':53'

Mae’r allbynnau hynny’n ateb tair cwestiwn yn eu trefn: beth sy’n ailysgrifennu’r ymholiad, beth sy’n ei dderbyn, a pha broses sy’n berchen ar y soced sy’n gwrando. Unwaith y bydd y perchennog yn hysbys, mae gan y polisi esgyn le i fyw.

Rhowch bolisi allanfa ei hun i’r datryswr

Uplink sy’n benodol i barth yw’r offeryn glanaf pan fo dim ond rhai enwau angen y twnnel. Mae dnsmasq yn derbyn llinell server wedi’i chwmpasu i barth, gyda rhyngwyneb neu gyfeiriad ffynhonnell dewisol sy’n gyrru’r ymholiad allan o ddyfais a ddewiswyd. Y gyrru hwnnw sy’n gwneud i’r ail sgwrs ddilyn y VPN.

server=/corp.example/10.30.0.53@tun_work
log-queries

Mae’r parth, y cyfeiriad a’r rhyngwyneb uchod yn ddalwyr lle ar gyfer eich gwerthoedd eich hun. Mae dewis parth a rheoli allanfa yn parhau’n benderfyniadau ar wahân: rhaid i’r llwybr fodoli, rhaid i’r datryswr esgyn ganiatáu’r cyfeiriad ffynhonnell, a rhaid i’r mur tanio ganiatáu’r ateb. Nid yw gyrru rhyngwyneb yn unig yn fail-closed, oherwydd gall twnnel sydd wedi diflannu adael y datryswr yn cwympo i lwybr arall. Cadwch unrhyw wrth gefn cyhoeddus ymhell oddi wrth ofod enwau sy’n rhaid aros yn breifat.

Rhowch y llinell yn nosbarthiad cyfluniad y mae’r llwybrydd yn ei gefnogi yn hytrach nag mewn ffeil a gynhyrchwyd, neu bydd yr ail-lwytho nesaf yn dileu’r atgyweiriad.

Yr hyn na all storfa a rennir ei gadw

Mae un trosglwyddydd ag un storfa yn gwasanaethu pob cleient LAN, ac mae hynny’n dymchwel gwahaniaeth y mae rhai rhwydweithiau ei angen. Os oes rhaid i ddau gleient ddatrys yr un enw’n wahanol, nid oes gan y soced a rennir ffordd i adfer pa gleient a ofynnodd. Rhaid i bolisi fesul cleient fyw mewn achosion datryswr ar wahân neu mewn nodwedd anfon sy’n cadw’r hunaniaeth.

Nid yw ateb wedi’i storio ychwaith yn dystiolaeth am y llwybr newydd. Gall yr ateb ddod o’r cof tra bo’r llwybr esgyn yn parhau’n doredig.

Nid yw rheolau porth 53 yn dweud dim am gymwysiadau sy’n siarad DNS dros HTTPS neu dros TLS. Nid yw’r ymholiadau hynny byth yn cyrraedd yr ailgyfeirio, felly mae polisi a adeiledir ar borth 53 yn unig yn disgrifio is-set o’r traffig ac fe ddylid ei ddogfennu fel is-set.

Gwiriwch yr ail sgwrs, nid yr un gyntaf

Profwch ag un enw a reolwch a gwyliwch y ddwy ochr. Mae cipiad ar ochr y cleient yn profi bod yr ymholiad wedi gadael y LAN; dim ond ochr y llwybrydd sy’n profi i ble yr aeth nesaf.

sudo tcpdump -ni tun_work udp port 53
ip route get 10.30.0.53
dig +short corp.example @10.30.0.53

Fflysjiwch y storfa cyn pob ymgais, oherwydd mae ateb cynnes yn cuddio uplink toredig. Ailadroddwch dros TCP, yna ailadroddwch gyda’r twnnel i lawr i weld beth mae’r datryswr yn ei wneud pan fo ei lwybr a ffefrir wedi mynd. Ymddygiad olaf hwnnw sy’n penderfynu a yw’r dyluniad yn fail-closed neu’n lwcus yn unig.

Erthyglau cysylltiedig