IPv6 tunnel op een Fortigate instellen

kennislevel 1 kennislevel 2 kennislevel 2 Technisch niveau Waddinxveen, 7 juni 2018 Waddinxveen, 7 juni 2018 Security Security

Het IPv6 protocol bestaat al jaren en wordt, zeker de laatste tijd, steeds meer gebruikt. Toch zijn er nog veel bedrijven, die nog geen IPv6 verkeer kunnen doen. Dit kan diverse redenen hebben, waarbij de meest voorkomende zijn:

De Firewall kan het niet aan
Iedere recente firewall kan wel IPv6 aan. Wel kan het zijn dat het een globale instelling is, die standaard uit staat. Om het te activeren is vaak een herstart van de firewall noodzakelijk.
De firewall kan het wel, maar is nog niet geconfigureerd
Neem contact met ons op, zodat wij u hierbij kunnen adviseren en assisteren.
De internetprovider biedt het niet aan
Vrijwel alle internetproviders hebben IPv6 draaiend in hun back-bone. Of ze dit ook daadwerkelijk aanbieden aan eindklanten is een ander verhaal. Neem contact op met uw internetprovider en vraag naar de mogelijkheden van een dual-stack (IPv4 en IPv6) aansluiting.
Het is te ingewikkeld
Dat valt best wel mee. Op een aantal specifieke zaken na, kan je IPv6 op dezelfde manier inrichten als dat je op IPv4 zou doen. Zie ook ons artikel IPv6-in-een-notendop.

Hoe ga je te werk?

Stel dat we een webserver hebben die we niet alleen op IPv4 willen aanbieden, maar ook op IPv6. Echter, de internetprovider levert geen IPv6 op de aansluiting. De meest handige oplossing is IPv6 verkeer tunnelen over IPv4. Dat kan door gebruik te maken van een tunnel-broker, zoals die van Hurricane Electric: tunnelbroker.net. Deze tunnelbroker is gratis en is vrij eenvoudig te voorzien van een volledig /48 netwerk.

Na registratie bij deze tunnelbroker kan je een reguliere IPv6 tunnel maken. Daarvoor heb je wel het externe IP-adres nodig van je firewall. Kies de juiste tunnel-server uit, waarschijnlijk die in Amsterdam. Daarna krijg je een IPv6 netwerk met een /64 subnet. Dit subnet zal worden gebruikt als koppeling tussen je eigen firewall en de tunnel server van Hurricane Electric. Daarnaast krijg je standaard een gerouteerd /64 subnet, wat gebruikt kan worden voor de interne systemen. Je kunt ook gelijk een routed /48 subnet aanvragen, zodat je intern meerdere /64 subnetten kunt gebruiken. Als een internetprovider standaard IPv6 mee geeft, dan is dat meestal ook een /48. Het is nu alleen nog maar zaak dat het allemaal correct in de firewall wordt geconfigureerd. In dit document wordt uitgelegd hoe dit met een Fortigate firewall wordt gedaan.

Stap 1: IPv6 aanzetten op de firewall.
IPv6 staat standaard niet aan, dus deze feature moet worden aangezet bij "System / Feature Visibility".
IPv6 tunnel op een Fortigate instellen - deel 1 Stap 2: Maak de tunnel interface aan.
Het aanmaken van de IPv6-over-IPv4 tunnel interface kan alleen via de command-line. In het onderstaande voorbeeld is de destination het IP adres van de tunnel-server van Hurricane Electric, het source IPv4 adres is het publieke IP adres van de firewall, en het IPv6 adres is het client-ipv6 adres van je tunnel.
config system sit-tunnel
  edit "HE"
    set destination 216.66.84.46
    set ip6 2001:470:1f14:9f4::2/64
    set source 123.123.123.123
    set interface "wan1"
  next
end
config router static6
  edit 1
    set device "HE"
  next
end
Stap 3: Vul het juiste IPv6 adres in bij de externe en interne interface.

Op de Fortigate 60D is de WAN1 interface de aansluiting naar internet. Hier gaan we een IPv6 subnet aan koppelen, wat door de tunnelbroker wordt gerouteerd. Dit kan dus het /64 subnet zijn wat je standaard krijgt bij de aanmaak van de tunnel, maar het kan ook een /64 subnet zijn uit het /48 segment.
IPv6 tunnel op een Fortigate instellen - deel 2 Hetzelfde kunnen we doen voor de interne netwerken. Het heeft de voorkeur om gebruik te maken van /64 subnetten voor ieder vlan/interface van de firewall. Het is prima mogelijk om /120 te gebruiken, echter dan werken bepaalde zaken niet zoals verwacht. Zo werkt de automatische adres toewijzing niet naar behoren voor windows clients. Linux gebaseerde systemen hebben hier duidelijk minder moeite mee.
Nu we het toch over "stateless address autoconfiguration (SLAAC)" hebben, in het onderstaande stukje configuratie is dit geactiveerd op de internal interface. De geel gemarkeerde items zijn alleen via de command-line te configureren.
edit "internal"
  set vdom "root"
  set ip 192.168.1.254 255.255.255.0
  set allowaccess ping https ssh snmp http capwap
  set type hard-switch
  set device-identification enable
  set device-identification-active-scan enable
  set role lan
  set snmp-index 6
  config ipv6
    set ip6-address 2001:470:9d7e:1::1/64
    set ip6-allowaccess ping https ssh snmp http capwap
    set ip6-send-adv enable
    set ip6-other-flag enable
    config ip6-prefix-list
    edit 2001:470:9d7e:1::/64
     set autonomous-flag enable
     set onlink-flag enable
     set rdnss 2001:4860:4860::8888
     set dnssl "demo.local"
    next
   end
  end
 next
