Puncte:1

Cum se implementează corect DHCPv6-PD pe routerul din aval cu Linux?

drapel sa

Încerc să configurez un router / firewall IPv6 bazat pe Linux pentru a face următoarele:

  • Obțineți un prefix /56 de la ISP pe interfața „wan0”
  • Furnizați adrese /64 gazdelor de pe „lan1”
  • Furnizați subrețea /60 unui router din aval pe „lan2”

Alegerea mea inițială de software pentru a face acest lucru a fost systemd-networkd, cu care primele două elemente au fost ușor, dar al treilea nu este acceptat (aparent, vă rog să mă corectați dacă greșesc).

Am trecut la o combinație de dhcpcd, ISC DHCP și radvd (prin pachetele furnizate în Arch Linux, dar presupun că nu ar trebui să existe diferențe semnificative față de software-ul din amonte).

dhcpcd a fost configurat pentru a obține acel /56 și a atribui adrese:

duid
persistent
vendorclassid
opțiunea domain_name_servers, domain_name, domain_search
opțiunea classless_static_routes
opțiunea interface_mtu
opțiunea nume_gazdă
opțiunea rapid_commit
necesită dhcp_server_identifier
slaac privat
noipv4ll
asteapta 6
asteapta 4
interfață wan0
    ipv6rs
    ia_na 1
    ia_pd 1/::/56 lan1/0/64 lan2/2/60
interfata lan1
    noipv6rs
    static ip_address=172.21.0.1
interfata lan2
    static ip_address=172.22.0.1

Acest lucru are ca rezultat ca interfețele să obțină adrese bazate pe configurația ISP-ului și pare a fi corectă.

DHCP a fost configurat pentru a promova în continuare adresele și subrețelele din aval:

default-lease-time 2592000;
durată de viață preferată 604800;
opțiunea dhcp-renewal-time 3600;
opțiunea dhcp-rebinding-time 7200;
permite leasequery;
dhcpv6-lease-file-name "/var/lib/dhcp/dhcpd6.leases";

subnet6 2XXX:YYYY:ZZZZ:dd00::/64 {
  interval6 2XXX:AAAA:ZZZZ:dd00::2 2XXX:AAAA:ZZZZ:dd00:ffff:ffff:ffff:ffff;
}
subnet6 2XXX:YYYY:ZZZZ:dd20::/60 {
  prefix6 2XXX:AAAA:ZZZZ:dd20:: 2XXX:AAAA:ZZZZ:dd20:: /60;
  interval6 2XXX:AAAA:ZZZZ:dd20::2 2XXX:AAAA:ZZZZ:dd20::ffff;
}

Acest lucru pare să fie, de asemenea, corect, deoarece acele intervale și subrețele sunt utilizate în cele din urmă de gazdele din aval pe „lan1” și de routerul din aval pe „lan2”.

Inițial, informațiile de mai sus au fost promovate prin următoarea configurație radvd:

interfata lan1 {
    AdvManagedFlag dezactivat;
    AdvOtherConfigFlag dezactivat;
    AdvSendAdvert activat;
    AdvDefaultPreference ridicat;
    prefix ::/64 {
        AdvOnLink activat;
        AdvAutonomous activat;
    };
};

interfață lan2 {
    AdvManagedFlag dezactivat;
    AdvOtherConfigFlag dezactivat;
    AdvSendAdvert activat;
    AdvDefaultPreference ridicat;
    traseu ::/60 {
    };
};

Apoi am înlocuit ultima strofă de interfață cu una mai simplă: interfață lan2 {}; care cred că a funcționat mai bine (sau poate la fel, dar oricum este mult mai scurt).

Acest lucru pare să fie și corect, în sensul că este necesar ca gazdele și routerele să își configureze efectiv interfețele.

in orice caz, toată această configurație nu reușește să facă un lucru crucial: rutele nu sunt configurate corect. Pe acest router DIY, rutele arată astfel:

$ ip -6 r
::1 dev lo proto kernel metric 256 pref mediu
2XXX:YYYY:ZZZZ:dd00::/64 dev lan1 proto dhcp metric 1003 pref mediu
2XXX:YYYY:ZZZZ:dd20::/60 dev lan2 proto dhcp metric 1004 pref mediu
inaccesibil 2XXX:YYYY:ZZZZ:dd00::/56 dev lo proto dhcp metric 1001 pref mediu
fe80::/64 dev lan2 proto kernel metric 256 pref mediu
fe80::/64 dev wan0 proto kernel metric 256 pref mediu
fe80::/64 dev lan1 proto kernel metric 256 pref mediu
implicit prin fe80::AAAA:BBBB:CCCC:DDDD dev wan0 proto ra metric 1002 mtu 1500 pref mediu

Dacă adaug manual (cu o valoare mai mică) sau înlocuiesc ruta relevantă pentru subrețeaua /60, așa: ip -6 r înlocuiți 2XXX:YYYY:ZZZZ:dd20::/60 prin fe80::DOWN:STRE:AMRO:UTER dev lan2 și invers pe routerul din aval, cu adresa locală a link-ului routerului DIY, lucrurile încep să funcționeze.

Intrebarile mele:

  1. Cum îmi configurez routerul DIY pentru a face acest ultim pas automat? (Am încercat să pun diferite valori la accept_ra, accept_ra_defrtr și router_solicitations în sysctl's net.ipv6.conf sub toate și porțiuni de interfețe individuale, dar nu am văzut o diferență de comportament.)
  2. Pot folosi un alt software (open source) pe Linux pentru a realiza ceea ce vreau, într-un mod mai eficient? Ceea ce vreau să spun este că atunci când ISP-ul meu îmi alocă un prefix /56 diferit, va trebui să schimb fișierul de configurare DHCP pentru a-l folosi în schimb. Pot (și voi) să fac un script care să rezolve acest lucru, dacă nu există un software care să susțină cazul meu de utilizare, dar a trebui să fac acest lucru pare destul de fragil.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.