Mae ffôn yn ymuno â sbot y Pi, yn cael cyfeiriad, ac mae'r dudalen yn dal i fethu. Mae'r Pi yn rhedeg cynorthwyydd sbot, Pi-hole a chleient VPN, ac mae pob un yn credu ei fod yn berchen ar ran o'r llwybr. Mae'r rhan fwyaf o'r adeiladau hyn yn methu nid oherwydd bod cydran wedi torri, ond oherwydd bod dwy gydran yn gwneud yr un gwaith. Neilltuwch un perchennog i bob swyddogaeth cyn tiwnio unrhyw un ohonynt.

Neilltuwch un perchennog i bob swyddogaeth

Mae pedair swyddogaeth yn bwysig yma, ac mae angen union un perchennog ar bob un. Mae'r tabl isod yn enwi'r swyddogaeth, perchennog ymarferol a'r hyn sy'n mynd o'i le pan fydd dau wasanaeth yn hawlio'r un.

FunctionWorkable ownerDuplicate-owner symptom
Client addressesOne DHCP server, such as the hotspot helperCompeting offers and changing leases
DNS receptionPi-hole on port 53Bind failure or queries answered by the wrong process
Forwarding and NATOne firewall managerDouble translation and broken return paths
VPN routingOne client configurationRoute flapping and traffic escaping outside the tunnel

Mae'r gorgyffwrdd fel arfer yn dod un pecyn ar y tro. Mae cynorthwyydd y sbot yn gosod ei enghraifft dnsmasq ei hun, mae Pi-hole eisiau porth 53, ac mae cleient VPN yn ychwanegu llwybrau. Mae pob cam yn edrych yn rhesymol ar ei ben ei hun, ac gyda'i gilydd maent yn creu peiriant lle mae'r ail wasanaeth i gychwyn yn newid ymddygiad y cyntaf yn dawel.

Ysgrifennwch y perchnogion i lawr cyn galluogi unrhyw beth arall. Mae tabl byr yn y nodiadau adeiladu yn atal gosodiad diweddarach rhag cymryd swyddogaeth oedd eisoes â pherchennog.

Dewiswch un amrediad a'i gadw i ffwrdd o'r tiwnel

Dewiswch amrediad y sbot, cyfeiriad y Pi arno, pwll DHCP a'r cynhyrfydd y mae'r cleientiaid yn ei gael. Cadwch yr amrediad hwnnw ar wahân i'r LAN uwch ac i amrediad tiwnel VPN, oherwydd mae isrwyddi gorgyffwrdd yn troi problem lwybro yn brosiect cyfieithu cyfeiriadau. Mae amrediad sy'n gorgyffwrdd â'r tiwnel yn gwneud y Pi yn lwybrydd damweiniol rhwng dau ragosodiad unfath. Ysgrifennwch yr amrediad a'r pwll i ffurfweddiad y sbot yn lle eu gadael i ragosodiad diofyn.

Os yw modd rhannu NetworkManager yn berchen ar y sbot, archwiliwch y cysylltiad effeithiol cyn ychwanegu gweinydd DHCP. Mae modd rhannu yn cychwyn ei gynorthwywyr ei hun ac yn galluogi anfon, felly mae eisoes yn berchennog y cynllun cyfeiriadau ar gyfer y rhyngwyneb hwnnw. Mae ychwanegu ail weinydd oherwydd ei fod ar gael yn creu cynigion cystadleuol yn hytrach nag ailgyflenwad.

Penderfynwch am IPv6 yn fwriadol. Mae hysbysiadau llwybrydd a DHCPv6 mewn llawer o drefniadau yn dod o gynorthwyydd gwahanol i DHCPv4, ac mae gadael IPv6 ymlaen tra bo polisi VPN yn cwmpasu IPv4 yn unig yn rhoi llwybr i gleientiaid sy'n osgoi'r tiwnel. Naill ai cynlluniwch ochr IPv6 neu ei analluogi ar ryngwyneb y sbot gyda rheswm ysgrifenedig.

Pwy sy'n ateb ar borth 53 mewn gwirionedd

Rhestrwch bob proses sy'n gwrando ar borth 53 cyn newid ffurfweddiad. Ar Pi sy'n rhedeg stub cynhyrfydd lleol, Pi-hole a chynorthwyydd rhannu, y rhestr wrando yw'r unig fap dibynadwy o pwy sy'n ateb ymholiadau:

