En annen IPv6 Crash Course For Linux: Fast IPv6-adresser, Routing, Name Services


I den første IPv6 for Linux lynkurs, vi dekket noen av de nakne grunnleggende om IPv6 på Linux. I dag skal vi lære å bruke rutbare IPv6-adresser, noen iptables regler for å holde vår eksperimentering lekker ut i verden, og om å implementere DNS i IPv6.

Du kan utføre alle disse testene på to Linux-PC-er på LAN uten å komme i veien for din normale IPv4 aktiviteter. Bare husk å angre alt som du ikke ønsker å bli permanent når du er ferdig. Spar tid og krefter ved å ha SSH satt opp på alle PCene; så kan du parkere selv komfortabelt på ett sted og kjøre de fleste av disse testene i løpet av SSH økter og aldri komme opp, unntatt på sunne intervaller for å hindre embolisms og felles anfall.

Forhindre IPv6 Lekkasjer

vil være å trene med reelle globale unicast IPv6-adresser, siden de fleste av oss ikke har noen virkelige de er tildelt oss av en vennlig IPv6-støtte ISP. Det er lite sannsynlig vil dette føre til problemer, men forebygging er billigere enn opprydding, så disse iptables regel block all IPv6-trafikk fra å komme inn eller forlate LAN:

ip6tables -P utgangs slipp ip6tables -p innspill slipp ip6tables -p frem dråpe

Hvis du har en annen brannmur da selvfølgelig må du gjøre hva som fungerer for den.

Tildele globale IPv6-adresser

De adresser for lokalt vi brukte i del 1 er svært begrenset. For å gjøre virkelige arbeidet vi trenger å bruke globale unicast-adresser. Dette er squillions av adresser i 2000 :: /3-serien. Som en utmerket leser minnet meg, 2001: er 0DB8 :: /32 blokk reservert for dokumentasjon og eksempler, så det er det vi skal bruke. Så vi kan tildele en ny global unicast-adresse til et grensesnitt som dette:

# ip -6 adr legge 2001: 0db8 :: 1/64 dev eth0

/64 er ikke CIDR (klasseløse inter-domene ruting) notasjon, men størrelsen i biter av prefikset. Denne kunstneriske ASCII diagram forklarer det:


 2001: db8: 0000: 0000: 0000: 0000: 0000: 0001 _____________ | ____ | ___________________ nettverks ID nettverksgrensesnittet ID 


Nettverket ID bestemmes av din ISP når du mottar en blokk med ekte IPv6-adresser. Du kontrollerer subnett og grensesnitt. Så det er 64 biter for nettverket ID + subnett, og 64 biter bare for grensesnittet ID. Hele IPv4 adresserommet er 32 bits, så din personlige blokk med IP-adresser kommer til å vare i lang, lang tid.

Nå kan du pinge denne adressen lokalt. Jeg har utvidet det bare som en påminnelse om hvor lange IPv6-adresser egentlig er. Den ping6 kommandoen fully forkorter det:

$ ping6 2001: db8: 0: 0: 0: 0: 0: 1 PING 2001: db8: 0: 0: 0: 0: 0: 1 (2001: db8 :: 1) 56 data bytes 64 bytes fra 2001: db8 :: 1: icmp_seq = 1 ttl = 64 time = 0,043 ms

Men du kan ikke ping fra en annen PC, fordi akkurat som IPv4 vi trenger en ruteren for å gjøre dette.

Legge Flere adresser

Du kan legge til flere adresser til en enkelt nettverksgrensesnitt, eller flere av dine PCer. Bare telle opp sekvensielt i heksadesimal, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, 10, 11, og så videre, slik:

2001: db8 :: 1 2001: db8 :: 2 2001: db8 :: 3 ... 2001: db8 :: 18 2001: db8 :: 19 2001: db8 :: 1a 2001: db8 :: 1b

Ruting

Ruteren må støtte IPv6, selvfølgelig. Hvis du bruker en Linux-PC som testmaskin du er i virksomhet. Første start IPv6 forwarding:

# sysctl -w net.ipv6.conf.all.forwarding = 1

Kontroller videresending er aktivert:

# cat /proc /sys /net /ipv6 /conf /eth0 /videresending en

En retur verdi på 1 betyr at det er aktivert, 0 betyr at det ikke er det. Nå installerer radvd, ruteren annonsør daemon. Deretter oppretter /etc/radvd.conf med denne enkle konfigurasjon:


 interface eth0 {AdvSendAdvert på; prefix 2001: db8 :: /64 {};}; 


Kopier det akkurat, bare å endre navnet grensesnittet hvis det er nødvendig. Nå opprette en IPv6-adresse på ruteren, eller PC som fungerer som din router, og angi en IPv6 rute:

# ip adresse legge 2001: db8 :: 1a /64 dev eth0 # ip route add 2001: db8: : /64 dev eth0

