gigacampus » start page » fig-ipv6

IPv6 ved Fagskolen i Gjøvik

Fagskolen i Gjøvik la om nettverket sitt i løpet av sommeren 2006. Både fysisk infrastruktur og de fleste switcher (egentlig de få) ble skiftet ut.

Blant annet ble det kjøpt inn en Cisco Catalyst 3560G-48TS-E som fungerer som kjerneswitch. Opprinnelig ble denne switchen levert med «IP Services Image». En oppgradering til «Advanced IP Services Image» kostet omtrent kr. 10.000,-. Kjerneswitchen ved Fagskolen har vært gjennom de fleste versjoner av Cisco IOS, helt siden 12.2(25)SEB4, høsten 2006.

Den 7. september 2006 ble IPv6-linknettet etablert ved Fagskolen, i følge epost utvekslet mellom Uninett og Fagskolen.

Kommentarer og korreksjoner til det presenterte materialet mottas med takk.

Trond Endrestøl, IT-ansvarlig.

Cisco Catalyst 3560 og litt om Catalyst 6500

Nyeste Cisco IOS for Catalyst 3560 er p.t. 12.2(50)SE3, og i følge denne annonseringen, så er IPv6-funksjonene fra og med 12.2(50)SE flyttet over til det vanlige «IP Services»-imaget.

Bruk /allow-feature-upgrade sammen med kommandoen archive download for å bytte fra «Advanced IP Services» og tilbake til «IP Services».

Tilsvarende omorganisering ser ut til gjelde for Catalyst 6500-serien fra og med IOS 12.2(33)SXI.

Vær obs på at IOS 12.2(50)SE og 12.2(50)SE1 har en irriterende feil ved håndteringen av escape-character-kommandoen ved linjekonfigurasjon (line configuration, for eksempel line con 0 og line vty 0 15). Den gamle, gode syntaksen gjenkjennes overhodet ikke. Jeg har ikke sjekket om denne feilen er rettet i IOS 12.2(50)SE2.

For IOS 12.2(50)SE3 kan jeg bekrefte at feilen med escape-character er rettet, enda «release notes» for 12.2(50)SE og nyere versjoner, ikke oppgir denne feilen i det hele tatt.

IOS 12.2(52)SE for Catalyst 3560 er lovet å være tilgjengelig rundt 13. oktober 2009. Tvi, tvi.

Adresseplan

Fagskolen er «liten» skole sammenlignet med de fleste høgskoler og universiteter, men kanskje kan følgende være til hjelp. Jeg lyver littegranne siden jeg bruker dokumentasjonsprefikset og utelater noen uvesentlige detaljer.

«Enkle» subnett

For servernett, ansattnett, kontornettet til IT-avdelingen, radionett, osv, brukes «enkle» verdier i «subnettfeltet»:

Formål Subnett
Servernett 2001:0DB8:0700:0001::/64
Ansattnett 2001:0DB8:0700:0002::/64
IT-avdeling 2001:0DB8:0700:0003::/64
Testnett 2001:0DB8:0700:0004::/64
Radionett 2001:0DB8:0700:0005::/64

Datarom

For datarom er det ønskelig å kunne sperre for internett, for bruk av terminalservere, osv, i forbindelse med eksamener, heldagsprøver eller hva det skal være.

Alle datarom er lagt under felles prefiks: 2001:0DB8:0700:8000::/60. Prefikset er såpass romslig slik at det fint kan endres til 2001:0DB8:0700:8000::/56, og helt opp til 2001:0DB8:0700:8000::/52. Det er en fordel å holde prefikslengdene til «nybble boundary» (fire og fire binære siffer, eller ett og ett heksadesimalt siffer) slik at delegering av revers-DNS går så smertefritt som mulig.

Datarom Subnett
1 2001:0DB8:0700:8001::/64
2 2001:0DB8:0700:8002::/64
3 2001:0DB8:0700:8003::/64
4 2001:0DB8:0700:8004::/64
5 2001:0DB8:0700:8005::/64
6 2001:0DB8:0700:8006::/64
7 2001:0DB8:0700:8007::/64
8 2001:0DB8:0700:8008::/64

Hvert datarom har sitt eget IPv4-subnett, slik at det er et «1:1:1-forhold» mellom VLAN, IPv4 og IPv6.

Interne linknett

Interne linknett har fått et felles prefiks: 2001:0DB8:0700:F000::/60. Også dette prefikset kan utvides helt opp til 2001:0DB8:0700:F000::/52.

Internt linknett Subnett
VPN1 (ugradert) 2001:0DB8:0700:F001::/64
VPN2 (gradert) 2001:0DB8:0700:F002::/64

ULA-adresser

På de VLAN hvor Fagskolen benytter RFC1918-adresser, benyttes også ULA-adresser (RFC4193).

I likhet med de fleste andre institusjoner, brukes RFC1918-adresser først og fremst for utstyr som bare er for innvortes bruk, og som i seg selv ikke har noe behov for å kommunisere med tjenester på internett. Samtidig unngår man å bruke opp de offisielle IPv4-adressene. (Kanskje burde vi bruke opp IPv4-adressene våre, slik at utbredelsen av IPv6 skyter fart.)

Det er etter min mening lite gjennomtenkt å bruke RFC1918-adresser som ikke kan rutes ut eller tilbake på internett, og samtidig bruke offisielle IPv6-adresser som kan rutes ut og tilbake på internett. Catalyst 3560 har heller ikke støtte for NAT. (Hmm, jeg bør kanskje ikke banne i «kirka».)

Undertegnende brukte http://www.sixxs.net/tools/grh/ula/ ved generering (og registrering) av Fagskolens ULA-serie FD5C:14CF:C300::/48. Registrering er ikke nødvendig, men det kan være lurt å gjøre dette, i tilfellet to eller flere organisasjoner skal senere slå seg sammen. Da kan man på forhånd unngå å generere den samme serien, selv om sjansene for dette er temmelig knøttete. ;-)

