net.ipv6.conf.all.forwarding=1 ezarri nuen Debianeko ate batean, VPN bezeroen trafikoa birbidali ahal izateko, eta ordu erdi inguru geroago makinak ez zuen IPv6ko ibilbide lehenetsirik. Goiko routerra bizirik zegoen, link-local bizilagunak oraindik erantzuten zuen, eta uplinkak bere helbide globala gordetzen zuen. Gelditu zena kernelak interfaze horretan router advertisements onartzen jarraitzeko zuen prestutasuna izan zen. Ibilbidea ez zen desagertu sysctl idatzi nuenean; desagertu zen RAri esker ikasitako ibilbide lehenetsiaren bizitza amaitu zenean eta ezerk berritu ez zuenean.

Lehen begiratuan ezer ez zirudien apurtuta. Birbidalketak funtzionatzen zuen, bezeroak pasatzen ziren ibilbide zaharra cachean zegoen bitartean, eta hutsegitea eragin zuen aldaketak baino beranduago iritsi zen. Atzerapen horregatik egozten zaio goiko aldeani edo inoiz parte hartu ez zuen suebaki-arau bati.

Irakurri ibilbideen taula edozein sysctl ukitu aurretik

Hasi ip -6 route show default erabiliz eta irakurri atributuak, ez soilik atea. RAri esker ikasitako ibilbide lehenetsia proto ra markarekin dago, lehentasuna darama eta expires atzerako kontua erakusten du. Eskuz gehitutako ibilbideak ez du bat ere ez, eta alde horrek esaten dizu zein mekanismok duen ibilbidearen jabea.

$ ip -6 route show default
default via fe80::1 dev eth0 proto ra metric 1024 expires 1432sec hoplimit 64 pref medium

Ondoren begiratu helbideari: ip -6 addr show dev eth0. Orduetan neurtutako bizitza hobetsi eta baliodunak dituen helbide global batek minutuetan neurtutako router bizitza duen ibilbide lehenetsia baino gehiago biziko da. Helbidea badago eta ibilbide lehenetsia falta da, hori da iragarki arazo baten sinadura. Helbidea ere falta bada, lehenengo estekak, aurrizkiaren informazioak edo helbide bikoiztuen detekzioak du lehentasuna.

Zergatik desaktibatzen du birbidalketak RAren prozesamendua

RA 134 motako ICMPv6 paketea da, link-local iturritik bidalia 255eko jauzi-mugarekin. Kernelak erabili aurretik, interfazearen accept_ra kontsultatzen du. Balio lehenetsia 1 da, eta 1ek ez du bai esan nahi. Hau esan nahi du: onartu soilik ostalari hau birbidaltzen ari ez den bitartean. Ezarri forwarding=1 eta baldintza hori huts egiten du, beraz iragarkia baztertzen da bertan dagoen aurrizki edo router lehenetsiren bat kontuan hartu aurretik.

Hiru balio daude, eta hirugarrenak soilik irabazten dio birbidalketari:

accept_raforwarding=0forwarding=1
0ignoredignored
1 (default)acceptedignored
2acceptedaccepted

Beste bi banderek erabakitzen dute zer instalatzen den benetan. accept_ra_defrtr kontrolatzen du iragarkiko router lehenetsia ibilbide bihurtzen den, eta accept_ra_pinfo kontrolatzen du aurrizkiaren informazioa helbidearen konfiguraziorako erabiltzen den. accept_ra_defrtr desaktibatzeko ohiko modua da SLAAC helbideak birbidaltzen duen ostalari batean mantentzeko ibilbide lehenetsirik ikasi gabe. accept_ra ez bezalako palanka da, eta helbideak bai, ibilbidea ez nahi duzunean erabiltzen da. Kernelaren IP sysctl erreferentziak hirurak zerrendatzen ditu.

Berretsi hiru komandorekin

Lehenik, irakurri balio biziak kargatuta uste duzun fitxategiaren ordez:

sysctl net.ipv6.conf.eth0.forwarding net.ipv6.conf.all.forwarding \
       net.ipv6.conf.eth0.accept_ra net.ipv6.conf.eth0.accept_ra_defrtr

Bigarrenik, frogatu iragarkiak oraindik iristen direla. ICMPv6 mota-bytearen araberako iragazkia nahikoa da, eta bizilagunen aurkikuntza-trafikoaren horma irakurtzea saihesten du:

