Despabilando la MonoNeurona::Internet es de todos [Inicio] [Regresar]
NetBSD \ PPPoE en OpenBSD para gestionar una ADSL
NetBSD
PPPoE en OpenBSD para gestionar una ADSL

Este artículo ha sido consultado en 1,054 ocasiones.

Como ya sabreís todos, Telefónica y el resto de compañías cambiaron las ADSLs a IPs dinámicas. Este cambio puede parecer trivial, pero no lo es si tu configuración de router es en monopuesto (esto es, el router actúa como un modem, dándole a la tarjeta de red la IP pública).

El objetivo de este documento es el de realizar una configuración de OpenBSD de modo que la parte del manejo de la linea ADSL sea lo más transparente posible y OpenBSD pueda hacer las tareas de filtrado ignorando las del router. Se explica un escenario de migración de una configuración con IP fija a una con dinámica, pero el documento también servirá para una primera configuración. Se supone algo de manejo previo de OpenBSD (y su packet filter) y de redes, los pasos están poco detallados.

¿Dónde está el problema?
Configurar el router en monopuesto si la IP es dinámica es algo completamente diferente a configurarlo en monopuesto si tienes IP fija. Con IP dinámica toca cambiar el router a modo bridge y gestionar toda la parte del PPP desde el ordenador que se va a conectar, a diferencia de la configuración con IP fija, dónde el router sigue gestionando todo lo referente a la ADSL y en la tarjeta de red externa se puede poner directamente la IP pública.

¿Cómo solucionarlo?
Pues paso a paso y con cuidadín xD
Lo primero es cambiar la configuración del router a modo bridge. Podeís encontrar guías para hacerlo según vuestro modelo de router en adslayuda.
Una vez realizado este paso, toca configurar el PPP en OpenBSD. Lo primero es cambiar la configuración de la tarjeta de red que irá conectada al router. Editaís el archivo hostname.xxx correspondiente dejando como único parámetro “up”, para que así active la interfaz pero no realice ningún tipo de configuración.

Ahora toca meterle mano a la configuración del PPP. Creamos el archivo /etc/ppp/ppp.conf con este contenido:

default:
set log Phase Chat LCP IPCP CCP tun command
pppoe:
set device "!/usr/sbin/pppoe -i vr0"
set mtu max 1492
set mru max 1492
set speed sync
disable acfcomp protocomp
deny acfcomp
set authname "adslppp@telefonicanetpa"
set authkey "adslppp"
add default HISADDR
enable dns
enable mssfixup

Pero teniendo en cuenta esto:

  • En la primera linea de pppoe, se le indica que interfaz de red debe utilizar para conectar al router, poned ahí vuestro interfaz correspondiente (en mi caso vr0).
  • Mi authname y authkey son los de una conexión con telefónica. Para otros ISP, consultar de nuevo adslayuda.
  • “add default HISADDR” configurará automáticamente la puerta de enlace por defecto, lo que hace innecesaría la configuración en /etc/mygate, podeís borrar ese archivo.
  • “enable dns” actualizará el archivo /etc/resolv.conf si vuestro ISP lo soporta (en mi caso Telefónica, que si lo soporta).

En este punto reiniciamos para comprobar que tras arrancar la configuración es la esperada:

  • ifconfig -a debe mostrar la interfaz externa como activa pero sin ninguna dirección ip asignada.
  • netstat -nr no debe mostrar ninguna ruta por defecto.

Ahora toca probar el PPP: ppp -background pppoe debe conectaros a internet. ifconfig -a ahora mostrará una nueva interfaz, tun0, a la que se le ha asignado la IP pública. Usad netstat -nr de nuevo para comprobar que se ha actualizado la tabla de rutas, y echad un vistazo a /etc/resolv.conf para ver si ha habido suerte y vuestro ISP os actualiza automáticamente los DNS. Si todo esto ha salido bien la conexión debería funcionar perfectamente.

Ahora toca retocar la configuración del firewall para adaptarlo a este nuevo escenario. Simplemente hay que cambiar todo lo referente a vuestra antigua interfaz externa por la nueva, tun0. Es muy aconsejable que siempre que en las reglas el nombre de tun0 (o la variable en la que la habeís definido) se refiera a una IP (y no a la interfaz en si, diferencia entre on y to) pongaís el nombre entre paréntesis, esto actualizará automáticamente las reglas en caso de que la conexión ADSL se reinicie y cambie la IP.

Un detalle más en la configuración del firewall, si teneís una regla similar a esta:

RESERVED = "{ 0.0.0.0/8, 10.0.0.0/8, 127.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 255.255.255.255/32 }"
block drop out quick on $EXT_IF from any to $RESERVED

Mirad la IP a dónde enlaza tun0, porque es posible que sea una IP del rango reservado (en Telefónica los rfcs se guardan enrollados en el baño que es dónde más uso les dan). En mi caso no me afecta evitar el tráfico directo a la pasarela, pero nunca está de más ser precavido y adaptar la regla.

Pasos finales
La conexión está configurada de nuevo, ahora simplemente queda automatizar el proceso para que cada vez que se reinicie la máquina se conecte a internet y cargue el firewall de forma automática.

Primero hay que editar /etc/rc.local para que inicie ppp al arrancar. Misterios de la vida, pero ppp no está como demonio en /etc/rc.conf por lo que hay que configurarlo aquí. Debajo de la linea “echo -n ’starting local daemons:’” añadid este código:

ppp -ddial pppoe
sleep 5

-ddial es para que vuelva a conectar en caso de desconexión, y el sleep es para dar tiempo a que el ISP de turno nos asigne una IP.

El firewall que antes se iniciaba al arrancar ahora no puede hacerlo, ya que aún no estaría configurada la interfaz tun0. En /etc/rc.conf hay que buscar la linea correspondiente al packet filter y cambiarla por pf=NO. Para iniciarlo correctamente, editaremos el archivo /etc/ppp/ppp.linkup con este código:

MYADDR:
!bg sh -c "/sbin/pfctl -e -f /etc/pf.conf"

Análogamente, hay que editar /etc/ppp/ppp.linkdown para desactivar pf en caso de que la conexión se pierda:

MYADDR:
!bg /sbin/pfctl -d

Por último, en /etc/rc.shutdown añadimos esto para terminar la conexión al reiniciar/apagar OpenBSD:

kill `ps -axc | grep -w ppp | awk '{print$1}'`
sleep 5

Resultados
Aparte de volver a conseguir que OpenBSD se encargue en solitario de la tarea de firewall, la calidad de la conexión se ha incrementado enormemente comparada con la configuración en multipuesto que estuve “disfrutando” durante dos dias. ¿Por qué? Pues porque según el router que tengaís se mueren a poco que tengan que mantener unas cuantas conexiones simultáneas, y eso con la mula no concuerda xD. Ahora con pppoe no hay ningún problema de rendimiento, el demonio no toca nunca el 1% de CPU en un VIA a 533MHz y la conexión va como la seda (nunca será tan limpio como con IP fija, pero al menos así es más llevadero).

Referencias
man pppoe
man ppp Aunque mejor hacer man ppp dentro de OpenBSD, que por alguna razón la página colgada está recortada.
OpenBSD 3.6 and PPPoE


Última actualización: 2007-04-29 10:57:00-05



ir arriba
The Queen is here Mozilla Firefox The Best DataBase CakePHP Framework CSS GNU Hacker