ULA-serien brukes på følgende vis, FD5C:14CF:C300:VVVV::/64, hvor VVVV er VLAN-nummeret overført direkte og uten noen form for konvertering fra desimal til heksadesimal notasjon.

VLAN 61 kan således benytte FD5C:14CF:C300:0061::/64 som sitt ULA-prefiks.

Andre metoder for subnettnummerering

Andre dokumenter om igangsetting av IPv6 har foreslått å bruke de mest signifikante bitene i subnettfeltet til å angi bygning, og la de minst signifikante bitene angi etasje, institutt og/eller bruksområde.

Konfigurering av Cisco Catalyst 3560G

Vi forutsetter at dere er i stand til å oppgradere switchen til riktig image og starte switchen på nytt. ;-)

Omstilling til dual-stack

Aller først må vi stille om switchen fra ren IPv4-routing til dual-stack-routing. Gjør vi ikke dette, så er ikke IPv6-kommandoene synlige en gang.

switch>enable
switch#configure terminal
switch(config)#sdm prefer dual-ipv4-and-ipv6 default
switch(config)#exit
switch#reload

Dette er kommandoer som bare trenger å bli utført én eneste gang. Denne innstillingen lagres ikke i konfigurasjonsfila, så det er vanligvis ikke nødvendig å angi kommandoene copy running-config startup-config eller write memory før reload-kommandoen. Har du gjort andre endringer som du vil bevare, så må du naturligvis lagre oppsettet før du restarter switchen.

Merk at sdm-kommandoen reduserer den tilgjengelige mengden av IPv4-relatert TCAM.

Ved vanlig IPv4-routing har switchen følgende fordeling av godene:

switch>enable
switch#show sdm prefer default
 "desktop default" template:
 The selected template optimizes the resources in
 the switch to support this level of features for
 8 routed interfaces and 1024 VLANs.

  number of unicast mac addresses:                  6K
  number of IPv4 IGMP groups + multicast routes:    1K
  number of IPv4 unicast routes:                    8K
    number of directly-connected IPv4 hosts:        6K
    number of indirect IPv4 routes:                 2K
  number of IPv4 policy based routing aces:         0
  number of IPv4/MAC qos aces:                      0.5K
  number of IPv4/MAC security aces:                 1K

Ved dual-stack-routing med default-oppsett har switchen følgende fordeling av godene:

switch>enable
switch#show sdm prefer dual-ipv4-and-ipv6 default
 "desktop IPv4 and IPv6 default" template:
 The selected template optimizes the resources in
 the switch to support this level of features for
 8 routed interfaces and 1024 VLANs.

  number of unicast mac addresses:                  2K
  number of IPv4 IGMP groups + multicast routes:    1K
  number of IPv4 unicast routes:                    3K
    number of directly-connected IPv4 hosts:        2K
    number of indirect IPv4 routes:                 1K
  number of IPv6 multicast groups:                  1.125k
  number of directly-connected IPv6 addresses:      2K
  number of indirect IPv6 unicast routes:           1K
  number of IPv4 policy based routing aces:         0
  number of IPv4/MAC qos aces:                      0.5K
  number of IPv4/MAC security aces:                 1K
  number of IPv6 policy based routing aces:         0
  number of IPv6 qos aces:                          0.5K
  number of IPv6 security aces:                     0.5K

Som vi ser, opprettholdes 1K TCAM for «IPv4/MAC security aces», mens bare 0,5K TCAM settes av til «IPv6 security aces». For Fagskolens del er dette altfor lite, og dette medfører at CPU-en må ta seg av de reglene i IPv6-aksesslistene som ikke får plass i TCAM.

Vi kan også velge blant 2 andre oppsett:

switch>enable
switch#show sdm prefer dual-ipv4-and-ipv6 routing
 "desktop IPv4 and IPv6 routing" template:
 The selected template optimizes the resources in
 the switch to support this level of features for
 8 routed interfaces and 1024 VLANs.

  number of unicast mac addresses:                  1.5K
  number of IPv4 IGMP groups + multicast routes:    1K
  number of IPv4 unicast routes:                    2.75K
    number of directly-connected IPv4 hosts:        1.5K
    number of indirect IPv4 routes:                 1.25K
  number of IPv6 multicast groups:                  1.125k
  number of directly-connected IPv6 addresses:      1.5K
  number of indirect IPv6 unicast routes:           1.25K
  number of IPv4 policy based routing aces:         0.25K
  number of IPv4/MAC qos aces:                      0.5K
  number of IPv4/MAC security aces:                 0.5K
  number of IPv6 policy based routing aces:         0.25K
  number of IPv6 qos aces:                          0.5K
  number of IPv6 security aces:                     0.5K

switch#show sdm prefer dual-ipv4-and-ipv6 vlan
 "desktop IPv4 and IPv6 vlan" template:
 The selected template optimizes the resources in
 the switch to support this level of features for
 8 routed interfaces and 1024 VLANs.

  number of unicast mac addresses:                  8K
  number of IPv4 IGMP groups + multicast routes:    1K
  number of IPv4 unicast routes:                    0
  number of IPv6 multicast groups:                  1.125k
  number of directly-connected IPv6 addresses:      0
  number of indirect IPv6 unicast routes:           0
  number of IPv4 policy based routing aces:         0
  number of IPv4/MAC qos aces:                      0.5K
  number of IPv4/MAC security aces:                 1K
  number of IPv6 policy based routing aces:         0
  number of IPv6 qos aces:                          0.5K
  number of IPv6 security aces:                     0.5K

I alle tilfeller blir det bare satt av 0,5K TCAM for «IPv6 security aces».

Det er hyggelig om noen kan bidra med de tilsvarende tallene for dual-stack-routing i, for eksempel, SUP720-3BXL for Catalyst 6500-serien.

Sikring av management på switchen

Først opprettes en navngitt («extended») IPv6-aksessliste og gis et passelig innhold.

switch>enable
switch#configure terminal
switch(config)#ipv6 access-list ipv6-vty
switch(config-ipv6-acl)#remark IT-avdelingen
switch(config-ipv6-acl)#permit ipv6 2001:db8:700:WWWW::/64 any

