Featured image of post C贸mo configurar proxy ndppd (Ubuntu)

C贸mo configurar proxy ndppd (Ubuntu)

Que es NDP Proxy Daemon

Un NDP Proxy es un programa que escucha las Neighbor Solicitation (ICMPv6 tipo 135) en la interfaz WAN, esto se usa cuando tu ISP no da un prefijo mayor a /64 o te dio un /60 y se te acabo, en mi caso solo me dio un /64.

Ipv6 con prefijo /64

para poder crear otra subnet es necesario otro /64 como se puede observar en la tabla.

IPv6 Subnet Table

PrefixSubnet ExampleTotal IP Addresses# of /64 nets
4x::2^1242^60
8xx::2^1202^56
12xxx::2^1162^52
16xxxx::2^1122^48
20xxxx:x::2^1082^44
24xxxx:xx::2^1042^40
28xxxx:xxx::2^1002^36
32xxxx:xxxx::2^96##########
36xxxx:xxxx:x::2^92268,435,456
40xxxx:xxxx:xx::2^8816,777,216
44xxxx:xxxx:xxx::2^841,048,576
48xxxx:xxxx:xxxx::2^8065,536
52xxxx:xxxx:xxxx:x::2^764,096
56xxxx:xxxx:xxxx:xx::2^72256
60xxxx:xxxx:xxxx:xxx::2^6816
64xxxx:xxxx:xxxx:xxxx::2^64 (18,446,744,073,709,551,616)1
68xxxx:xxxx:xxxx:xxxx:x::2^60 (1,152,921,504,606,846,976)0
72xxxx:xxxx:xxxx:xxxx:xx::2^56 (72,057,594,037,927,936)0
76xxxx:xxxx:xxxx:xxxx:xxx::2^52 (4,503,599,627,370,496)0
80xxxx:xxxx:xxxx:xxxx:xxxx::2^48 (281,474,976,710,656)0
84xxxx:xxxx:xxxx:xxxx:xxxx:x::2^44 (17,592,186,044,416)0
88xxxx:xxxx:xxxx:xxxx:xxxx:xx::2^40 (1,099,511,627,776)0
92xxxx:xxxx:xxxx:xxxx:xxxx:xxx::2^36 (68,719,476,736)0
96xxxx:xxxx:xxxx:xxxx:xxxx:xxxx::2^32 (4,294,967,296)0
100xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:x::2^28 (268,435,456)0
104xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xx::2^24 (16,777,216)0
108xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxx::2^20 (1,048,576)0
112xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx::2^16 (65,536)0
116xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:x::2^12 (4,096)0
120xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xx::2^8 (256)0
124xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxx::2^4 (16)0
128xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx2^0 (1)0

IPv6 Subnetting

En algunas ocasiones, es indispensable entender c贸mo funciona para diagnosticar errores.

NDP Proxy de forma manual

para realizar de forma manual, primero tenemos que asignarle una ipv6 a uno de nuestros clientes, en mi caso cada cliente recibe la ip mediante SLAAC (Stateless Address Auto-Configuration).

Kali linux ipv6 type SLAAC

para esto primero se tiene que hacer una traducci贸n de direcci贸n, como se puede observar la ip fd78:e9fa:9f28:0:9c0d:dea4:8e6f:7b66 es de tipo ULA (Unique Local Address), esto se hace con ip6tables mediante NETMAP.

Wireshark ICMP type ULA

NETMAP
This target allows you to statically map a whole network of addresses onto another network of addresses.
It can only be used from rules in the nat table. --to address[/mask]
Network address to map to. The resulting address will be constructed in the following way:
All ‘one’ bits in the mask are filled in from the new address.
All bits that are zero in the mask are filled in from the original address.
IPv6 support available since Linux kernels >= 3.7.

implementacion de NETMAP con IPTABLES

Para implementar NETMAP con ip6tables, debemos conocer el prefijo delegado por el ISP y el prefijo ULA que utilizamos para la traducci贸n. El comando con ip6tables queda de la siguiente forma:

sudo ip6tables -t nat -I POSTROUTING -s fd78:e9fa:9f28::/64 -o eth0 -j NETMAP --to 2806:103e:15:6663::/64
sudo ip6tables -t nat -I PREROUTING -i eth0 -d 2806:103e:15:6663::/64 -j NETMAP --to fd78:e9fa:9f28::/64

una vez realizada la traducci贸n de prefijo los paquetes se ven de la siguiente forma.

alt text

alt text

ahora se necesita realizar el proxy de Neighbor Solicitation esto se usa para “Un nodo env铆a un mensaje NS para solicitar la direcci贸n MAC (la direcci贸n f铆sica) de un nodo vecino cuya direcci贸n IPv6 conoce”, el proxy hace que el router en el que estamos implementado ndppd proxy responda con un Neighbor Advertisement (NA), entonces primero se envia Neighbor Solicitation despu茅s el cliente debe responder con Neighbor Advertisement para posteriormente almacenarse en una tabla de Neighbor Cache Table.

Para lograr esto en el router, a帽adimos lo siguiente:

sudo ip -6 neigh add proxy 2806:103e:15:6663:9c0d:dea4:8e6f:7b66 dev eth0

# En sysctl hablilitamos proxy_ndp 
sysctl -w net.ipv6.conf.all.proxy_ndp=1
sysctl -w net.ipv6.conf.eth0.proxy_ndp=1

Como se puede observar, ya se realiza la traducci贸n y se responden los paquetes.

alt text

Con neigh show se puede ver los proxy activos

ip -6 neigh show proxy dev eth0

Instalacion de ndppd

sudo apt-get install ndppd

la configuraci贸n se encuentra en nano /etc/ndppd.conf insertamos esto para una configuraci贸n b谩sica, en el caso de rule es el prefijo que nos da el ISP

route-ttl 30000
proxy eth0 {
    router yes
    timeout 500
    ttl 30000
    promiscuous yes
    rule 2806:103e:15:6663::/64 {
    static
    }
}

Con esto, la configuraci贸n estar铆a completa. Para hacer debug se usa:

ndppd -vvv
Built with Hugo
Theme Stack designed by Jimmy