Pagruruta ng Patakaran ng IPv6 Kapag Dalawang Uplink ang Nagbabahagi ng fe80::1
Maaaring ipakita ng dalawang uplink ang parehong fe80::1 na susunod na hop sa magkaibang link. Pumili ng isang talahanayan kada patakaran, pagmamay-ari ang mga habang-buhay, at i-verify sa isang paghahanap ng ruta.
Mayroon kang dalawang uplink, at ip -6 route show ay naglilimbag ng parehong susunod na hop sa dalawa: default via fe80::1 dev uplink0 at default via fe80::1 dev uplink1. Hindi ito salungatan ng doble na address, at ang pagkopya ng hubad na susunod na hop fe80::1 sa isang talahanayan ng patakaran ay hindi nagsasabi sa kernel kung aling link ang ibig mong sabihin. Ang tunay na tanong ay mas makitid kaysa sa ipinahihiwatig ng sintomas: kailangan ba ng pangalawang talahanayan ng isang link o dalawa, at ano ang nagpapanatili sa mga rutang iyon na buhay pagkatapos ng reboot. Tatlong kondisyon, na sinusuri nang sunud-sunod, ang nagtatapos sa karamihan.
Ang parehong fe80::1 ay dalawang magkaibang kapitbahay
Ang mga link-local na address ay saklaw ng isang link lamang, kaya fe80::1 ay hindi isang address na nailimbag nang dalawang beses; ito ay dalawang kapitbahay na nagkataong nagbabahagi ng suffix. Ang zone index ay ang paraan ng host para sabihin kung alin ang ibig sabihin, kaya fe80::1%uplink0 at fe80::1%uplink1 ay magkaibang destinasyon sa kernel, at ang suffix na iyon ay hindi kailanman naglalakbay sa isang malayong router. RFC 4007 ay naglalarawan ng zone model sa likod nito, at iyon ang dahilan kung bakit ang isang talahanayan ng patakaran ay kailangang magdala ng device kasama ng bawat link-local na susunod na hop.
Ang isang generator ng configuration ng VPN na kumokopya ng numeric na zone ID mula sa isang host papunta sa isang template ay itinuturing ang lokal na konteksto na parang bahagi ito ng address, at ang file na isinusulat nito ay mali sa bawat makina na ang mga pangalan o index ng interface ay naiiba. Hindi rin pinagsasama ng isang talahanayan ng patakaran ang dalawang link sa isa: ang naka-rutang VPN ay nagpapasa ng mga packet sa pagitan ng mga network, ngunit hindi nito dinadala ang link-local na pagkakakilanlan ng malayong Ethernet na kapitbahay sa kabila ng tunel, kaya ang link-local na trapiko ay nananatili sa sarili nitong link.
Alisin ang device at ang ruta ay hindi na maisusulat. ip -6 route add default via fe80::1 table 200 ay hindi malutas ang gateway, at tinatanggihan ito ng iproute2 nang may Error: Nexthop has invalid gateway. error. Idagdag ang dev uplink0 at magtatagumpay ang utos, dahil ang device ang nagtatali ng susunod na hop sa isa sa dalawang kapitbahay na iyon. Ang hindi masasabi ng device ay kung ang uplink0 ay ang tamang link para sa talahanayang ito, at ang rutang kinopya mula sa ibang host ay nagdadala ng mga pangalan ng interface ng host na iyon, at doon nagmumula ang tunay na mga pagkakamali.
Kondisyon isa: isang link o dalawa sa talahanayan
Magsimula sa kung para saan ang pangalawang uplink. Kung ang dalawang link ay nagdadala ng parehong trapiko at ang isa ay standby, dapat taglayin ng alternatibong talahanayan ang dalawang gateway na may magkaibang metric: parehong destinasyon, isang ginustong landas, isang malinaw na ikalawang pagpipilian. Kung ang mga uplink ay umiiral dahil ang magkaibang trapiko ay dapat lumabas sa magkaibang provider, o dahil ito ay isang split tunnel kung saan ang ilang trapiko ay lumalampas sa VPN habang ang natitira ay nananatili sa loob, ang dalawang link na iyon ay hindi kabilang sa isang talahanayan. Nabibilang sila sa dalawang talahanayan, na pinipili ng isang tuntunin, at pinipili ng tuntunin ang talahanayan, hindi ang tunel: ang lumalampas na trapiko ay minamarkahan bago ito iruta, at ang markang iyon ang nagpapadala nito sa pangalawang talahanayan.
Sa ikalawang kaso, pinagpapasyahan ng tuntunin kung kailan sasangguni ang isang talahanayan, at pinagpapasyahan ng ruta kung saan pupunta ang packet pagkatapos:
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 201Walang bagay ang pumapalit sa isa pa, at ang talahanayang may default lamang ay maaari pa ring mabigong malutas ang gateway nito. Kung tinanggihan ang pagdaragdag, o may ruta ngunit hindi magamit, ilagay ang connected prefix ng interface na iyon sa parehong talahanayan, o markahan ang hop bilang onlink (kapag ang prefix na iyon ay niruruta sa ibang lugar). Sa bloke sa itaas, ang 2001:db8:100::/48 ay kumakatawan sa connected prefix na iyon sa uplink1, hindi sa isang arbitraryong destinasyon. Ang tuntuning fwmark ay kumokonsumo lamang ng markang kailangang itakda ng ibang bagay, mula sa isang tuntunin ng nftables o iptables sa landas ng pagpapasa o mula sa SO_MARK sa socket, kaya ang blokeng kinopya nang walang pinagmulan ng marka ay walang natutugma.
Kondisyon dalawa: hindi natutukoy ng metric ang patay na provider
Ang metric ay isang pagpili sa mga rutang umiiral, hindi isang pagsusuri sa kalusugan. Kapag bumagsak ang carrier, inaalis ng kernel ang mga ruta sa device na iyon at ang pangalawang default ang pumapalit. Kapag nananatiling buhay ang cable at namatay ang provider sa likod nito, walang nagbabago sa talahanayan: nakalagay ang ginustong ruta, naaabot ang kapitbahay sa layer 2, at lumalabas ang mga packet sa isang itim na butas. Kung mahalaga ang pagkakaibang iyon sa iyong setup, ang failover ay dapat magmula sa isang bagay na nagsisiyasat sa landas at nag-aalis ng ruta, maging isang routing daemon iyon o isang maliit na script na nagtatanggal at naglalagay muli ng entry.
I-verify ang pagpili pagkatapos maitayo ang talahanayan, at i-verify ito sa paraang makikita ito ng kernel. ip -6 route get 2001:db8:100::1 ay naglilimbag ng rutang gagamitin, kasama ang device at ang napiling source address, at iginagalang nito ang mga tuntunin ng patakaran. Ang source address na kabilang sa maling uplink ay karaniwang palatandaan na tumugma ang isang tuntunin nang mas maaga kaysa sa inaasahan mo.
Kondisyon tatlo: magpasya kung sino ang may-ari ng pagpapanatili
Ang rutang idinagdag sa pamamagitan ng ip -6 route add ay nananatili hanggang sa reboot o hanggang may maglinis nito. Ang default na natutunan mula sa mga anunsyo ng router ay may habang-buhay at maaaring bawiin ng router, samantalang ang default na manu-manong idinagdag ay hindi kailanman nagwawakas nang sarili. Ang paghahalo ng dalawa sa isang talahanayan ang paraan kung paano nagiging mas mataas ang isang lipas na permanenteng ruta kaysa sa sariwang inanunsyo, matagal pagkatapos na wala na ang uplink na inilarawan nito.
Pumili ng isang may-ari kada talahanayan. Kung ang isang tagapamahala ng network o routing daemon ay namamahala na sa interface, ilarawan doon ang rutang patakaran at hayaang payapa ang kernel. Kung ginagawa mo ito sa script, gawin itong idempotent at isulat ang teardown sa parehong oras, dahil kakailanganin mo ito sa unang masamang pagbabago:
ip -6 route flush table 201
ip -6 rule del fwmark 0x2 table 201Sa isang router na nagpapasa para sa ibang host, bago sisihin ang talahanayan, suriin ang net.ipv6.conf.all.forwarding . Kapag patay ang pagpapasa, ang mga packet na naka-address sa ibang network ay itinatapon gaano man kawasto ang talahanayan 201.
Itala ang disenyo upang ma-audit ito ng susunod na tao
Ang isang imbentaryo na nag-iimbak lamang ng fe80::1 ay nagtatapon ng mga field na mahalaga. Itala nang sabay ang destinasyon, ang susunod na hop, ang device, ang talahanayan at ang metric, at maging saan nagmula ang bawat ruta: inanunsyo, nilikha ng tagapamahala, o static. Kapag may nagtanong sa ibang pagkakataon kung talagang nagdadala ng trapiko ang pangalawang uplink, ang rekord na iyon ay sasagot nang walang haka-haka.
Bago mo ideklarang tapos ang talahanayan, kumpirmahin ang kapitbahay sa ip -6 neigh show dev uplink0 , muling basahin ang ip -6 rule show para sa mga aksidente sa pagkakasunod-sunod, at subukan gamit ang trapikong tumutugma sa tuntunin sa halip na ping na kumukuha ng default na ruta. Pagkatapos, sadyang ibaba ang isang uplink at panoorin kung aling ruta ang babalikan ng kernel; dapat tumugma ang sagot sa isinulat mo.