Skip to main content

De Experiabox V10 biedt bij IPv6 de mogelijkheid om een of meer poorten te openen naar een IPv6 adres of naar een MAC adres. Een applicatie mag maar een keer gebruikt worden, maar een zelfde poort in verschillende applicaties is geen probleem. Een aantal webservers kan dus via poorten 80 en 443 wereldwijd beschikbaar gemaakt worden.

Een poort openen naar een MAC adres betekent dat alle IPv6 adressen op die interface gebruikt kunnen worden. Ik heb het getest met 100 Apache virtuele webservers en dat werkt met een enkele firewall regel.

Er is echter wat vreemds aan de hand: firewalls werken met IP adressen en poorten, maar een MAC adres zit op het hardware niveau. Een binnenkomend pakket weet helemaal niets van het MAC adres waar het naar toe moet. Eerst moet “Neighbor Discovery” uitgevoerd worden om het MAC adres te achterhalen, dan kun je kijken of dat past bij een firewall regel.

Echter: Als je een HTTP verzoek van buiten laat komen naar een niet bestaand adres, gebeurt er aan de LAN kant helemaal niets. Voeg je dat adres toe aan het syteem, dan werkt het direct…. Hoe weet de Experia box dat???? Dat was zoekwerk, maar zodra je in Linux een IPv6 adres toevoegt aan een interface, gaat er een Neighbor Sollicitation uit om te kijken of dat adres toevallig al gebruikt wordt, DAD detectie.  Dit pakket bevat het MAC adres en het gewenste adres. Blijkbaar gebruikt de Experia V10 dit om de firewall regels te maken. Je kunt die DAD detectie in Linux uit zetten, dan werkt de forwarding naar MAC helemaal niet meer. 

Dus: Effectief  wordt het al dan niet werken van IPv6 forwarding naar MAC in de V10 bepaald aan de LAN kant, als de gebruikte NAS of router die DAD detectie niet of niet correct implementeert gaat het niet werken.

Bij niet werken van de forwarding is het dus verstandig om van het systeem dat bereikt moet worden de netwerk interface te herstarten of te rebooten. 

 

Ik heb geen idee of de Experia box 12 dezelfde procedure gebruikt, ik heb er geen om te testen.

Er is echter wat vreemds aan de hand: firewalls werken met IP adressen en poorten, maar een MAC adres zit op het hardware niveau. Een binnenkomend pakket weet helemaal niets van het MAC adres waar het naar toe moet. Eerst moet “Neighbor Discovery” uitgevoerd worden om het MAC adres te achterhalen, dan kun je kijken of dat past bij een firewall regel.

De communicatie op een LAN vind in de meeste lokale netwerken al sinds jaar en dag volledig plaats op MAC adressen (ISO layer 2). In de arp tabel op de router is vastgelegd welk IPv4 adres aan welk MAC adres gekoppeld is en op welke poort (LAN / wifi) dat MAC adres aangesloten is. Ook voor IPv6 is er een soortgelijke tabel op de router en die wordt de IPv6 neighbor table of ook wel IPv6 neighbor discovery cache genoemd.

De communicatie op het LAN geschiedt vervolgens volledig op layer 2.


Ja, dat klopt, binnen een LAN praat mac met mac. Maar bij de V10 als optie en afgaande op een screenshot bij de V12 als enige optie kun je WAN-IPv6-poorten  aan MAC adressen aan de LAN kant koppelen. Met mijn beperkte kennis weet ik echt niet hoe ik dat in Linux of PfSense voor elkaar moet krijgen. Dus maar eens kijken hoe het werkt….  Verrassend dat de V10 duplicate address detection gebruikt om een “IPv6 adres/MAC adress” tabel te maken die voor de firewall gebruikt wordt. Maar er blijven vragen over: hoe lang leeft die tabel, is verkeer een “keep-alive”?  Wordt het normale “Neighbour Detection” verkeer gemonitord om de tabel bij te houden? (volgens mij niet). Overleeft de tabel een reset? Zo nee, dan zou je dus de aangesloten systemen ook moeten resetten.

 

 

 

 

 

 

 

 

 


Maar bij de V10 als optie en afgaande op een screenshot bij de V12 als enige optie kun je WAN-IPv6-poorten  aan MAC adressen aan de LAN kant koppelen.

Dat is ook uitstekend. Ik zou willen dat dat ook bij port-forwarding op IPv4 zou kunnen immers dan zou je ook geen DHCP bindings meer hoeven te maken voor apparaten waar naartoe geforward moet worden.

In een ver verleden kon dat op de V10 ook maar helaas is dat de nek omgedraaid.

 

