D'imigh an bealach réamhshocraithe IPv6 tar éis an t-aistriú a chumasú ar Linux
Nuair a chumasaítear aistriú IPv6, déanann an t-eithne neamhaird de router advertisements ar an uplink, agus téann an bealach réamhshocraithe foghlamtha as feidhm. Deisigh le accept_ra.
Chuir mé net.ipv6.conf.all.forwarding=1 ar gheata Debian le go bhféadfadh sé trácht cliant VPN a aistriú, agus timpeall leathuair an chloig ina dhiaidh sin ní raibh aon bhealach réamhshocraithe IPv6 fágtha ag an meaisín. Bhí an ródaire uas-sreafa in airde, bhí an chomharsa link-local fós ag freagairt, agus choinnigh an t-uplink a sheoladh domhanda. An rud a stop, ba é toilteanas an eithne leanúint de router advertisements a ghlacadh ar an gcomhéadan sin. Níor imigh an bealach nuair a chlóscríobh mé an sysctl; d'imigh sé nuair a chuaigh saolré an bhealaigh réamhshocraithe a foghlaimíodh ó RA in éag agus nuair nár athnuaigh aon rud é.
Ní raibh aon rud ag breathnú briste ar an gcéad amharc. D'oibrigh an t-aistriú, tháinig na cliaint tríd fad a bhí an seanbhealach sa taisce, agus tháinig an mhainneachtain níos déanaí ná an t-athrú ba chúis léi. Is é an mhoill sin an chúis a gcuirtear an locht ar an uas-sreab nó ar riail balla dóiteáin nár bhain leis riamh.
Léigh an tábla bealaí sula dtéann tú i dteagmháil le haon sysctl
Tosaigh le ip -6 route show default agus léigh na tréithe, ní hamháin an geata. Bíonn bealach réamhshocraithe a foghlaimíodh ó RA marcáilte le proto ra, iompraíonn sé rogha agus taispeánann sé comhaireamh síos expires. Níl ceachtar ag bealach a cuireadh leis de láimh, agus insíonn an difríocht sin duit cén meicníocht a shealbhaíonn an bealach.
$ ip -6 route show default
default via fe80::1 dev eth0 proto ra metric 1024 expires 1432sec hoplimit 64 pref mediumAnsin féach ar an seoladh: ip -6 addr show dev eth0. Mairfidh seoladh domhanda a bhfuil saolta tosaíochta agus bailí aige, tomhaiste in uaireanta, níos faide ná bealach réamhshocraithe a dtomhaistear saolré a ródaire i nóiméid. Seoladh i láthair agus bealach réamhshocraithe ar iarraidh is ea síniú fadhb fógraíochta. Má tá an seoladh ar iarraidh freisin, is é an nasc, an fhaisnéis réimíre nó braiteadh seoladh dúblach an chéad rud le leanúint.
Cén fáth a múchann aistriú próiseáil RA
Is paicéad ICMPv6 de chineál 134 é RA, a sheoltar ó fhoinse link-local le teorainn léim 255. Sula n-úsáideann an t-eithne é, téann sé i gcomhairle le accept_ra an chomhéadain. Is é 1 an luach réamhshocraithe, agus ní chiallaíonn 1 tá. Ciallaíonn sé: glac ach amháin fad nach bhfuil an t-óstach seo ag aistriú. Cuir forwarding=1 agus teipeann ar an gcoinníoll sin, mar sin caitear an fógra sula mbreithnítear aon réimír nó ródaire réamhshocraithe ann.
Tá trí luach ann, agus ní thagann ach an tríú ceann slán ón aistriú:
accept_ra | forwarding=0 | forwarding=1 |
|---|---|---|
| 0 | ignored | ignored |
| 1 (default) | accepted | ignored |
| 2 | accepted | accepted |
Cinneann dhá bhratach eile cad a shuiteáiltear i ndáiríre. Rialaíonn accept_ra_defrtr an éireoidh an ródaire réamhshocraithe san fhógra ina bhealach, agus rialaíonn accept_ra_pinfo an n-úsáidfear faisnéis réimíre chun seoladh a chumrú. Is é accept_ra_defrtr a mhúchadh an gnáthbhealach chun seoltaí SLAAC a choinneáil ar óstach atá ag aistriú gan bealach réamhshocraithe a fhoghlaim. Luamhán difriúil é ó accept_ra, agus is air a théitear nuair a theastaíonn seoltaí uait ach ní theastaíonn bealach. Liostaíonn tagairt IP sysctl an eithne na trí cheann.
Deimhnigh le trí ordú
Ar dtús, léigh na luachanna beo in ionad an chomhaid a cheapann tú atá luchtaithe:
sysctl net.ipv6.conf.eth0.forwarding net.ipv6.conf.all.forwarding \
net.ipv6.conf.eth0.accept_ra net.ipv6.conf.eth0.accept_ra_defrtrAr an dara dul síos, cruthaigh go bhfuil na fógraí fós ag teacht. Is leor scagadh ar bheart cineáil ICMPv6, agus sábhálann sé ort balla tráchta braite comharsan a léamh:
tcpdump -ni eth0 'icmp6 and ip6[40] == 134'Mura dtagann aon rud chun solais thar roinnt nóiméad, ní hé accept_ra do fhadhb. Stop an t-uas-sreab ag fógairt, tá rud éigin ar an gcosán ag scagadh ICMPv6, nó níl an comhéadan sin i ndáiríre ar an deighilt a cheapann tú. Ar an tríú dul síos, iarr fógra duit féin agus léigh a réimsí:
rdisc6 eth0Tagann rdisc6 sa phacáiste ndisc6 ar Debian agus Ubuntu. San aschur, féach ar shaolré an ródaire agus ar an rogha sula n-athraíonn tú aon rud eile. Is treoir é fógra a bhfuil saolré ródaire 0 aige an ródaire réamhshocraithe a bhaint, agus ní dhéanann aon luach accept_ra bealach inúsáidte de sin. Is mar sin freisin a ghabhtar CPE uas-sreafa i mód droichid a roinneann réimíreanna ach nach dtairgeann é féin mar ródaire riamh.
Déan an t-uplink an t-aon chomhéadan ceadaitheach
Más é an t-uas-sreab an ródaire réamhshocraithe, glac fógraí ansin in ainneoin an aistrithe, agus ní in aon áit eile:
# /etc/sysctl.d/60-ipv6-router.conf
net.ipv6.conf.all.forwarding = 1
net.ipv6.conf.eth0.accept_ra = 2
net.ipv6.conf.eth0.accept_ra_defrtr = 1Tá tábhacht leis an raon feidhme mar is aon lasc dhomhanda é aistriú IPv6 ar Linux, ní ceann in aghaidh an naisc. Scríobh 1 isteach in net.ipv6.conf.wg0.forwarding agus ansin léigh net.ipv6.conf.all.forwarding: iompaíonn an luach domhanda agus tosaíonn gach comhéadan ag aistriú. Ní féidir leat a bheith i do ródaire ar an tollán agus i d'óstach rialta ar an LAN. Is féidir leat an glacadh a theorannú. Coinnigh accept_ra=2 ar an uplink agus fág comhéadain an tolláin agus an LAN ag 1 nó 0, ionas nach féidir le fógra ar strae a thagann thar an tollán bealach réamhshocraithe a shuiteáil a dhíríonn isteach ann.
Ní thagann sysctl -w sealadach slán ón gcéad atosú eile, agus scríobhann systemd-networkd agus NetworkManager araon na luachanna seo óna gcumraíocht féin. I networkd, cuir IPv6Forwarding=yes agus IPv6AcceptRA=yes i gcomhad .network an uplink; déanann networkd doiciméadú ar IPv6Forwarding mar rud domhanda ar an gcúis chéanna eithne. Le NetworkManager, is é ipv6.method=auto ar an uplink a thiomáineann an luach accept_ra, mar sin léigh an sysctl arís tar éis nmcli connection up seachas muinín a chur sa chéad seiceáil.
Oibríonn an rogha statach, ip -6 route add default via fe80::1 dev eth0, i ndáiríre, agus is freagra réasúnta é nuair a bhíonn seoladh link-local cobhsaí ag ródaire an uas-sreafa. Bí soiléir faoin rud a thugann tú suas. Ní athnuaítear bealach réamhshocraithe statach agus ní tharraingítear siar é riamh, mar sin leanann sé de bheith ag díriú ar chomharsa marbh tar éis an t-uas-sreab a mhalartú. Teipeann bealach RA go sábháilte; teipeann an ceann statach go ciúin.
Tástáil paicéad aistrithe, ní paicéad an gheata féin
Is féidir le ping an gheata féin éirí leo ar bhealach nach féidir le haon chliant é a úsáid, agus is féidir leo éirí leo freisin toisc gurb é an geata an fhoinse. Tástáil ó chliant nasctha, agus ansin fiafraigh den gheata cad a dhéanfadh sé do sheoladh an chliaint sin:
# on the VPN client
ping -6 -c 3 2001:4860:4860::8888
# on the gateway, using a client address
ip -6 route get 2001:4860:4860::8888 from fd42:20::2Ansin fan saolré amháin ródaire agus féach arís. Is é an riocht cobhsaí atá uait bealach réamhshocraithe marcáilte le proto ra a mbíonn a luach expires á athshocrú i gcónaí, móide all.forwarding=1. Mura bhfuil expires ach ag comhaireamh síos, tá fógraí fós á gcaitheamh in áit éigin, agus is é an t-ionsaitheoir is gnách bainisteoir líonra a athscríobhann accept_ra tar éis don sysctl ag am tosaithe a bheith rite cheana.
Sula ndúnann tú é seo, deimhnigh ceithre rud: is é proto ra an bealach réamhshocraithe agus tá sé ag athnuachan, ní bhaineann accept_ra=2 ach leis an uplink, tá an t-aistriú fós 1 tar éis atosú agus tar éis an bainisteoir a atosú, agus is cliant seachas an geata a chríochnaíonn ping IPv6. Má theipeann ar an gcliant fós le bealach sláintiúil, is é an chéad amhras eile an cosán fillte nó balla dóiteáin uas-sreafa, ní an fógra.