De RDNSS (recursive ipv6 dns server) wijst hier naar het publieke ipv6 adres van google, maar dat kan natuurlijk ook uw eigen interne DNS server zijn. De dnssl (dns search list) is ook ingevuld. Dit zijn typisch zaken, die in IPv4 door de DHCP-server wordt uitgedeeld. Stap 4: Aanmaken van de juiste policy rules.
Wat nu nog resteert, is het aanmaken van de juiste policy rules. Voor IPv4 zijn er waarschijnlijk al firewall rules gemaakt, maar voor IPv6 is dat nog niet gebeurd. Begin met het toestaan van IPv6 verkeer vanuit het internal netwerk naar de "HE" interface (IPv6 tunnel broker). Let daarbij op dat NAT uit staat!
IPv6 tunnel op een Fortigate instellen - deel 3 Controleer in FortiView of de clients daadwerkelijk IPv6 sites kunnen benaderen. Het eenvoudigst is om te kijken naar Google websites, want Google heeft vrijwel alles op IPv6 aan staan. In de bovenstaande voorbeelden hebben we een zogenaamde “dual-stack” oplossing gemaakt. Daarbij krijgen de werkplekken dus IPv4 en IPv6 adressen. Het IPv4 verkeer zal worden geNAT wanneer het richting internet gaat. Wat als we een netwerk willen maken dat alleen maar met IPv6 werkt?
Maar wat nu als je een netwerk wilt maken dat alleen maar IPv6 verkeer verwerkt? De redenen daarvoor kunnen heel divers zijn. Dat kan bijvoorbeeld te maken hebben met schaalgrootte. Zo werken Google en Facebook op hun interne netwerken al vrijwel volledig op IPv6. Ook kan het een manier zijn om applicaties te testen en ontwikkelaars te dwingen om rekening te houden met IPv6 netwerken.

Waar loop je tegenaan als je vanuit een IPv6 netwerk moet communiceren met een IPv4 netwerk? Als eerste moet er iets gebeuren met DNS. De DNS server geeft namelijk een IPv4 adres terug voor systemen die niet op IPv6 plaatsen. Om dat probleem op te lossen moet het IPv4 adres worden omgevormd tot een IPv6 adres door de DNS server. Daar is een standaard voor genaamd DNS64 en is vastgelegd in RFC6147.
Deze link van Google geeft duidelijk aan hoe het werkt.

Daarnaast moeten er firewall rules gemaakt worden die IPv6 verkeer d.m.v. NAT naar een IPv4 netwerk kunnen sturen. Dit zijn de NAT64 rules, en eventueel ook de NAT46 rules, als het verkeer ook andersom moet gaan werken.

Deze NAT64 en NAT46 feature moeten wel eerst worden aangezet op een FortiGate firewall. Kijk bij "System/Feature Visibility" en zet bij “additional features" de NAT46 & NAT64 optie aan. Dit zorgt ervoor dat er specifieke firewall policy rules gemaakt kunnen worden voor dit verkeer. Verder zal via de CLI nog een aantal zaken geregeld moeten worden. Onderstaande regels zetten NAT64 aan, en zorgen ervoor dat de DNS entries op de juiste manier worden verwerkt naar IPv6 adressen.
config system nat64
  set status enable
  set always-synthesize-aaaa-record disable
end
Er rest alleen nog de aanpassing in de DNS voor de clients, zodat die de DNS64 server van Google gaan gebruiken. edit "internal"
  set vdom "root"
  set ip 192.168.1.254 255.255.255.0
  set allowaccess ping https ssh snmp http capwap
  set type hard-switch
  set device-identification enable
  set device-identification-active-scan enable
  set role lan
  set snmp-index 6
  config ipv6
    set ip6-address 2001:470:9d7e:1::1/64
    set ip6-allowaccess ping https ssh snmp http capwap
    set ip6-send-adv enable
    set ip6-other-flag enable
    config ip6-prefix-list
    edit 2001:470:9d7e:1::/64
     set autonomous-flag enable
     set onlink-flag enable
     set rdnss 2001:4860:4860::8888
     set dnssl "demo.local"
    next
   end
  end
 next

Wilt u hulp van een gecertificeerd Fortinet expert?

Contact

SolidBE B.V.
Maarten Schoutenstraat 19
2741 SV Waddinxveen

KVK 51248794
NL 82 3170 846 B01
NL07 RABO 0157 5353 98