tcpdump -ni eth0 'icmp6 and ip6[40] == 134'

Minutu batzuetan ezer agertzen ez bada, accept_ra ez da zure arazoa. Goiko aldeak iragartzen utzi du, bidean zerbait ICMPv6 iragazten ari da, edo interfaze hori ez dago uste duzun segmentuan. Hirugarrenik, eskatu zuk zeuk iragarkia eta irakurri haren eremuak:

rdisc6 eth0

rdisc6 Debianen eta Ubuntun ndisc6 paketean dator. Irteeran, begiratu router bizitza eta lehentasuna beste ezer aldatu aurretik. Router bizitza 0 duen iragarkia router lehenetsia kentzeko agindua da, eta ez dago accept_ra baliorik hori ibilbide erabilgarri bihurtuko duenik. Horrela ere harrapatzen duzu zubi moduan dagoen goiko CPE bat, aurrizkiak banatzen dituena baina inoiz bere burua router gisa eskaintzen ez duena.

Egin uplink bakarra den interfaze permisiboa

Goiko aldeak router lehenetsia izan behar badu, han onartu iragarkiak birbidalketari eutsiz, eta beste inon ez:

# /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 = 1

Mugaketak garrantzia du, Linuxen IPv6 birbidalketa etengailu global bakarra delako, ez esteka bakoitzeko bat. Idatzi 1 net.ipv6.conf.wg0.forwarding barruan eta gero irakurri net.ipv6.conf.all.forwarding: balio globala iraultzen da eta interfaze bakoitza birbidaltzen hasten da. Ezin zara router izan tunelean eta ostalari arrunta LANean. Mugatu dezakezuna onarpena da. Mantendu accept_ra=2 uplinkan eta utzi tunelaren eta LANaren interfazeak 1 edo 0an, tuneletik iristen den iragarki galdu batek hara eransten duen ibilbide lehenetsirik instala ez dezan.

sysctl -w aldi baterakoak ez du hurrengo abioan bizirik iraungo, eta bai systemd-networkd bai NetworkManager beren konfiguraziotik idazten dituzte balio horiek. networkden, ezarri IPv6Forwarding=yes eta IPv6AcceptRA=yes uplinkaren .network fitxategian; networkdek IPv6Forwarding global gisa dokumentatzen du kernelaren arrazoi beragatik. NetworkManagerekin, uplinkeko ipv6.method=auto da accept_ra balioa gidatzen duena, beraz irakurri berriro sysctl nmcli connection up ondoren, lehen egiaztapenari sinetsi beharrean.

Alternatiba estatikoa, ip -6 route add default via fe80::1 dev eth0, benetan funtzionatzen du, eta erantzun zentzuzkoa da goiko routerrak link-local helbide egonkorra duenean. Izan argi zer uzten duzun. Ibilbide lehenetsi estatikoa ez da inoiz berritzen eta ez da inoiz kentzen, beraz hildako bizilagun bat seinalatzen jarraitzen du goiko aldea ordezkatu ondoren. RAren ibilbideak seguru egiten du huts; estatikoa isilik.

Probatu birbidalitako paketea, ez atearen beraren paketea

Atearen pingek berak arrakasta izan dezakete inongo bezerok erabil dezakeen ibilbide batean, eta arrakasta izan dezakete ateak iturria delako ere. Probatu konektatutako bezero batetik eta gero galdetu ateari zer egingo lukeen bezero horren helbiderako:

# 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::2

Gero itxaron router bizitza bat eta begiratu berriro. Nahi duzun egoera egonkorra proto ra markatutako ibilbide lehenetsia da, haren expires balioa etengabe berrezartzen dena, gehi all.forwarding=1. expires soilik atzeraka ari bada, iragarkiak oraindik nonbait baztertzen dira, eta errudun ohikoa abioan sysctl exekutatu ondoren accept_ra berridazten duen sare-kudeatzaile bat da.

Hau itxi aurretik, berretsi lau gauza: ibilbide lehenetsia proto ra da eta berritzen ari da, accept_ra=2 uplinkari soilik dagokio, birbidalketa 1 da abioaren ondoren eta kudeatzailea berrabiarazi ondoren, eta bezero batek, ez ateak, amaitzen du IPv6 ping bat. Bezeroak ibilbide osasuntsu batekin oraindik huts egiten badu, hurrengo susmagarria itzulera-bidea edo goiko suebaki bat da, ez iragarkia.

Erlazionatutako artikuluak