sudo ss -lunpt '( sport = :53 )'
ip -4 addr show
ip route

Mae canllaw rhyngwynebau Pi-hole yn esbonio y gall modd derbyn sy'n gyfyngedig i un rhyngwyneb ddefnyddio soced codennol o hyd a gwrthod dyfodiadau mewn mannau eraill. Nid yw hyn yr un peth â rhwymo rhyngwynebau dethol yn unig, sef y drefn a fwriedir pan fo'n rhaid i wasanaeth DNS arall rannu'r peiriant.

Yn arferol ni all dau broses rwymo'r un cyfeiriad a phorth, er y gall SO_REUSEPORT wneud rhwymiad rhannol yn llwyddiannus; hyd yn oed wedyn gall gwrandäwr codennol gymryd dyfodiadau a fwriadwyd ar gyfer y gwasanaeth culach. Dewiswch y modd dogfennol ar gyfer y rôl a ddymunwch ac ailgychwyn y gwasanaethau yn y drefn a fwriadwyd.

Cadwch dudalen weinyddu Pi-hole oddi ar rwydwaith y sbot. Mae cleientiaid angen cynhyrfydd, nid y rhyngwyneb gwe na'r API a all newid ffurfweddiad y cynhyrfydd.

Dwy goes DNS, un polisi yr un

Mae ymholiad cleient yn teithio o'r ffôn i'r Pi, ac mae ymholiad ar wahân yn teithio o'r Pi i'w cynhyrfydd uwch. Nid yw rheol lwybro sy'n cyfateb i draffig sbot a anfonir ymlaen yn gymwys yn awtomatig i'r ail goes, oherwydd mae'r Pi yn cynhyrchu'r traffig hwnnw'n lleol. Os yw'r VPN i fod i gario DNS, mae angen polisi ei hun ar y llwybr lleol.

Gwyliwch am ddolen. Mae pwyntio cynhyrfydd uwch Pi-hole at gyfeiriad y mae'r Pi ei hun yn ei wasanaethu, yn uniongyrchol neu drwy anfon porth, yn cynhyrchu ymholiadau sy'n cylchu nes iddynt ddod i ben. Rhowch gynhyrfydd uwch go iawn iddo neu anfonydd amodol ar gyfer y parthau na all eu hateb.

Penderfynwch beth sy'n digwydd pan fydd y tiwnel yn cwympo. Mae dychwelyd at y cynhyrfydd lleol yn cadw pori yn fyw ond gall ollwng enwau y tu allan i'r VPN; mae blocio yn cadw'r polisi'n gyfan ac yn troi'r methiant yn wall gweladwy. Mae'r naill ddewis a'r llall yn amddiffynadwy, ond rhaid ei ddewis yn hytrach na'i etifeddu o ragosodiad diofyn.

Profwch y llwybr a'r ymddygiad methiant

Profwch mewn haenau: mae'r cleient yn cael cyfeiriad, mae'r cleient yn datrys enw drwy'r Pi, mae'r Pi yn datrys drwy'r cynhyrfydd uwch a fwriadwyd, ac mae cymhwysiad yn cwblhau cais. Nid yw ping llwyddiannus yn dweud dim am DNS, ac nid yw chwiliad llwyddiannus yn dweud dim am anfon.

dig @192.168.70.1 example.com
curl -sS -o /dev/null -w '%{http_code}\n' https://example.com/
ip -4 route get 1.1.1.1

Yna stopiwch y tiwnel ac ailadroddwch. Dylai'r ymddygiad a fwriadwyd ymddangos o fewn ychydig eiliadau, nid ar ôl ailgychwyn â llaw Pi-hole neu wasanaeth y sbot. Gwiriwch osodiad cynhyrfydd y cleient yn ystod y methiant, oherwydd bydd cynhyrfydd cyhoeddus eilaidd yn parhau i ateb hyd yn oed pan oedd y polisi'n disgwyl methiant.

Cadwch un perchennog ar gyfer anfon a NAT a'i wirio o gleient, nid o'r Pi ei hun. Mae cais sy'n gadael y Pi yn llwyddiannus yn dal i gael ei ollwng ar y ffordd yn ôl, a'r cleient yw'r unig le lle mae'r llwybr cyfan yn weladwy.

Erthyglau cysylltiedig