Deretter må aksesslista knyttes til vty-linjene.

switch>enable
switch#configure terminal
switch(config)#line vty 0 15
switch(config-line)#ipv6 access-class ipv6-vty in

Slå på IPv6-routing

Catalyst 3560 kan bare utføre IPv6-unicast-routing, og dette må eksplisitt slås på. IPv6-multicast-routing er ikke tilgjengelig. (IPv4-multicast-routing er støttet.) Switchen tilbyr likevel kommando for IPv6 MLD snooping, som må eksplisitt slås på.

switch>enable
switch#configure terminal
switch(config)#ipv6 unicast-routing
switch(config)#ipv6 mld snooping

Konfigurering av internettgrensesnittet

Ved Fagskolen benyttes grensesnittet gi0/49 for tilgang til utenomverdenen. IPv4 og andre innstillinger forutsettes å være på plass.

switch>enable
switch#configure terminal
switch(config)#interface gigabitEthernet 0/49
switch(config-if)#ipv6 address 2001:700:0:XXXX::2/64
switch(config-if)#ipv6 nd ra suppress

Den første IPv6-kommandoen slår på IPv6-behandling og setter en offisiell unicast-adresse på grensesnittet. Den andre IPv6-kommandoen slår av annonsering av IPv6-parametre.

Det er tross alt snakk om et linknett, og et linknett har typisk bare 2 deltakere, «meg» og «den andre», begge med statisk IPv6-konfigurasjon. Dermed er det meningsløst å annonsere IPv6-prefiks, m.m, på internettgrensesnittet.

Routing av IPv6-trafikk ut på internett

switch>enable
switch#configure terminal
switch(config)#ipv6 route ::/0 2001:700:0:XXXX::1

DHCPv6-oppsett

Fra og med Cisco IOS 12.2(46)SE er det mulig å bruke DHCPv6-tjenester sentralt i kjerneswitchen. Switchen kan fungere som server eller som relay, og den kan også være en DHCPv6-klient. Det siste er antakelig bare aktuelt dersom andre switcher eller tjenere tilbyr DHCPv6-tjeneste for nettverket.

Ved Fagskolen i Gjøvik brukes autogenererte adresser i stor stil. For det første er dette en enkel måte å sette IPv6 ut i livet. For det andre så medfører begrensninger i TCAM til at Catalyst 3560 bare godtar autogenererte adresser når enkelt-hoster skal angis i aksesslistene. Dette kan være en god nok grunn for å styre unna Catalyst 3560, og heller satse på de større Catalyst-modellene som ikke har slike begrensninger.

Siden de gjenstående parametrene er temmelig statiske, så kan kjerneswitchen utmerket fungere som DHCPv6-server for alle VLAN.

DHCPv6-pool for VLAN med offisielle IPv6-adresser

DHCPv6-poolen for VLAN med offisielle IPv6-adresser heter kort og godt offisiell.

switch>enable
switch#configure terminal
switch(config)#ipv6 dhcp pool offisiell
switch(config-dhcpv6)#dns-server 2001:db8:700:1::aa
switch(config-dhcpv6)#dns-server 2001:db8:700:1::bb
switch(config-dhcpv6)#domain-name fig.ol.no
switch(config-dhcpv6)#sntp address 2001:db8:700:1::cc
switch(config-dhcpv6)#sntp address 2001:db8:700:1::dd
switch(config-dhcpv6)#sntp address 2001:db8:700:1::ee
switch(config-dhcpv6)#information refresh 1

Her har vi angitt:

  • 2 DNS-tjenere,
  • DNS-domenet,
  • 3 SNTP-tjenere, og
  • hvor lang tid som det skal gå mellom hver gang klienten skal sjekke opplysningene på nytt, i dette tilfellet én dag.

DHCPv6-pool for VLAN med ULA-adresser

DHCPv6-poolen for VLAN med ULA-adresser heter kort og godt ULA.

switch>enable
switch#configure terminal
switch(config)#ipv6 dhcp pool ULA
switch(config-dhcpv6)#dns-server 2001:db8:700:1::aa
switch(config-dhcpv6)#dns-server 2001:db8:700:1::bb
switch(config-dhcpv6)#domain-name fig.netlocal
switch(config-dhcpv6)#sntp address 2001:db8:700:1::cc
switch(config-dhcpv6)#sntp address 2001:db8:700:1::dd
switch(config-dhcpv6)#sntp address 2001:db8:700:1::ee
switch(config-dhcpv6)#information refresh 1

Den eneste reelle forskjellen mellom disse to DHCPv6-poolene er DNS-domenet. Alle RFC1918- og ULA-adresser ved Fagskolen er registrert i det lukkete DNS-domenet fig.netlocal. Reverssonene for RFC1918- og ULA-adressene er også interne soner som ikke kan nås utenfor Fagskolens nettverk.

Hva kan angis i DHCPv6-poolene?

Med IOS 12.2(46)SE kan vi angi i DHCPv6-poolene:

  • IPv6-prefiks for utdeling av adresser.
  • IPv6-adresser til DNS-servere (kan tastes inn som domenenavn).
  • DNS-domene.
  • Oppfriskningsintervall, angis som dager [timer [minutter]].
  • IPv6-adresser til NIS-servere (kan tastes inn som domenenavn).
  • NIS-domene.
  • IPv6-adresser til NIS+-servere (kan tastes inn som domenenavn).
  • NIS+-domene.
  • IPv6-adresser til SIP-servere (kan tastes inn som domenenavn).
  • SIP-domene.
  • SNTP-servere (kan tastes inn som domenenavn).
  • Vendor-specific options.

Oppsett av VLAN med offisiell IPv6-adresse

switch>enable
switch#configure terminal
switch(config)#interface VlanMM
switch(config-if)#ipv6 address 2001:db8:700:YYYY::1/64
switch(config-if)#ipv6 nd other-config-flag
switch(config-if)#ipv6 dhcp server offisiell

