{"id":2053,"date":"2018-10-14T21:35:01","date_gmt":"2018-10-15T03:35:01","guid":{"rendered":"https:\/\/www.lastdragon.net\/?p=2053"},"modified":"2018-10-14T21:35:01","modified_gmt":"2018-10-15T03:35:01","slug":"ruteador-gnu-linux-ipv4-e-ipv6-con-pppoe-en-dsl-y-fibra-optica-usando-wide-dhcp-y-radvd","status":"publish","type":"post","link":"https:\/\/www.lastdragon.net\/?p=2053","title":{"rendered":"Ruteador GNU\/Linux IPv4 e IPv6 con PPPoE en DSL y Fibra \u00d3ptica usando wide-dhcp y radvd"},"content":{"rendered":"<p><strong>Contexto<\/strong><\/p>\n<p>En la d\u00e9cada del 90\u2019s en internet hab\u00edan tantas ips que al contratar un enlace dedicado el ISP que era telmex\/reduno\/uninet te daban una clase C, aunque solo fueras a conectar 3 computadoras tenias 250 IPs \u00fatiles sobrantes de las llamadas homologadas o p\u00fablicas. Obviamente entregar ips en exceso tuvo el costo de que se agotaron en menos de 2 d\u00e9cadas. Actualmente al contratar un enlace dan una subred de la clase C de m\u00e1ximo 16 ips y ahora tal vez menos. Incluso en el 2011 hable del agotamiento en el art\u00edculo. <a href=\"https:\/\/www.lastdragon.net\/?p=533\">FEBRERO DEL 2011, EL MES QUE INTERNET LLEGO A SU LIMITE<\/a> actualmente seria imposible darle una ip publica a cada aparato conectado en nuestra casa ( Internet de las cosas ) por eso en los enlaces como los de telmex infinitum el modem de Telmex tiene la ip publica y detr\u00e1s en la casa ( LAN )  cada aparato tiene una ip privada normalmente una clase C de 192.168.1.0\/24 que permite conectar hasta 253 aparatos, todos ellos saliendo a internet con una \u00fanica ip p\u00fablica. <\/p>\n<p>Por supuesto en el internet de mediado de los 90\u2019s el mundo era menos maleado y pod\u00edas conectar tu maquina a internet directamente con su ip p\u00fablica y todos pod\u00edan conectar directamente maquina a m\u00e1quina sin requerir forwarding de puertos, puro y duro ruteo sin NAT. Esto tra\u00eda el problema obviamente que cosas como los Nuke y otros juguetes de lamos bloqueaban las computadoras pues no hab\u00eda nada que la hiciera de firewall entre una maquina en China y otra en M\u00e9xico <\/p>\n<p><strong>IPV6 al rescate.<\/strong><\/p>\n<p>El IPV6 tiene tantas ips disponibles que pretende que todos los aparatos que se conecten a internet puedan hacer conexiones 1 a 1 como lo hacia el IPV4 en los 90\u2019s y sin firewall en un mundo mucho mas maleado que cuando el ipv4 cualquier tipo en Russia o la india podr\u00eda entrar a tu maquina con solo conocer tu IP en IPv6  \u00bf Esto es inseguro ? pues no\u2026 ahora todos tienen acceso a firewall de bajo costo y si eres hombre tu mismo te lo construyes con una PC o una raspberry pi <\/p>\n<p><strong>Introducci\u00f3n r\u00e1pida a IPV6<\/strong><\/p>\n<p>Para este articulo hablare de algunos segmentos reservados en IPv6 como los que tiene IPv4 pero el uso que se le da aqu\u00ed es distinto, deber\u00edas leer sobre IPv6 para tener informaci\u00f3n completa de este protocolo que apenas y es compatible con IPv4, son mundos totalmente diferentes. Aunque afortunadamente pueden convivir en el mismo enlace y tener un ruteador mixto de IPv4 e IPv6.<\/p>\n<p>Para fines pr\u00e1cticos IPv6 es como Internet 2 ya que no es compatible con IPv4 y un servicio publicado en IPv6 no necesariamente esta publicado en una IPv4 o a la inversa, por eso es necesario contar con ruteadores mixtos para tener acceso a todos los servicios en cada protocolo de forma transparente.<\/p>\n<p><strong>Tipos de segmentos<\/strong><\/p>\n<p>Los siguientes segmentos son jer\u00e1rquicos, es decir. Vamos a hablar del bloque Unicast  ( Existen otros bloques en IPv6 )<\/p>\n<p>Las Unicast Global son IPs denominadas globales son el equivalente de las ips homologadas o p\u00fablicas del IPv4, en internet son las que se rutearan y se conectaran a servidores u otras m\u00e1quinas<\/p>\n<p>Las unique linklocal son ips que se usan para conexi\u00f3n interna autom\u00e1tica en una LAN como cuando se activa la IPv4 en tu LAN pero no tienes un servidor DHCP ni has configurado las IP manualmente, el sistema operativo asigna de este tipo de ips para que al menos en tu LAN puedan interconectarse computadoras, estas nunca viajan mas lejos que tu LAN. En IPv4 equivale al segmento 169.254.0.0\/16<br \/>\nLas LinkLocal son ips que pueden usar para recibir datos y servicios de los ruteadores, pero solo es a nivel ruteador\u2026 no har\u00e1n el brinco a la nube de internet y por lo tanto tampoco puedes navegar con ellas a internet, en IPv4 equivalen a 172.16.0.0\/16 y 192.168.0.0\/16<\/p>\n<p>Para este articulo solo requerimos manejar globales y link Local<\/p>\n<p>Los segmentos Unicast Global para navegar a internet en IPv6 se le llaman prefijos de red y son de 64 bits, que son equivalente una clase C de IPv4 de 24 bits<\/p>\n<p><em>Unicast<\/em><br \/>\n\tUnicast Global ( Todas las ruteables \u201c publicas \u201c )<br \/>\n\tUnicast Link Local FE80::\/10 y FEBF::\/10<\/p>\n<p><strong>Se requiere para conectar<\/strong><\/p>\n<p>Una conexi\u00f3n DialUP o XDSL v\u00eda cobre o Fibra con modem en modo bridge del servicio infinitum de Telmex en M\u00e9xico usando PPP en DialUP y PPPoE cuando es por XDSL. Debido a que b\u00e1sicamente son iguales ( despu\u00e9s de establecida la conexi\u00f3n ) pero DialUp pr\u00e1cticamente ya no hay, tal vez alg\u00fan servicio perdido legado por ah\u00ed\u2026 me centrare en las conexiones DSL o Fibra usando los modem de Infinitum <\/p>\n<p><strong>Requerimiento<\/strong><\/p>\n<p>1 CentOS 7<br \/>\n2 Wide-Dhcp6-Server ( En raspberry pi 3 debe ser compilado, no se incluye en el Epel Repo )<br \/>\n3 Radvd<br \/>\n4 deshabilitar la auto configuraci\u00f3n IPv6 de la tarjeta de red a la LAN<\/p>\n<p>Archivo \/etc\/sysconfig\/network-scripts\/ifcfg-eth0<\/p>\n<p><code>IPV6INIT=yes<br \/>\nIPV6_AUTOCONF=no<br \/>\nIPV6_DEFROUTE=no<br \/>\nIPV6_FAILURE_FATAL=no<br \/>\nIPV6_ADDR_GEN_MODE=stable-privacy<\/code><\/p>\n<p>5 Tener el usuario y clave de conexi\u00f3n del modem ( solicitarla en soporte infinitum )<\/p>\n<p><strong>Instalar los programas requeridos<\/strong><\/p>\n<p><code>yum install radvd wide-dhcpv6<\/code><\/p>\n<blockquote><p>&#8212;- Instalar wide-dhcpv6 en CentOS 7 corriendo en Raspberry PI 3 &#8212;<br \/>\n1 wget http:\/\/dl.fedoraproject.org\/pub\/fedora\/linux\/releases\/27\/Everything\/source\/tree\/Packages\/w\/wide-dhcpv6-20080615-13.1.fc27.5.src.rpm<br \/>\n2 yum install bison* flex*<br \/>\n3 rpmbuild &#8211;rebuild &#8220;wide-dhcpv6-20080615-13.1.fc27.5.src.rpm&#8221;<br \/>\n4 cd rpmbuild\/RPMS\/armv7hl\/<br \/>\n5 rpm -Uvh wide-dhcpv6-20080615-13.1.el7.5.armv7hl.rpm<br \/>\n&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/p><\/blockquote>\n<p><strong>Configurar PPP<\/strong><\/p>\n<p>Archivo \/etc\/ppp\/options<\/p>\n<p>Agregar esta l\u00ednea para activar el soporte IPv6 en PPP<\/p>\n<p><code>+ipv6 ipv6cp-use-ipaddr<\/code><\/p>\n<p><strong>Configurar el usuario y clave de conexi\u00f3n<\/strong><\/p>\n<p>Archivo \/etc\/ppp\/pap-secrets<\/p>\n<blockquote><p>&#8220;usuario&#8221;   *       &#8220;clave&#8221;<\/p><\/blockquote>\n<p><strong>Configurar wide-dhcp<\/strong><\/p>\n<p>Archivo \/etc\/wide-dhcpv6\/dhcp6c.conf<\/p>\n<p><code>interface ppp0 {<br \/>\n  send ia-pd 0;<br \/>\n};<\/p>\n<p>id-assoc pd 0 {<br \/>\n    prefix-interface eth0 {<br \/>\n        sla-id 1;<br \/>\n    };<br \/>\n};<\/code><\/p>\n<p>send ia-pd 0; Solicita La delegaci\u00f3n de prefijo de red de \/64 bits a la interface ppp0 ( Wan ), una vez obtenido se le asigna una IP de IPv6 a la tarjeta eth0 que en este caso es la tarjeta de red de la LAN<\/p>\n<p><strong>Configurar radvd<\/strong><\/p>\n<p>Archivo \/etc\/radvd.conf<\/p>\n<p><code>interface eth0<br \/>\n{<br \/>\n        AdvSendAdvert on;<br \/>\n        AdvLinkMTU 1442;<br \/>\n        MinRtrAdvInterval 30;<br \/>\n        MaxRtrAdvInterval 100;<br \/>\n        prefix ::\/64<br \/>\n        {<br \/>\n                AdvOnLink on;<br \/>\n                AdvAutonomous on;<br \/>\n                AdvRouterAddr on;<br \/>\n        };<\/p>\n<p>};<\/code><\/p>\n<p>Radvd es un demonio \u201c router advertisement daemon for IPv6 \u201c, a diferencia del IPv4 donde el router\/Gateway se pod\u00eda asignar por dhcp, en IPv6 debe existir un servicio que le avise a los equipos en la LAN que este Linux es un router de IPv6 adem\u00e1s les asigna una IP del prefijo delegado, como lo har\u00eda un DHCP pero en IPv6 lo tiene que hacer el radvd<\/p>\n<p>La l\u00ednea AdvLinkMTU 1442; es muy importante cuando la conexi\u00f3n WAN es por PPP o PPPoE ya que el IPv6 no se fragmenta como el IPv4, se requiere tener un valor de MTU que no fragmente el IPv6 y que al mismo tiempo pase por el PPP el cual no llega al MTU 1500 que por Default es asignado a Ethernet. De no tener cuidado con este valor las conexiones TCP se quedan bloqueadas en IPv6 al fragmentarse los paquetes. <\/p>\n<p>La l\u00ednea prefix ::\/64 funciona como comod\u00edn, vale lo que valga el prefijo de red que nos fue delegado, aunque se puede escribir directamente y se debe escribir cuando el prefijo de red no cambia, en el caso de un conexi\u00f3n a infinitum la red es din\u00e1mica, como cuando nos dan las ips din\u00e1micas en el modem que cambian con cada reinicio del modem <\/p>\n<p><em>El MTU se puede demostrar as\u00ed, usando el comando ping en GNU\/Linux<\/em><\/p>\n<p><code>ping6 -c 1 -M do -s 1442  www.lastdragon.net<\/code><\/p>\n<p>PING www.lastdragon.net(servidor.lastdragon.net (2600:3c00::f03c:91ff:fe90:372d)) 1442 data bytes<br \/>\n1450 bytes from servidor.lastdragon.net (2600:3c00::f03c:91ff:fe90:372d): icmp_seq=1 ttl=58 time=102 ms<\/p>\n<p>&#8212; www.lastdragon.net ping statistics &#8212;<br \/>\n1 packets transmitted, 1 received, 0% packet loss, time 0ms<br \/>\nrtt min\/avg\/max\/mdev = 102.708\/102.708\/102.708\/0.000 ms<\/p>\n<p>Pero si el valor es superior como 1500, no va a pasar correctamente a la WAN por PPP<\/p>\n<p><code>ping6 -c 1 -M do -s 1500  www.lastdragon.net<\/code><\/p>\n<p>PING www.lastdragon.net(servidor.lastdragon.net (2600:3c00::f03c:91ff:fe90:372d)) 1500 data bytes<br \/>\nping: local error:<strong> Message too long, mtu=1492<\/strong><\/p>\n<p>&#8212; www.lastdragon.net ping statistics &#8212;<br \/>\n1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms<\/p>\n<p><strong>Listos para conectar.<\/strong><\/p>\n<p>Lo primero ser\u00e1 conectar a Internet de forma standart con el comando ppp + pppoe, una vez conectado nos dar\u00e1n una IPv4 y ya podremos tener acceso a internet como siempre, aplicando reglas NAT para los nodos en la LAN, pero en este punto todav\u00eda no tenemos mas que unas IP Link Local que no sirven para navegar, sin embargo, nos servir\u00e1n para consultar el prefijo de red y obtener las global unicast que con las que navegaremos en IPv6. Para obtener las unicast global se requiere el prefijo que nos ser\u00e1 delegado, ese trabajo lo hace wide-dhcp, finalmente con el radvd enviamos el ruteador y configuraci\u00f3n IPv6 a toda la LAN<\/p>\n<p><strong>Pasos<\/strong><\/p>\n<p>1 conectar a internet de Infinitum en un modem en modo bridge<\/p>\n<p><code>echo \"1\" > \/proc\/sys\/net\/ipv4\/ip_forward<br \/>\necho \"1\" > \/proc\/sys\/net\/ipv6\/conf\/all\/forwarding<\/code><\/p>\n<p><code>\/usr\/sbin\/pppd pty \"\/usr\/sbin\/pppoe -p \/var\/run\/pppoe-adsl.pid.pppoe -I eth0 -T 80 -U  -m 1412\" ipparam ppp0 linkname ppp0 noipdefault noauth default-asyncmap defaultroute hide-password nodetach mtu 1492 mru 1492 noaccomp nodeflate nopcomp novj novjccomp user <strong>usuario<\/strong> usepeerdns lcp-echo-interval 20 lcp-echo-failure 3<\/code><\/p>\n<p>El par\u00e1metro usuario debe ser el <strong>usuario<\/strong> que se configur\u00f3 en el archivo \/etc\/ppp\/pap-secrets<\/p>\n<p>En este paso se crea la interface ppp0 con la conexion IPv4 y las LinkLocals necesarias para dhcp6c<\/p>\n<p>ppp0: flags=4305<up ,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1492<br \/>\n        inet 187.153.238.78  netmask 255.255.255.255  destination 200.38.193.226<br \/>\n        inet6 fc00:10b8:1:34ac:354f:2f70:e91b:6e7c prefixlen 64  scopeid 0x0<global><br \/>\n        inet6 <strong>fe80::354f:2f70:e91b:6e7c<\/strong>  prefixlen 10  scopeid 0x20<link \/>\n        ppp  txqueuelen 3  (Point-to-Point Protocol)<br \/>\n        RX packets 3579  bytes 4758706 (4.5 MiB)<br \/>\n        RX errors 0  dropped 0  overruns 0  frame 0<br \/>\n        TX packets 2183  bytes 153274 (149.6 KiB)<br \/>\n        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0<\/p>\n<p>2 recibir el prefijo delegado<\/p>\n<p>dhcp6c -c \/etc\/wide-dhcpv6\/dhcp6c.conf ppp0<\/p>\n<p>En este paso eth0 ya tiene una IP del prefijo delegado<\/p>\n<p>eth0: flags=4163<up ,BROADCAST,RUNNING,MULTICAST>  mtu 1500<br \/>\n        inet 192.168.10.253  netmask 255.255.255.0  broadcast 192.168.10.255<br \/>\n        inet6 <strong>2806:10be:2:3b2f:52e5:49ff:fe5c:497<\/strong>  prefixlen 64  scopeid 0x0<global><br \/>\n        inet6 fe80::2be4:934b:c961:9b10  prefixlen 64  scopeid 0x20<link \/>\n        ether XX:XX:XX:XX:XX:XX  txqueuelen 1000  (Ethernet)<br \/>\n        RX packets 38357  bytes 29721746 (28.3 MiB)<br \/>\n        RX errors 0  dropped 33  overruns 0  frame 0<br \/>\n        TX packets 36516  bytes 29416776 (28.0 MiB)<br \/>\n        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0<\/p>\n<p>3 asignar la ruta default para todas las conexiones WAN hacia ppp0<\/p>\n<p><code>route -6 add default dev ppp0<\/code><br \/>\no con el comando ip<br \/>\n<code>ip -6 route add default dev ppp0<\/code><\/p>\n<p>4 activar el radvd<\/p>\n<p><code>systemctl start radvd<\/code><\/p>\n<p><strong>Esto es todo.<\/strong><\/p>\n<p>Tenemos acceso a la red IPv6, n\u00f3tese que no se ha configurado DNS ni tampoco configure NAT para el IPv4<\/p>\n<p>Los DNS IPv4 actuales son capaces de resolver IPv6 por lo que no seria necesario configurar DNS IPv6 expl\u00edcitamente, con configurar en el dhcp del IPv4 el DNS es suficiente.<\/p>\n<p><strong>Compartir el internet a LAN de IPv4<\/strong><\/p>\n<p><code>iptables -t nat -A POSTROUTING -j MASQUERADE<\/code><\/p>\n<p>En este punto se tiene un ruteador mixto, puede dar internet por IPv4 e IPv6. Tambi\u00e9n debe recordarse que todas las maquinas en la LAN han recibido IP de IPv6 totalmente ruteables ( Unicast  Global ) si no se le aplica firewall o filtro con ip6tables que es id\u00e9ntico al iptables pero para IPv6 , estas IP estar\u00e1n expuestas a Internet libremente.<\/p>\n<p><strong>Imagenes<\/strong><\/p>\n<p><a href=\"https:\/\/www.lastdragon.net\/misarchivos\/ping6lastdragon.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.lastdragon.net\/misarchivos\/ping6lastdragon.jpg\" alt=\"\" width=\"425\" height=\"350\" \/><\/a><\/p>\n<p><a href=\"https:\/\/www.lastdragon.net\/misarchivos\/nicipv6.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.lastdragon.net\/misarchivos\/nicipv6.jpg\" alt=\"\" width=\"425\" height=\"350\" \/><\/a><br \/><\/global><\/up><\/global><\/up><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Contexto En la d\u00e9cada del 90\u2019s en internet hab\u00edan tantas ips que al contratar un enlace dedicado el ISP que era telmex\/reduno\/uninet te daban una clase C, aunque solo fueras a conectar 3 computadoras tenias 250 IPs \u00fatiles sobrantes de las llamadas homologadas o p\u00fablicas. Obviamente entregar ips en exceso tuvo el costo de que&#8230;<\/p>\n","protected":false},"author":1,"featured_media":2056,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-2053","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-consultoria-y-manuales"],"_links":{"self":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/2053","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2053"}],"version-history":[{"count":1,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/2053\/revisions"}],"predecessor-version":[{"id":2057,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/2053\/revisions\/2057"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/media\/2056"}],"wp:attachment":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2053"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2053"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2053"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}