IPv6 proxy NDP

Dacă în ipv4 avem ARP (Address Resolution Protocol), în cazul IPv6 avem NDP (Neighbor Discovery Protocol). In cazul rețelelor simple, treaba merge de minune. De curand însă am întâmpinat o situație în care am fost nevoit să folosesc NDP proxy în linux.

linux-ipv6-ndp

Considerăm un sistem pe care rulează freebsd, cu interfața bge0 conectată la un alt sistem pe care ruleaza linux (ex: Ubuntu 14). Pe linux, interfața în care este conectat cablul este em1.

Pe sistemul cu linux avem creată o interfață virtuală dummy0 care are asignată o adresă IPv6.

Veți constata că dacă dați ping6 de pe sistemul cu freebsd către 2a00:2222:4/48, nu veți primi nici un răspuns. Explicația este că sistemul freebsd trimite în rețea un mesaj „ICMP6, neighbor solicitation” la care sistemul linux nu raspunde, chiar dacă adresa respectivă este configurată acolo. Dacă adresa IPv6 era configurată pe interfața em1 a sistemului linux, atunci acesta răspundea cu mesaj de tip „ICMP6, neighbor advertisement”.

Cum putem rezolva situația și să putem face transfer de date între cele două sisteme? O soluție rapidă și ușoară ar fi mutarea adresei IPv6 pe interfața em1, dar uneori nu este posibil acest lucru din diverse motive. Cea de-a doua soluție, pe care am folosit-o eu, presupune câteva setări suplimentare pe sistemul cu linux:

  • activăm forward pentru IPv6:
    sysctl sys.net.ipv6.conf.all.forwarding=1
  • activăm NDP proxy:
    net.ipv6.conf.all.proxy_ndp=1
  • definim adresa IP pentru care sistemul va adăuga proxy NDP:
    ip neigh add proxy 2a00:2222:4/48 dev em1

Asta e tot!
Atenție: adresele IPv6 folosite în acest articol sunt doar pentru exemplificare și sunt alease aleator.

Articole asemanatoare:

Postat în IT Etichetat cu: , , , , , ,

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*