Mae gennych ddau gyswllt uwch, ac mae ip -6 route show yn argraffu'r un naid nesaf ar y ddau: default via fe80::1 dev uplink0 a default via fe80::1 dev uplink1. Nid yw hyn yn wrthdaro cyfeiriadau dyblyg, ac nid yw copïo'r naid nesaf noeth fe80::1 i dabl polisi yn dweud wrth y cnewyllyn pa gyswllt a olygwch. Mae'r cwestiwn go iawn yn gulach nag y mae'r symptom yn ei awgrymu: a oes angen un cyswllt neu'r ddau ar yr ail dabl, a beth sy'n cadw'r llwybrau hynny'n fyw ar ôl ailgychwyn. Mae tair amod, wedi'u gwirio yn eu trefn, yn setlo'r rhan fwyaf.

Mae'r un fe80::1 yn ddau gymydog gwahanol

Mae cyfeiriadau link-local wedi'u cyfyngu i un cyswllt, felly nid un cyfeiriad wedi'i argraffu ddwywaith yw fe80::1; dau gymydog ydyn nhw sy'n digwydd rhannu ôl-ddodiad. Y mynegrif parth yw sut mae gwesteiwr yn dweud pa un a olyga, felly mae fe80::1%uplink0 a fe80::1%uplink1 yn gyrchfan wahanol i'r cnewyllyn, ac nid yw'r ôl-ddodiad hwnnw byth yn teithio i lwybrydd pell. RFC 4007 yn disgrifio'r model parth y tu ôl i hyn, a dyna pam fod yn rhaid i dabl polisi gario dyfais gyda phob naid nesaf link-local.

Mae generadur cyfluniad VPN sy'n copïo ID parth rhifol o un gwesteiwr i dempled yn trin cyd-destun lleol fel pe bai'n rhan o'r cyfeiriad, ac mae'r ffeil y mae'n ei hysgrifennu yn anghywir ar bob peiriant y mae enwau neu fynegryr ei ryngwynebau'n wahanol. Nid yw tabl polisi chwaith yn uno dau gyswllt yn un: mae VPN wedi'i lwybro'n trosglwyddo pecynnau rhwng rhwydweithiau, ond nid yw'n cario hunaniaeth link-local cymydog Ethernet pell drwy'r twnnel, felly mae traffig link-local yn aros ar ei gyswllt ei hun.

Tynnwch y ddyfais ac mae'r llwybr yn mynd yn anysgrifenedig. Nid yw ip -6 route add default via fe80::1 table 200 yn gallu datrys y porth, ac mae iproute2 yn ei wrthod gyda Error: Nexthop has invalid gateway. Ychwanegwch dev uplink0 ac mae'r gorchymyn yn llwyddo, oherwydd y ddyfais sy'n pinio'r naid nesaf i un o'r ddau gymydog. Yr hyn na all y ddyfais ei ddweud wrthych yw ai uplink0 yw'r cyswllt cywir ar gyfer y tabl hwn, ac mae llwybr a gopïwyd o westeiwr arall yn dod ag enwau rhyngwyneb y gwesteiwr hwnnw gydag ef, a dyna lle mae'r gwallau go iawn yn dod.

Amod un: un cyswllt neu ddau yn y tabl

Dechreuwch gyda beth yw pwrpas yr ail gyswllt uwch. Os yw'r ddau gyswllt yn cario'r un traffig ac mae un yn wrth gefn, dylai'r tabl arall ddal y ddau borth â metrigau gwahanol: yr un cyrchfannau, un llwybr a ffefrir, un ail ddewis amlwg. Os yw'r cysylltiadau uwch yn bodoli oherwydd bod traffig gwahanol yn gorfod gadael drwy wahanol ddarparwyr, neu oherwydd mai twnnel hollt yw hwn lle mae rhywfaint o draffig yn osgoi'r VPN tra bod y gweddill yn aros y tu mewn, nid yw'r dau gyswllt yn perthyn i un tabl o gwbl. Maen nhw'n perthyn i ddau dabl, a ddewisir gan reol, ac mae'r reol yn dewis y tabl, nid y twnnel: mae traffig sy'n osgoi yn cael ei farcio cyn ei lwybro, a'r marc sy'n ei anfon i'r ail dabl.

Yn yr ail achos mae'r reol yn penderfynu pryd y ceisir tabl, ac mae'r llwybr yn penderfynu i ble mae'r pecyn yn mynd wedyn:

ip -6 rule add fwmark 0x2 table 201
ip -6 route add default via fe80::1 dev uplink1 metric 100 table 201
ip -6 route add 2001:db8:100::/48 dev uplink1 metric 100 table 201
ip -6 route show table 201

