Ir-rotta prestabbilita IPv6 għebet wara li tqabbad il-forwarding fuq Linux
Meta tixgħel il-forwarding IPv6, il-kernel ma jagħtix kas ir-router advertisements fuq l-uplink, u r-rotta prestabbilita mitgħallma tiskadi. Sejjaħ accept_ra biex tissewwa.
Stajt net.ipv6.conf.all.forwarding=1 fuq gateway Debian biex ikun jista' jgħaddi t-traffiku tal-klijenti VPN, u wara madwar nofs siegħa l-magna ma kellhiex aktar rotta prestabbilita IPv6. Ir-router upstream kien ħaj, il-ġar link-local kien għadu jwieġeb, u l-uplink kien għadu qed iżomm l-indirizz globali tiegħu. Dak li kien waqaf kienet ir-rieda tal-kernel li jkompli jaċċetta r-router advertisements fuq dak l-interface. Ir-rotta ma għebitx meta ktibt is-sysctl; għebet meta skada l-ħajja tar-rotta prestabbilita mitgħallma mir-RA u xejn ma ġeddidha.
Xejn ma deher miksur fl-ewwel daqqa t'għajn. Il-forwarding ħadem, il-klijenti baqgħu għaddejjin sakemm ir-rotta l-qadima kienet għadha fil-cache, u l-ħsara waslet aktar tard mill-bidla li kkawżatha. Dak id-dewmien huwa r-raġuni għaliex dan jiġi attribwit lill-upstream jew lil regola tal-firewall li qatt ma kienet involuta.
Aqra t-tabella tar-rotot qabel ma tmiss ebda sysctl
Ibda b'ip -6 route show default u aqra l-attributi, mhux biss il-gateway. Rotta prestabbilita mitgħallma mir-RA hija mmarkata b'proto ra, ġġorr preferenza u turi numru regressiv expires. Rotta miżjuda bl-idejn m'għandhiex l-ebda waħda, u dak id-differenza jgħidlek liema mekkaniżmu jippossjedi r-rotta.
$ ip -6 route show default
default via fe80::1 dev eth0 proto ra metric 1024 expires 1432sec hoplimit 64 pref mediumImbagħad ħares lejn l-indirizz: ip -6 addr show dev eth0. Indirizz globali b'ħajjiet preferuti u validi mkejla f'sigħat jgħix itwal minn rotta prestabbilita li l-ħajja tar-router tagħha titkejjel bil-minuti. Indirizz preżenti u rotta prestabbilita neqsin hija l-firma ta' problema ta' reklamar. Jekk jonqos ukoll l-indirizz, l-ewwel trid tiġri wara l-link, l-informazzjoni tal-prefiss jew id-detezzjoni tal-indirizzi doppji.
Għaliex il-forwarding jitfi l-ipproċessar tar-RA
RA huwa pakkett ICMPv6 tat-tip 134, mibgħut minn sors link-local b'limitu tal-qabża 255. Qabel ma l-kernel jużah, jikkonsulta l-accept_ra tal-interface. Il-valur prestabbilit huwa 1, u 1 ma jfissirx iva. Ifisser: aċċetta biss sakemm dan il-host mhux qed jgħaddi. Issettja forwarding=1 u dik il-kundizzjoni tfalli, għalhekk ir-reklam jintrema qabel ma jiġi kkunsidrat xi prefiss jew router prestabbilit fih.
Jeżistu tliet valuri, u t-tielet wieħed biss jgħix il-forwarding:
accept_ra | forwarding=0 | forwarding=1 |
|---|---|---|
| 0 | ignored | ignored |
| 1 (default) | accepted | ignored |
| 2 | accepted | accepted |
Żewġ bnadar oħra jiddeċiedu x'jiġi installat fil-fatt. accept_ra_defrtr jikkontrolla jekk ir-router prestabbilit fir-reklam isirx rotta, u accept_ra_pinfo jikkontrolla jekk l-informazzjoni tal-prefiss tintużax għall-konfigurazzjoni tal-indirizz. L-itfi ta' accept_ra_defrtr huwa l-mod tas-soltu biex iżżomm indirizzi SLAAC fuq host li jgħaddi mingħajr ma titgħallem rotta prestabbilita. Dan huwa lieva differenti minn accept_ra, u hija dik li tintuża meta trid indirizzi imma mhux rotta. Ir-referenza tal-kernel dwar IP sysctl telenka t-tlieta.
Ikkonfermaha bi tliet kmandi
L-ewwel, aqra l-valuri ħajjin minflok il-fajl li taħseb li huwa mgħobbi:
sysctl net.ipv6.conf.eth0.forwarding net.ipv6.conf.all.forwarding \
net.ipv6.conf.eth0.accept_ra net.ipv6.conf.eth0.accept_ra_defrtrIt-tieni, ipprova li r-reklami għadhom jaslu. Il-filtru fuq il-byte tat-tip ICMPv6 huwa biżżejjed u jiffrankalek il-qari ta' ħajt ta' traffiku ta' skoperta tal-ġirien:
tcpdump -ni eth0 'icmp6 and ip6[40] == 134'Jekk ma jidher xejn għal diversi minuti, accept_ra mhix il-problema tiegħek. L-upstream waqaf jirreklama, xi ħaġa fit-triq qed tiffiltra ICMPv6, jew dak l-interface mhuwiex verament fis-segment li taħseb. It-tielet, itlob reklam int stess u aqra l-oqsma tiegħu:
rdisc6 eth0rdisc6 jiġi fil-pakkett ndisc6 fuq Debian u Ubuntu. Fl-output, ħares lejn il-ħajja tar-router u l-preferenza qabel ma tbiddel xi ħaġa oħra. Reklam b'ħajja tar-router ta' 0 huwa struzzjoni biex tneħħi r-router prestabbilit, u l-ebda valur ta' accept_ra ma jibdlu f'rotta użabbli. Hekk ukoll taqbad CPE upstream fil-modalità bridge li jqassam il-prefissi imma qatt ma joffri lilu nnifsu bħala router.
Agħmel l-uplink l-uniku interface permissiv
Jekk l-upstream għandu jkun ir-router prestabbilit, aċċetta reklami hemmhekk minkejja l-forwarding, u mkien ieħor:
# /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 = 1L-ambitu huwa importanti għax il-forwarding IPv6 f'Linux huwa swiċċ globali wieħed, mhux wieħed għal kull link. Ikteb 1 f'net.ipv6.conf.wg0.forwarding u mbagħad aqra net.ipv6.conf.all.forwarding: il-valur globali jaqleb u kull interface jibda jgħaddi. Ma tistax tkun router fuq it-tunnel u host ordinarju fuq il-LAN. Dak li tista' tillimita huwa l-aċċettazzjoni. Żomm accept_ra=2 fuq l-uplink u ħalli l-interfaces tat-tunnel u tal-LAN fuq 1 jew 0, sabiex reklam mitluf li jasal mit-tunnel ma jistax jinstalla rotta prestabbilita li tindika fih.
sysctl -w temporanju mhux se jgħix l-istartjar li jmiss, u kemm systemd-networkd kif ukoll NetworkManager jiktbu dawn il-valuri mill-konfigurazzjoni tagħhom stess. F'networkd, issettja IPv6Forwarding=yes u IPv6AcceptRA=yes fil-fajl .network tal-uplink; networkd jiddokumenta IPv6Forwarding bħala globali għall-istess raġuni fil-kernel. Ma' NetworkManager, ipv6.method=auto fuq l-uplink huwa dak li jmexxi l-valur accept_ra, għalhekk erġa' aqra s-sysctl wara nmcli connection up minflok ma tafda fl-ewwel verifika.
L-alternattiva statika, ip -6 route add default via fe80::1 dev eth0, taħdem tabilħaqq, u hija tweġiba raġonevoli meta r-router upstream ikollu indirizz link-local stabbli. Kun ċar dwar x'qed tagħti. Rotta prestabbilita statika qatt ma tiġi mġedda u qatt ma tiġi rtirata, għalhekk tibqa' tindika lejn ġar mejjet wara li l-upstream jinbidel. Ir-rotta mir-RA tfalli b'mod sikur; dik statika tfalli bil-kwiet.
Ittestja pakkett mgħoddi, mhux dak tal-gateway innifsu
Il-ping tal-gateway innifsu jista' jirnexxi fuq rotta li ebda klijent ma jista' juża, u jista' wkoll jirnexxi għax il-gateway huwa s-sors. Ittestja minn klijent konness, u mbagħad staqsi lill-gateway x'jagħmel għall-indirizz ta' dak il-klijent:
# 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::2Imbagħad stenna ħajja waħda tar-router u ħares mill-ġdid. L-istat stabbli li trid huwa rotta prestabbilita mmarkata b'proto ra li l-valur expires tagħha jerġa' jibda kontinwament, flimkien ma' all.forwarding=1. Jekk expires qed jgħodd biss 'l isfel, ir-reklami għadhom qed jintremew xi mkien, u l-aktar ħati tas-soltu huwa maniġer tan-netwerk li jerġa' jikteb accept_ra wara li s-sysctl fil-ħin tal-boot ikun diġà ġera.
Qabel ma tagħlaq dan, ikkonferma erba' affarijiet: ir-rotta prestabbilita hija proto ra u qed tiġi mġedda, accept_ra=2 japplika biss għall-uplink, il-forwarding għadu 1 wara restart u wara restart tal-maniġer, u klijent minflok il-gateway itemm ping IPv6. Jekk il-klijent xorta jfalli b'rotta tajba, il-persuna suspettata li jmiss hija t-triq lura jew firewall upstream, mhux ir-reklam.