Den første IPv6-kommandoen slår på IPv6-behandling og angir routeradressa. Den andre IPv6-kommandoen forteller at annonseringen skal angi at DHCPv6 (stateful configuration) skal brukes for alle andre parametre enn IPv6-prefiks, m.m. Den tredje IPv6-kommandoen forteller switchen at den skal fungere som DHCPv6-server og hvilken DHCPv6-pool som skal brukes.

Oppsett av VLAN med ULA-adresse

switch>enable
switch#configure terminal
switch(config)#interface VlanNN
switch(config-if)#ipv6 address fd00:db8:0:ZZZZ::1/64
switch(config-if)#ipv6 nd other-config-flag
switch(config-if)#ipv6 dhcp server ULA

I grunnen er det ikke store forskjeller her, annet enn at ULA-serien brukes i stedet for offisielle IPv6-adresser og at DHCPv6-serveren skal bruke et annet oppsett som passer bedre med den lukkete naturen til dette VLAN-et.

Konfigurering av Cisco Catalyst 2960

Fagskolen har en rekke Catalyst 2960 som brukes som kantswitcher. Siden Cisco IOS 12.2(40)SE er det mulig å angi IPv6-adresser på fysiske og logiske grensesnitt, også for småswitcher som 2960.

Omstilling til dual-stack

Kantswitcher må også stilles om til å bruke dual-stack. Gjør vi ikke dette, så er ikke IPv6-kommandoene synlige en gang.

switch>enable
switch#configure terminal
switch(config)#sdm prefer dual-ipv4-and-ipv6 default
switch(config)#exit
switch#reload

Dette er kommandoer som bare trenger å bli utført én eneste gang. Denne innstillingen lagres ikke i konfigurasjonsfila, så det er vanligvis ikke nødvendig å angi kommandoene copy running-config startup-config eller write memory. Har du gjort andre endringer som du vil bevare, så må du naturligvis lagre oppsettet før du restarter switchen.

Ved vanlig IPv4-drift har 2960-switchen følgende fordeling av godene:

switch>enable
switch#show sdm prefer default
 "default" template:
 The selected template optimizes the resources in
 the switch to support this level of features for
 0 routed interfaces and 255 VLANs.

  number of unicast mac addresses:                  8K
  number of IPv4 IGMP groups:                       0.25K
  number of IPv4/MAC qos aces:                      0.125k
  number of IPv4/MAC security aces:                 0.375k

Ved valg av dual-stack-drift har 2960-switchen følgende fordeling av godene:

switch>enable
switch#show sdm prefer dual-ipv4-and-ipv6 default
 "dual-ipv4-and-ipv6 default" template:
 The selected template optimizes the resources in
 the switch to support this level of features for
 0 routed interfaces and 255 VLANs.

  number of unicast mac addresses:                  8K
  number of IPv4 IGMP groups + multicast routes:    0.25K
  number of IPv4 unicast routes:                    0
  number of IPv6 multicast groups:                  0.375k
  number of directly-connected IPv6 addresses:      0
  number of indirect IPv6 unicast routes:           0
  number of IPv4 policy based routing aces:         0
  number of IPv4/MAC qos aces:                      0.125k
  number of IPv4/MAC security aces:                 0.375k
  number of IPv6 policy based routing aces:         0
  number of IPv6 qos aces:                          0
  number of IPv6 security aces:                     0.125k

Mer TCAM er gjort tilgjengelig for IPv6, men det er uklart hvilke deler av TCAM som må lide.

Slå på IPv6 MLD snooping

Catalyst 2960 kan tilby IPv6 MLD snooping, som må eksplisitt slås på.

switch>enable
switch#configure terminal
switch(config)#ipv6 mld snooping

Sikring av management på 2960-switchen

Først opprettes en navngitt («extended») IPv6-aksessliste og gis et passelig innhold.

switch>enable
switch#configure terminal
switch(config)#ipv6 access-list ipv6-vty
switch(config-ipv6-acl)#remark IT-avdelingen
switch(config-ipv6-acl)#permit ipv6 2001:db8:700:WWWW::/64 any

Deretter må aksesslista knyttes til vty-linjene.

switch>enable
switch#configure terminal
switch(config)#line vty 0 15
switch(config-line)#ipv6 access-class ipv6-vty in

Konfigurering av management-VLAN

Fagskolen bruker som kjent autogenererte IPv6-adresser, og dermed er IPv6-oppsettet på management-VLAN-et slik:

switch>enable
switch#configure terminal
switch(config)#interface VlanKK
switch(config-if)#ipv6 address autoconfig

IPv6-kommandoen slår på IPv6-behandling og angir at IPv6-adressa skal autogenereres.

Aksesslister

Generelt om IPv6-aksesslister i Cisco Catalyst-switcher

IPv6-aksesslister er alltid av typen «extended» og de har alltid et navn, aldri et nummer.

Implisitt (innebygget og usynlig) i slutten av hver IPv6-aksessliste finner vi følgende 3 regler:

permit icmp any any nd-na
permit icmp any any nd-ns
deny   ipv6 any any

De to første reglene tillater «Neighbor Discovery», mens den siste regelen sperrer for øvrig IPv6-trafikk.

Dersom du vil logge all IPv6-trafikk som nektes, så du eksplisitt legge inn følgende 3 regler som en del av ditt eget reglement:

permit icmp any any nd-na
permit icmp any any nd-ns
deny   ipv6 any any log

Sett i sammenheng med de implisitte reglene, så vil en slik aksessliste ha følgende 6 regler:

! Eksplisitte regler.
permit icmp any any nd-na
permit icmp any any nd-ns
deny   ipv6 any any log

! De implisitte og usynlige reglene (som blir overstyrt av de foregående reglene).
permit icmp any any nd-na
permit icmp any any nd-ns
deny   ipv6 any any

Multicastadresser, et mindre mareritt

Utformingen av multicastadressene er ikke så gjennomtenkt som den burde være. Etter min mening, fra et ACL-messig ståsted, burde feltene for flagg og rekkevidde bytte plass.