Nid yw'r naill wrthrych yn cymryd lle'r llall, ac mae tabl sy'n dal dim ond llwybr diofyn yn dal yn gallu methu datrys ei borth. Os gwrthodir ychwanegiad, neu fod y llwybr yn bresennol ond yn anfudol, rhowch y rhagddodiad cysylltiedig ar gyfer y rhyngwyneb hwnnw yn yr un tabl, neu farciwch y naid onlink pan fydd y rhagddodiad hwnnw'n cael ei lwybro yn rhywle arall. Yn y bloc uchod mae 2001:db8:100::/48 yn cymryd lle'r rhagddodiad cysylltiedig hwnnw ar uplink1, nid cyrchfan fympwyol. Dim ond marc y mae rhywbeth arall yn gorfod ei osod y mae'r rheol fwmark yn ei defnyddio, o reol nftables neu iptables ar y llwybr anfon neu o SO_MARK ar y soced, felly nid yw bloc a gopïwyd heb ffynhonnell marc yn cyfateb i ddim.

Amod dau: nid yw metrigau'n canfod darparwr marw

Mae metrig yn hoffter ymhlith llwybrau sy'n bodoli, nid yn archwiliad iechyd. Pan fydd y cludwr yn cwympo, mae'r cnewyllyn yn tynnu'r llwybrau ar y ddyfais honno ac mae'r ail lwybr diofyn yn cymryd drosodd. Pan fydd y cebl yn aros i fyny ac mae'r darparwr y tu ôl iddo'n marw, nid oes dim yn newid yn y tabl: mae'r llwybr a ffefrir wedi'i osod, mae'r cymydog yn cyrraedd ar haen 2, ac mae pecynnau'n gadael i mewn i dwll du. Os yw'r gwahaniaeth hwnnw'n bwysig i'ch sefydliad, rhaid i'r failover ddod o rywbeth sy'n profi'r llwybr ac yn tynnu'r llwybr, boed yn ddaemon llwybro neu'n sgript fach sy'n dileu ac yn ailosod y cofnod.

Gwirwch y dewis ar ôl adeiladu'r tabl, a gwirio fel y bydd y cnewyllyn yn ei weld. Mae ip -6 route get 2001:db8:100::1 yn argraffu'r llwybr a ddefnyddid, gan gynnwys y ddyfais a'r cyfeiriad ffynhonnell a ddewiswyd, ac mae'n parchu rheolau polisi. Cyfeiriad ffynhonnell sy'n perthyn i'r cyswllt uwch anghywir yw'r arwydd arferol bod rheol wedi cyfateb yn gynt nag y gwnaethoch chi ddisgwyl.

Amod tri: penderfynwch pwy sy'n berchen ar y dyfalbarhad

Mae llwybr a ychwanegwyd gyda ip -6 route add yn goroesi nes ailgychwyn neu nes bydd rhywbeth yn ei fflysio. Mae llwybr diofyn a ddysgwyd o hysbysebion llwybrydd yn cario oes a gall y llwybrydd ei dynnu'n ôl, tra nad yw llwybr diofyn a ychwanegwyd â llaw byth yn dod i ben ar ei ben ei hun. Cymysgu'r ddau mewn un tabl yw'r ffordd y mae llwybr parhaol hen yn gorchfygu un newydd ei hysbysebu, ymhell ar ôl i'r cyswllt uwch a ddisgrifiai roi'r gorau i fodoli.

Dewiswch un perchennog fesul tabl. Os yw rheolwr rhwydwaith neu ddaemon llwybro eisoes yn rheoli'r rhyngwyneb, disgrifiwch y llwybr polisi yno a gadewch y cnewyllyn yn llonydd. Os ydych chi'n sgriptio, gwnewch y sgript yn idempotent ac ysgrifennwch y datgymaliad ar yr un pryd, oherwydd bydd arnoch ei angen yn ystod y newid drwg cyntaf:

ip -6 route flush table 201
ip -6 rule del fwmark 0x2 table 201

Ar lwybrydd sy'n anfon ar ran gwesteiwyr eraill, gwiriwch net.ipv6.conf.all.forwarding cyn beio'r tabl. Gydag anfon wedi'i ddiffodd, mae pecynnau sy'n gyfeiriedig at rwydwaith arall yn cael eu gollwng, waeth pa mor gywir yw tabl 201.

Cofnodwch y dyluniad fel y gall y person nesaf ei archwilio

Mae rhestr sy'n storio dim ond fe80::1 yn taflu i ffwrdd y meysydd sy'n bwysig. Cofnodwch y gyrchfan, y naid nesaf, y ddyfais, y tabl a'r metrig gyda'i gilydd, ynghyd â lle daeth pob llwybr — wedi'i hysbysebu, wedi'i gynhyrchu gan reolwr neu'n statig. Pan fydd rhywun wedyn yn gofyn a yw'r ail gyswllt uwch mewn gwirionedd yn cario traffig, mae'r cofnod hwnnw'n ateb y cwestiwn heb ddyfalu.

Cyn i chi alw'r tabl yn orffenedig, cadarnhewch y cymydog gyda ip -6 neigh show dev uplink0, ailddarllenwch ip -6 rule show am ddamweiniau trefniant, a phrofwch â thraffig sy'n cyfateb i'r reol yn lle ping sy'n cymryd y llwybr diofyn. Yna tynnwch un cyswllt uwch i lawr yn fwriadol a gwyliwch ba lwybr y mae'r cnewyllyn yn cwympo'n ôl iddo; dylai'r ateb gyfateb i'r un a ysgrifennwyd gennych.

Erthyglau cysylltiedig