Lo que intento hacer es enrutar el tráfico IPv6 a través de un túnel vpn. De esa manera, debería poder usar IPv6 en una red que no sea compatible con IPv6.
Tengo un VPS que tiene un bloque IPv6 asignado. Parte de este bloque que quiero usar para clientes openvpn. El rango que tenía en mente era 2001:db8::111:800:0/112
(el prefijo es anónimo), porque openvpn solo admite / 64 y / 112 como subredes.
IPv6 a través del túnel ya está funcionando, desde el cliente, puedo hacer ping al servidor ( 2001:db8::111:800:1
), y también a las interfaces en el servidor ( 2001:db8::111:100:100
y 2001:db8:216:3dfa:f1d4:81c0
).
Sin embargo, cuando intento hacer ping a google.com desde el cliente, no obtengo respuesta (tiempo de espera de ping). Para depurar este problema, he usado tcpdump para capturar el tráfico en el servidor, y puedo ver los paquetes de ping saliendo, pero no hay respuestas que vuelvan. Agregar reglas de registro a ip6tables muestra lo mismo, paquetes saliendo, pero nada entrando.
Utilicé una herramienta de trazado de ruta en línea que obtiene un tiempo de espera de mi servidor. También intenté configurar la ip directamente en la interfaz, lo que hace que se 2001:db8::111:800:1001
pueda acceder a la ip ( ), así que creo que este es un problema de enrutamiento.
He habilitado el reenvío para ipv6 a través /proc/sys/net/ipv6/conf/all/forwarding
. ip6tables tiene políticas permitidas para todas las cadenas.
Mi pregunta es, ¿qué se necesita exactamente para que Linux acepte ese paquete para una IP que no está asignada a una interfaz y lo enruta más? Solo una ruta que existe no parece suficiente.
Aquí está la configuración para mi cliente y servidor. Hágale saber si se necesita más información.
Cliente
# ip -6 addresses
10: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qlen 100
inet6 2001:db8::111:800:1001/112 scope global
valid_lft forever preferred_lft forever
# ip -6 routes
2001:db8::111:800:0/112 dev tun0 proto kernel metric 256
2000::/3 dev tun0 metric 1024
Servidor
# ip -6 address
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
inet6 2001:db8:216:3dfa:f1d4:81c0/64 scope global dynamic
valid_lft 86254sec preferred_lft 14254sec
inet6 2001:db8::111:100:100/128 scope global
valid_lft forever preferred_lft forever
12: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qlen 100
inet6 2001:db8::111:800:1/112 scope global
valid_lft forever preferred_lft forever
# ip -6 route
2001:db8::111:100:100 dev eth0 proto kernel metric 256
2001:db8::111:800:0/112 dev tun0 proto kernel metric 256
2001:db8::/64 dev eth0 proto kernel metric 256 expires 86194sec
default via fe80::230:48ff:fe94:d6c5 dev eth0 proto ra metric 1024 expires 1594sec
TRACE
objetivo de tabla sin formato de iptables (tal vez no tanto aquí) ip neighbour
, y ip route get
. Además, especifique quién está haciendo ping google.ca
.
POSTROUTING ... MASQUERADE
en lanat
mesa. Pero no estoy seguro de entender por completo. ¿Estás tratando de tunelizar el tráfico IPv6? Si es así, ¿tiene las respectivas instalaciones establecidas? ¿Están-p ipv6
permitidos los paquetes en las reglas IPv4 (!)?