Sjekk din jobb ved å kjøre ifconfig og ip -6 ruten showet. Din ip-utgang bør se omtrent slik ut:

2001: db8 :: /64 dev eth0 proto kernel metrisk 256 MTU 1500 advmss 1440 hoplimit 4294967295 2001: db8 :: /64 dev eth0 metrisk 1024 MTU 1500 advmss 1440 hoplimit 4294967295 fe80 :: /64 dev eth0 proto kernel metrisk 256 MTU 1500 advmss 1 440 hoplimit 4294967295

Til slutt, starter opp radvd daemon:

# etc /init.d /radvd starte Anmeldelser

Du skal nå være i stand til å pinge ruteren fra en annen PC. Legg merke til at i motsetning til våre adresser for lokalt, trenger vi ikke å angi nettverksgrensesnittet:

$ ping6 2001: 0db8 :: 1a

Alle datamaskiner på samme bryteren som IPv6-ruter skal ha nye adresser i 2001: 0db8 :: /64-serien. Du kan se disse opp og gå på en ping6 vanvidd. En standard gateway (for tilkobling til andre nettverk) er IPv6-adressen til ruteren:

# ip -6 route add standard via 2001: db8 :: 1a


Selvfølgelig er det mindre arbeid å konfigurere den i radvd.conf og ha det annonseres automatisk ved å legge til disse linjene:

 rute :: /0 {}; 

Så når du kjører ip -6 rute viser deg ' ll se denne:

standard via 2001: db8 :: 1a dev eth0 metrisk 1024 MTU 1500 advmss 1 440 hoplimit 0

Hva om du ikke vil radvd sprengningsarbeid IPv6-adresser over hele nettverket ditt? Ingen grunn til bekymring, for du kan begrense sine kunder ved å føre deres IPv6 adresser for lokalt slik:


 interface eth0 {AdvSendAdvert på; prefix 2001: db8 :: /64 {AdvOnLink på; AdvAutonomous på; }; ruten :: /0 {}; klienter {fe80 :: 20d: b9ff: fe05: 25b4; fe80 :: 20b: 6aff: feef: 7e8d; fe80 :: 221: 97ff: feed: ef01; }; };! 


Mind din bukseseler og semikolon

IPv6 Address Calculator

Forstå binær matematikk bak IPv6-adressering er avgjørende for å forstå IPv6-adresser. Working ut noen konverteringer manuelt er morsomt og lærerikt et par ganger, og da blir det en feilutsatt øvelse i kjedsomhet, så ikke vær sjenert om å bruke en kalkulator. ip6calc er tilgjengelig på de fleste Linux-distribusjoner, og det er mange online web-baserte IPv6 kalkulatorer.

Name Services

Sette opp DNS for IPv6 er en hel artikkel i seg selv, så forhåpentligvis disse tipsene vil hjelpe deg.

Ideen bak IPv6 auto-konfigurasjon (via en adresse for lokalt og ruter reklame) er å gjøre det enkelt for vertene å bli med og forlate nettverket uten en DHCP-server. Du fortsatt trenger en DNS-server for å tilordne vertsnavn. Bind9 støtter IPv6, og i klassisk BIND mote krever for mye arbeid og for mange separate konfigurasjonsfiler. (DNS er samsvarende tall til navn, så det virker det bør ikke kreve slike tunge løft. Og det gjør ikke andre DNS-servere, men ingen av dem har full IPv6-støtte ennå.) Vennligst henvis til bind9 manuell fordi det er for lang tid å inkludere her. Linux IPv6 howto har noen tips om hvordan du konfigurerer BIND som bryter det ned i fordøyelige biter.

I del 1 tok vi en rask gjennomgang av å bruke vanlig gamle vertsfiler. Et annet alternativ er å bruke Dnsmasq, som er min favoritt for LAN navnetjeneste. Den støtter IPv6 for DNS og TFTP, men ikke DHCP, så det er ennå ikke en komplett løsning. Dnsmasq gjør innholdet i /etc /hosts tilgjengelig i DNS. Først sette opp statiske IPv6-adresser på klientene du vil ha tilgang til av vertsnavn, for eksempel servere og noen maskiner du administrere eksternt. Deretter skrive en /etc /hosts-filen på din Dnsmasq serveren og starte Dnsmasq. Deretter installerer rdnssd, IPv6 rekursiv DNS-server oppdagelse daemon, på radvd server. Deretter legger denne linjen til /etc/radvd.conf, bruker IPv6-adressen til din Dnsmasq server:

RDNSS 2001: 0db8 :: 1b


Omstart radvd og det bør alt arbeid. rdnssd og radvd er arbeidene i gang, så det kan eller ikke kan være glitchy. På mine Debian Sid systemer alt fungerer fint. Så langt. Anmeldelser