Verrassend dat de V10 duplicate address detection gebruikt om een “IPv6 adres/MAC adress” tabel te maken die voor de firewall gebruikt wordt.

Hoe kom je daarbij?

Vele routers houden een IPv6 neighbor discovery cache bij om te vertaling te kunnen maken van IPv6 naar MAC zodat de communicatie op basis van MAC adres (ISO layer 2) op het LAN doorgezet kan worden.

Nogmaals, communicatie op het LAN gaat o.b.v. MAC adressen, niet op basis van IPv4 of IPv6 adressen. 

 

Maar er blijven vragen over: hoe lang leeft die tabel, is verkeer een “keep-alive”?  Wordt het normale “Neighbour Detection” verkeer gemonitord om de tabel bij te houden? (volgens mij niet). Overleeft de tabel een reset? Zo nee, dan zou je dus de aangesloten systemen ook moeten resetten.

Die tabel wordt bijgehouden m.b.v. het IPv6 neighbor discovery protocol wat gewone ICMPv6 berichten zijn.

Misschien is deze site interessant voor je om wat achtergrond informatie te krijgen.

 

De IPv6 neighbor discovery cache hoeft geen reset te overleven want hij wordt vanzelf weer opgebouwd nadat de router weer opgestart is. In de firewall staat alleen het MAC adres en die verandert uiteraard niet.


Bedankt voor de link, het is een duidelijke uitleg!

Duplicate Address Detection is een speciale versie van Neighbor Discovery met zender adres = ¨::" en het gewenste adres als vraag.

 

Verrassend dat de V10 duplicate address detection gebruikt om een “IPv6 adres/MAC adress” tabel te maken die voor de firewall gebruikt wordt.

Hoe kom je daarbij?

Ik kan er niets anders van maken: als ik "dad" via kernel parameter uit zet en een serie adressen aanmaak, zijn die niet via MAC bereikbaar. Zet ik ¨dad" weer aan, verwijder een adres en maak het opnieuw aan, dan is dat het enige adres dat van buiten bereikbaar is.

 

Het is ook het enige moment dat een adres zich bekend maakt zonder expliciet opgevraagd te worden. Als je een service van buitenaf wilt bereiken op een systeem met een vast+temp adres, zal dat vaste adres nooit in de ND cache verschijnen, tenzij je toestaat dat vanaf het internet ND wordt gestart.

Wellicht toch iets om rekening mee te houden als op het forum noodkreten verschijnen van mensen die IPv6 pinhole niet aan de praat krijgen. Ik heb gelezen dat in ieder geval Windows, Linux en BSD ¨dad¨ ondersteunen. Als je een Windows systeem aansluit, ICMPv6 doorlaat naar het MAC adres en score 20 krijgt op IPV6-test.com, zou die forwarding in principe moeten werken. Eventueel ook testen met remote desktop server. Dan kijken naar het besturingssysteem van de NAS, waarbij je natuurlijk nooit weet in hoeverre dat uitgekleed of aangepast is.

 

 

 


IPv6 Duplicate Address Detection is gewoon een verplicht onderdeel van de IPv6 SLAAC procedure en mag ook niet uitgezet worden voor het toewijzen van een IPv6 adres.

IPv6 Duplicate Address Detection werkt gewoon o.b.v. Neighbor Solicitation en Neighbor Advertisement berichten. De router reageert dan ook niet specifiek op DAD maar op de "gewone" Neighbor Solicitation en Neighbor Advertisement berichten.

Als IPv6 Duplicate Address Detection uitgezet wordt dan behoort de netwerkadapter ook geen IPv6 adres te krijgen (bron) en daarmee is het cirkeltje weer rond want dan is er ook geen communicatie o.b.v. IPv6 met dat apparaat mogelijk en hoeft de IPv6 firewall dus ook niet te reageren op die rule met dat MAC adres.


OK, als dat verplicht is zou dat niet de oorzaak mogen zijn bij problemen met forwarding. Maar misschien toch iets om in de gaten te houden en bij twijfel een Windows systeem aansluiten.

Ik  deed zojuist nog een gemene test: Adressen toevoegen, weer verwijderen en dezelfde adressen op een andere laptop  met DAD uitgeschakeld toevoegen, dus buiten het zicht van de V10. Ik kreeg de web pagina van de tweede laptop die absoluut niet met MAC adres  in de IPv6 regels vermeld stond.  Onder de motorkap staan dus de normale level 3 regels “Accepteer poort x  naar adres y”. Weer een en ander geleerd. Bedankt voor het lezen en antwoorden!