Det er enklere å håndtere FFrf::/12 enn FFfr::/16 i ACL-ene, hvor f er flaggene og r er rekkevidden. Dersom du vil sperre for all «site-local multicasttrafikk», så må du angi flere regler:

deny udp any FF05::/16
deny udp any FF15::/16
deny udp any FF25::/16
deny udp any FF35::/16
deny udp any FF45::/16
deny udp any FF55::/16
deny udp any FF65::/16
deny udp any FF75::/16
deny udp any FF85::/16
deny udp any FF95::/16
deny udp any FFA5::/16
deny udp any FFB5::/16
deny udp any FFC5::/16
deny udp any FFD5::/16
deny udp any FFE5::/16
deny udp any FFF5::/16

Jeg vet at ikke alle kombinasjoner av flagg er definert, men det skader ikke å være føre var.

Hadde flagg og rekkevidde byttet plass, så hadde det holdt lenge med én regel som denne:

deny udp any FF50::/12

Regelen over blokkerer all «site-local multicasttrafikk», uavhengig av flaggene.

Jeg har lagt merke til at IOS 12.2SX for Catalyst 6500-serien har en egen interface-kommando for bare å tillate multicasttrafikk som har større rekkevidde enn den konfigurerte rekkevidden:

ipv6 multicast boundary scope r

r er rekkevidden (eng. scope).

For eksempel:

ipv6 multicast boundary scope 5

Fagskolens Catalyst 3560G-switch har ingen andre muligheter enn å begrense multicasttrafikk ved hjelp av ACL-er.

Aksesslister ved Fagskolen

De to aksesslistene som er tilknyttet gi0/49-grensesnittet, har «første ord» for mottatt trafikk og «siste ord» for utsendt trafikk, rett før pakkene forlater «åstedet».

Videre er det egne aksesslister for hvert VLAN, og disse aksesslistene regulerer adgangen inn og ut av VLAN-ene.

Navnsettingen på aksesslistene for VLAN-ene er:

Protokoll Ut Inn
IPv4 VlanNNIPv4UtTil VlanNNIPv4InnFra
IPv6 VlanNNIPv6UtTil VlanNNIPv6InnFra

Aksesslista InetIPv6Inn

  1. Aller først kan det være kjekt å ha en regel, styrt av et «time-range-objekt», som sperrer all adgang fra Internett.
  2. Dernest blokkeres all trafikk som har opphav fra dokumentasjonsprefikset eller som av en eller annen grunn (for eksempel ved source routing) blir rutet over linknettet.
  3. Det samme skjer med ULA-prefikset.
  4. Trafikk med feil avsenderadresse, vårt tildelte prefiks, tillates ikke.
  5. Trafikk fra tracker.thepiratebay.org tillates ikke. Vi på IT-avdelingen er temmelig lei av å motta «nastygrams» fra tid til annen.
  6. Videre sperres en rekke «skumle» porter. Det får ikke hjelpe at noen av de sperrede portene også er høyst legitime «ephemeral ports».
  7. Vi tillater trafikk til det tildelte prefikset videre inn i rutingprosessen i kjerneswitchen.
  8. «Neighbor Discovery» tillates.
  9. All annen trafikk blir blokkert og logget.
no ipv6 access-list InetIPv6Inn
ipv6 access-list InetIPv6Inn

remark Sperre all trafikk ved behov
deny ipv6 any any log time-range sperr-alt

remark Blokkere og logge dokumentasjonsprefikset
deny ipv6 2001:0DB8::/32 any            log
deny ipv6 any            2001:0DB8::/32 log

remark Blokkere og logge ULA-prefikset
deny ipv6 FC00::/7 any      log
deny ipv6 any      FC00::/7 log

remark Blokkere og logge trafikk som har det tildelte prefikset som avsender
deny ipv6 2001:0DB8:0700::/48 any log

remark Blokkere trafikk fra tracker.thepiratebay.org
deny ipv6 2A01:298:3:1::/64 any log

remark Blokkere og logge skumle UDP-porter
deny udp any any eq     111       log
deny udp any any range  135 139   log
deny udp any any eq     445       log
deny udp any any range  1433 1434 log
deny udp any any eq     2049      log

remark Blokkere og logge skumle TCP-porter
deny tcp any any eq     111       log
deny tcp any any range  135 139   log
deny tcp any any eq     445       log
deny tcp any any range  1433 1434 log
deny tcp any any eq     2049      log
deny tcp any any eq    18067      log

remark All annen trafikk til det tildelte prefikset er tillatt
permit ipv6 any 2001:0DB8:0700::/48

remark Tillate ND
permit icmp any any nd-na
permit icmp any any nd-ns

remark Blokkere og logge all annen trafikk
deny   ipv6 any any log

exit

«Time-range»-objekter opprettes som før.

time-range sperr-alt
absolute start 00:00 1 January 2000 end 23:59 31 December 2000
exit

Aksesslista InetIPv6Ut knyttes til grensesnittet gi0/49 med følgende kommandoer:

interface GigabitEthernet0/49
ipv6 traffic-filter InetIPv6Ut out
exit

Aksesslista InetIPv6Ut

  1. Fortsatt kan det være kjekt å ha en regel, styrt av et «time-range-objekt», som sperrer all adgang til Internett.
  2. Dernest blokkeres all trafikk som av en eller annen grunn har opphav fra dokumentasjonsprefikset og eller som sendes til mottaksadresser innen dokumentasjonsprefikset.
  3. Det samme skjer med ULA-prefikset.
  4. Trafikk til tracker.thepiratebay.org tillates ikke.
  5. Videre sperres en rekke «skumle» porter. Det får ikke hjelpe at noen av de sperrede portene også er høyst legitime «ephemeral ports».
  6. Datarommenes adgang til internett begrenses til bare ICMPv6-trafikk ved eksamen, heldagsprøver o.l. Hvert datarom har sitt eget «time-range-objekt», og de samme «time-range-objektene» brukes for både IPv4- og IPv6-trafikk.
  7. Vi tillater trafikk fra det tildelte prefikset videre ut på linknettet.
  8. «Neighbor Discovery» tillates.
  9. All annen trafikk blir blokkert og logget.
no ipv6 access-list InetIPv6Ut
ipv6 access-list InetIPv6Ut

remark Sperre all trafikk ved behov
deny ipv6 any any log time-range sperr-alt

remark Blokkere og logge dokumentasjonsprefikset
deny ipv6 2001:0DB8::/32 any            log
deny ipv6 any            2001:0DB8::/32 log

remark Blokkere og logge ULA-prefikset
deny ipv6 FC00::/7 any      log
deny ipv6 any      FC00::/7 log

remark Blokkere trafikk til tracker.thepiratebay.org
deny ipv6 any 2A01:298:3:1::/64 log

remark Blokkere og logge skumle UDP-porter
deny udp any any eq     111       log
deny udp any any range  135 139   log
deny udp any any eq     445       log
deny udp any any range  1433 1434 log
deny udp any any eq     2049      log

remark Blokkere og logge skumle TCP-porter
deny tcp any any eq     111       log
deny tcp any any range  135 139   log
deny tcp any any eq     445       log
deny tcp any any range  1433 1434 log
deny tcp any any eq     2049      log
deny tcp any any eq    18067      log

remark Sperring av datarom ved eksamen o.l.
remark Blokkere og logge non-ICMP-trafikk fra rom 001
permit icmp 2001:0DB8:0700:8001::/64 any     time-range rom-001-uten-inet
deny   ipv6 2001:0DB8:0700:8001::/64 any log time-range rom-001-uten-inet

remark Blokkere og logge non-ICMP-trafikk fra rom 002
permit icmp 2001:0DB8:0700:8002::/64 any     time-range rom-002-uten-inet
deny   ipv6 2001:0DB8:0700:8002::/64 any log time-range rom-002-uten-inet

remark Trafikk fra det tildelte prefikset er tillatt
permit ipv6 2001:0DB8:0700::/48 any

remark Tillate ND
permit icmp any any nd-na
permit icmp any any nd-ns

remark Blokkere og logge all annen trafikk
deny   ipv6 any any log

exit

«Time-range»-objekter opprettes som før.

time-range rom-001-uten-inet
absolute start 07:30 22 May 2008 end 15:30 22 May 2008

time-range rom-002-uten-inet
absolute start 07:30 22 May 2008 end 15:30 22 May 2008
exit

Aksesslista InetIPv6Inn knyttes til grensesnittet gi0/49 med følgende kommandoer:

interface GigabitEthernet0/49
ipv6 traffic-filter InetIPv6Inn in
exit

Registrering i DNS

W. Richard Stevens skrev i sin bok «UNIX Network Programming, volume 1, 2nd edition», s. 239, om følgende måte for å navngi tjenester i DNS:

Navn Innhold
hostname-4.domain A 128.39.x.y
hostname.domain A 128.39.x.y
AAAA 2001:700:PPPP:SSSS::HHHH
hostname-6.domain AAAA 2001:700:PPPP:SSSS::HHHH
hostname-6ll.domain AAAA FE80::aabb:ccFF:FEdd:eeff
  • På denne måten angir hovednavnet både IPv4- og IPv6-adresser.
  • Legger man til -4 etter hostname får man bare opplyst IPv4-adresser.
  • Legger man til -6 etter hostname får man bare opplyst IPv6-adresser.
  • Legger man til -6ll etter hostname får man IPv6-link-local-adressen.

Denne metoden praktiseres ved Fagskolen. Hvorvidt dette er en god metode, det strides nok de lærde om. Jeg er kjent med å opprette et eget .ipv6-subdomene, for eksempel hostname.ipv6.domain, og plassere IPv6-adressene bare der.

Innspill på alternative måter mottas med takk.

Problemer med IPv6

Jeg har opplevd svært få problemer med innføringen av IPv6 ved Fagskolen. Enkelte programvareleverandører bør likevel ta seg selv i nakken.

Autodesk

Både Autodesk AutoCAD og Autodesk Inventor Professional bruker lisenssystemet FLEXlm for håndtering av «flytende» lisenser. Fagskolens FLEXlm-server er registert i DNS slik som beskrevet over. Dermed vil hovednavnet, flexlm.fig.ol.no, angi både én IPv4- og én IPv6-adresse.

Det er litt overraskende at når AutoCAD og Inventor Professional sjekker det oppgitte hostnamet i DNS, så sjekker de først etter IPv6-adresser og bruker den første og beste IPv6-adressa som dukker opp. Det virker ikke som om AutoCAD og Inventor Professional også sjekker IPv4-adressa når forsøkene på å bruke IPv6-adressa ikke fører frem, enda FLEXlm-tjenesten bare kan bruke, nettopp, IPv4.

Akkurat dette problemet vitner mest om slappe holdninger blant programmererne hos Autodesk, men kanskje er dette heller et gjennomført problem ved navneløsinga i Microsoft Windows.

Løsningen ble i allefall å oppgi flexlm-4.fig.ol.no som lisensserver for AutoCAD og Inventor Professional, da dette hostnamet bare angir IPv4-adressa til FLEXlm-serveren.

Opera

Gitt at du bruker Opera 9.64 i Microsoft Windows XP Professional som har IPv6 installert, men som i øyeblikket bare har en IPv4-forbindelse og ingen suksess med å bruke 6to4 (annet enn til http://ipv6.google.com/). (Problemet med 6to4 kan skyldes mangelfullt oppsett eller andre problemer/uvillighet hos ISP-en.)

Opera har store problemer med å slå over til bare å bruke IPv4-adresser under slike forhold. Igjen, dette kan være relatert til navneløsinga i Windows, men Mozilla Firefox 3.5.2, under de samme forutsetningene, har ingen problemer med å bytte til IPv4, så problemet kan umulig være uløselig.

Gode argumenter for å skifte ut 3560-en som kjerneswitch

Dersom IPv6 virkelig slår an også i de kommersielle delene av Internett, så kan det bli aktuelt å bytte ut dagens kjerneswitch med kraftigere utrustning, for eksempel Cisco Catalyst 6500-serien.

Følgende seks punkter anses som hittil gode argumenter for et slikt skifte:

  • (antatt) Mer TCAM.
  • Refleksive ACL-er.
  • Vettuge IPv6-ACL-er.
  • Støtte for IPv6 multicast.
  • NetFlow
  • NAT (uffda, nå bannet jeg visstnok igjen)

Cisco ASA55xx

Fagskolen bruker en Cisco ASA5520 som VPN-ruter som kan kommunisere med IPv6. Så fort Cisco makter å lage en (AnyConnect) VPN-klient uten «alvorlige barnesykdommer», så kan «VPN-nomadene» også få utdelt IPv6-adresser.

Fagskolen har ikke gått til innkjøp av SSL-lisenser, og dermed bruker vi den vanlige IPsec-klienten som bare tilbyr krypterte IPv4-forbindelser til Fagskolens interne IT-ressurser.

Det hadde vært fullt mulig å «snu på flisa», ved å bruke ASA5520-boksen som hovedruter og Catalyst 3560-en som distribusjonsswitch og DHCPv6-server. Med nye ASDM 6.2(1), som endelig forstår seg på IPv6-kommandoene, så er det mye enklere å redigere også IPv6-ACL-er enn det har vært tidligere.

Windows 2000

I utgangspunktet vil ikke «IPv6 Technology Preview for Windows 2000» la seg installere på noe annet enn Microsoft Windows 2000 med Service Pack 1. Med litt triksing som vist under, så går det an å få IPv6 til å fungere også for Service Pack 4.

  1. Pakk ut filene manuelt med kommandoen setup -x.
  2. Endre NTServicePackVersion i fila hotfix.inf til 1024.
  3. Installer IPv6-protokollen ved å bruke «Kontrollpanelet».
  4. Kopier de øvrige filene, slik som ftp.exe, ping.exe og telnet.exe, til riktig katalog.

Windows 2000 har ikke støtte for AAAA-oppslag i DNS, så PuTTY og andre programmer må bruke IPv6-adresser direkte.

Utkobling av randomiserte, autokonfigurerte IPv6-adresser

Windows XP

I Windows XP er det tilstrekkelig å bruke én av følgende to kommandoer for å slå av randomiserte, autokonfigurerte IPv6-adresser:

C:\Windows>ipv6 gpu UseTemporaryAddresses no

eller

C:\Windows>netsh interface ipv6 set privacy state=disabled

I Windows Server 2003 & 2008 kan vi bare bruke netsh-kommandoen.

Windows Vista og Windows 7

I Windows Vista og Windows 7 kan vi bare bruke netsh-kommandoer, og vi må faktisk oppgi disse to kommandoene fra et skall med forhøyede privilegier (runas /u:Administrator cmd):

C:\Windows>netsh interface ipv6 set privacy state=disabled
C:\Windows>netsh interface ipv6 set global randomizeidentifiers=disabled

FreeBSD 6.4/7.2

Aktivere IPv6

For å aktivere bruk av IPv6 i FreeBSD, så må du alltid ha med følgende linje i fila /etc/rc.conf:

ipv6_enable="YES"

Dette vil slå på behandling av IPv6-trafikk, og setter link-lokale og autokonfigurerte IPv6-adresser på alle aktive grensesnitt.

Statiske IPv6-adresser

Dersom du vil bruke statiske IPv6-adresser, så settes dette med egne variabler i /etc/rc.conf hvor navnet på grensesnittet legges til i slutten av variabelnavnene.

Har du et grensesnitt som heter em0, så kan du angi en statisk IPv6-adresse på denne måten i /etc/rc.conf:

ipv6_ifconfig_em0="2001:db8:700:1::2 prefixlen 64"

Ytterligere IPv6-adresser kan settes for samme grensesnitt på denne måten:

ipv6_ifconfig_em0_alias0="2001:db8:700:1::3 prefixlen 64"
ipv6_ifconfig_em0_alias1="2001:db8:700:1::4 prefixlen 64"
ipv6_ifconfig_em0_alias2="2001:db8:700:1::5 prefixlen 64"

OBS! Så fort du setter én eller flere statiske adresser på én eller flere av grensesnittene, så blir ikke mottak av ruterannonsering slått på under oppstart av systemet.

Statisk routeradresse

Når du setter statiske IPv6-adresser på grensesnittene , så må du som regel også sette statisk ruteradresse.

Dette gjøres i /etc/rc.conf på denne måten:

ipv6_defaultrouter="2001:db8:700:1::1"

Dersom du vil bruke statiske IPv6-adresser, men vil at alle de andre parametrene skal hentes fra ruterannonseringene, så du legge følgende linje inn i /etc/sysctl.conf:

net.inet6.ip6.accept_rtadv=1

IPv6 eller IPv4?

Sjekk selv om du kan kontakte tjenester i «Uninettet» med IPv6 eller om du må holde deg til IPv4.

Prettyprint av ACL-logger fra syslog

AWK-snutten under brukes for å prettyprinte ACL-loggene ved FiG. En typisk linje i syslog-fila for GSW-en kan se slik ut:

Feb  5 23:34:11 <local7.info> fig-gsw.fig.ol.no 1234567: 1234568:
Feb  5 23:34:11.440 CET: %IPV6_ACL-6-ACCESSLOGP: list VlanXXIPv6UtTil/800
denied udp 2001:700:1100:XXXX:XXXX:XXXX:XXXX:XXXX(4215) ->
FD5C:14CF:C300:XXXX:XXXX:XXXX:XXXX:XXXX(2672), 3 packets

(Linja er splitta over fire linjer slik at websida ikke blir for brei.)

Navnene på ACL-ene vises sammen med sekvensnummeret på den aktuelle regelen, separert med en skråstrek. Hver regel får vanligvis et sekvensnummer som er regelens posisjon i ACL-en multiplisert med 10. Dette gjøres for at du skal kunne legge inn nye regler mellom de eksisterende reglene ved for eksempel å bruke sequence nn i slutten av de nye reglene.

Det kan derfor være lurt å endre verdien til aclwidth til den største navnelengden blant dine ACL-er, pluss nok plass til skråstreken og til det største antallet av regler multiplisert med 10. Husk at bredden skal oppgis som et negativt tall slik at feltet blir venstrejustert.

BEGIN {
  aclwidth = -21;
}

/%IPV6_ACL-6-ACCESSLOGP/ {
  month    = $8;
  day      = $9;
  time     = $10;
  zone     = $11;
  acl      = $14;
  action   = $15;
  proto    = $16;
  src      = $17;
  dst      = $19;

  split(src, a, "(");
  src_ip   = a[1];
  src_port = a[2];
  split(src_port, a, ")");
  src_port = a[1];

  split(dst, a, "(");
  dst_ip   = a[1];
  dst_port = a[2];
  split(dst_port, a, ")");
  dst_port = a[1];

  printf "%s % 2s %s %s % *s % -9s % -5s % -39s % 5s => % -39s % 5s\n",
         month, day, time, zone, aclwidth, acl, action, proto,
         src_ip, src_port, dst_ip, dst_port;
}

/%IPV6_ACL-6-ACCESSLOGNP/ {
  month    = $8;
  day      = $9;
  time     = $10;
  zone     = $11;
  acl      = $14;
  action   = $15;
  proto    = $16;
  src      = $17;
  dst      = $19;

  split(dst, a, ",");
  dst = a[1];

  printf "%s % 2s %s %s % *s % -9s % -5s % -39s       => % -39s\n",
         month, day, time, zone, aclwidth, acl, action, proto, src, dst;
}

Her et eksempel på prettyprint av en ACL-logglinje som ble trigget av %IPV6_ACL-6-ACCESSLOGP:

Feb 12 15:43:08.804 CET: VlanXXIPv6UtTil/990   denied    tcp   
2001:718:1E02:XX:XXXX:XXXX:XXXX:XXXX    51557 => 
2001:700:1100:X:XXXX:XXXX:XXXX:XXXX        80

(Linja er splitta over tre linjer for at websida ikke skal bli for brei.)

I alt er det fire ACL-relaterte nøkkelord som man bør sjekke etter. Ved FiG har vi hittil bare sett de to første nøkkelordene:

  1. %IPV6_ACL-6-ACCESSLOGP
  2. %IPV6_ACL-6-ACCESSLOGNP
  3. %IPV6_ACL-6-ACCESSLOGDP
  4. %IPV6_ACL-6-ACCESSLOGSP

Feiring av 3-årsjubileumet i 2009

3-årsjubileumet for IPv6 ved Fagskolen i Gjøvik ble feiret med champagnebrus og marsipankake. Kaka var «farlig god».

IPv6-kaka i 2009

«Bruduljer på tundraen» med Cisco IOS 12.2(50)SE3

GSW-en ved Fagskolen hadde før oppgraderingen til IOS 12.2(50)SE3, kjørt i vel et helt år med IOS 12.2(46)SE. Underveis hadde flere VLAN blitt lagt til, og VLAN-ene på GSW-en får utdelt MAC-adresser i stigende orden. De samme MAC-adressene brukes for å danne GSW-ens «link-local»-adresse for hvert VLAN.

Da GSW-en ble restartet i september 2009 i forbindelse med oppgraderingen, så ble MAC-adressene delt ut på nytt for alle grensesnittene, men denne gangen i grensesnittenes nummererte rekkefølge. Dette medførte at flere VLAN-grensesnitt fikk ny «link-local»-adresse, og dermed også ny «solicited node multicast address».

Kantportene ved Fagskolen følger «tradisjonell» Uninett-standard, hvor kantportene er konfigurert slik:

interface GigabitEthernet0/MM
description Beskrivelse ...
switchport access vlan NNNN
switchport mode access
switchport nonegotiate
switchport block multicast
switchport block unicast
switchport port-security maximum 3
switchport port-security
switchport port-security aging time 60
switchport port-security violation restrict
switchport port-security aging type inactivity
storm-control broadcast level 80.00
no cdp enable
spanning-tree portfast
spanning-tree bpduguard enable
spanning-tree guard root
ip dhcp snooping limit rate 100

Ikke en eneste kantport, bortsett fra kantportene på GSW-en, så noe som helst til ruterannonseringene. Dermed fikk intet annet utstyr satt autogenererte IPv6-adresser, og heller ikke beskjed om å bruke DHCP6 for å skaffe de andre nødvendige opplysningene.

La meg raskt legge til at alle Catalystene ble oppgradert til samme versjon, 12.2(50)SE3, og alle Catalystene ble restartet på det samme tidspunktet.

Etter mange timers feilsøking, fant jeg ut at problemet forverres av kommandoen switchport block multicast.

På grunn av endringene i MAC-adressene for VLAN-ene i GSW-en, så innebærer kommandoen switchport block multicast at ting går i stå.

Dersom noen vet hvordan det går an å tømme «adressecachene» som brukes av kommandoene switchport block multicast og switchport block unicast, enten for hver port eller globalt for hver switch, så fortell meg gjerne om dette.

Dermed bruker Fagskolen, inntil videre, følgende oppsett på kantportene:

interface GigabitEthernet0/MM
description Beskrivelse ...
switchport access vlan NNNN
switchport mode access
switchport nonegotiate
no switchport block multicast
switchport block unicast
switchport port-security maximum 3
switchport port-security
switchport port-security aging time 60
switchport port-security violation restrict
switchport port-security aging type inactivity
storm-control broadcast level 80.00
no cdp enable
spanning-tree portfast
spanning-tree bpduguard enable
spanning-tree guard root
ip dhcp snooping limit rate 100
 
 
gigacampus/fig-ipv6.txt · Last modified: 2010/08/30 10:10 by ximalas@rnd.feide.no

Viktig melding: openwiki.uninett.no

UNINETT OpenWiki er under utfasing. Wikier som er lite brukt er satt i kun-lese-modus. Ta kontakt med UNINETT for å åpne for skrivetilgang ved behov.

Group memberships: no groups