Para la comprensión de la mayor parte de este documento será de gran ayuda que haya leido y, por lo menos, asimilado en parte el capítulo «Configuración del Núcleo» de las Preguntas Frecuentes, y las páginas de manual ifconfig(8) y netstat(1).
Si es Vd. un administrador de redes y está configurando protocolos de enrutamiento, si está usando su sistema OpenBSD como un enrutador, si necesita conocer más a fondo los protocolos de redes IP, entonces es realmente necesario que lea Understanding IP addressing. ¡Éste es un excelente documento que contiene conocimientos fundamentales sobre redes de IP!
Si está trabajando con aplicaciones como servidores de http, servidores de ftp, y servidores de correo, se puede beneficiar en gran medida de la lectura de los RFC.
(Nota: existe un proyecto de traducción de RFCs al castellano conocido como RFC-ES)
Lo más seguro es que no los pueda leer todos. Seleccione algunos temas que le interesen, o que use en su entorno de red. Léalos y averigüe cómo deberían funcionar. Los RFC definen muchísimas (miles) de las normas para protocolos en internet y cómo se supone que deben funcionar.
Lo primero que debe hacer para empezar es identificar su interfaz de red. En OpenBSD las interfaces se designan por el tipo de tarjeta, no por el tipo de conexión. Puede ver su tarjeta de red iniciar durante el arranque, o después del arranque usando la orden dmesg(8). También puede ver su interfaz de red usando la orden ifconfig(8). Por ejemplo, vea a continuación la salida originada por dmesg para una tarjeta de red ne2k, que usa un nombre de dispositivo ne.
ne3 at pcmcia1 function 0 "Linksys, EtherFast 10/100 PC Card (PCMPC100), " port 0x340/16 irq 9 ne3: address 00:e0:98:04:95:ba
Si no sabe cuál es el nombre de su dispositivo, aquí tiene una lista de tarjetas comunes con sus nombres de dispositivo.
Si va a actualizar a OpenBSD 2.7 desde una versión más antigua de OpenBSD, necesita prestar atención a este punto. Cualquier referencia en /etc/ifaliases, /etc/ipf.rules, o /etc/ipnat.rules a los nombres de interfaz antiguos mx, al, ax, o pn, se debe substituir por dc. Además, cualquier fichero hostname.xxx con las extensiones de interfaz antiguas, se debe renombrar a hostname.dcX para que pueda ser reconocido. Substituya X con el número de la interfaz.
También puede comprobar qué interfaces han sido identificadas usando la utilidad ifconfig(8). He aquí la salida que mostraría un dispositivo ne2k.
$ ifconfig -a
lo0: flags=8009<UP,LOOPBACK,MULTICAST>
inet 127.0.0.1 netmask 0xff000000
lo1: flags=8008<LOOPBACK,MULTICAST>
ne3: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST>
media: Ethernet manual
inet 10.0.0.38 netmask 0xffffff00 broadcast 10.0.0.255
sl0: flags=c010<POINTOPOINT,LINK2,MULTICAST>
sl1: flags=c010<POINTOPOINT,LINK2,MULTICAST>
ppp0: flags=8010<POINTOPOINT,MULTICAST>
ppp1: flags=8010<POINTOPOINT,MULTICAST>
tun0: flags=10<POINTOPOINT>
tun1: flags=10<POINTOPOINT>
enc0: flags=0<>
bridge0: flags=0<>
bridge1: flags=0<>
Como habrá podido comprobar, ifconfig(8) muestra mucha más información de la que necesitamos en este momento. Pero lo importante aquí es que nos permite ver nuestra interfaz. En el ejemplo anterior, la tarjeta de la interfaz ya está configurada. Esto se sabe al ver que los valores ya han sido fijados en "inet 10.0.0.38 netmask 0xffffff00 broadcast 10.0.0.255", y que los indicadores UP y RUNNING están activados. También podrá notar muchas otras interfaces. A continuación puede ver una lista de interfaces que se supone que deben estar ahí.
Si su interfaz no ha sido configurada, el primer paso será crear el fichero /etc/hostname.${IF}, donde el nombre de su interfaz substituirá ${IF}. De acuerdo con la información de los ejemplos anteriores, el nombre sería /etc/hostname.ne3. La composición de este fichero es como sigue a continuación. Para leer más sobre el formato de este fichero, tome como referencia la página de manual hostname.if(5)
[address_family] [your_ip] [your_netmask] [media options]
Por lo tanto, para el ejemplo anterior, un nombre correcto sería parecido a este:
$ cat /etc/hostname.ne3 inet 10.0.0.38 255.255.255.0 NONE
El siguiente paso será la configuración de su pasarela. Para ello basta con que ponga el IP de su pasarela en el fichero /etc/mygate. Esto permitirá que su pasarela se active en el momento del arranque. A continuación deberá configurar sus nombres de servidores ("nameservers") y su fichero /etc/hosts. Para configurar sus nombres de servidores debe crear un fichero con el nombre /etc/resolv.conf. Puede leer más sobre el formato de este fichero en la página de manual resolv.conf(5). El siguiente ejemplo es para un uso típico. En este ejemplo sus servidores de dominio son 125.2.3.4 y 125.2.3.5. También pertenece al dominio «sudominio.dom».
$ cat /etc/resolv.conf search sudominio.dom nameserver 125.2.3.4 nameserver 125.2.3.5 lookup file bind
Desde este punto ya puede reiniciar o bien ejecutar el guión de configuración /etc/netstart. Puede hacerlo escribiendo (como root):
$ sh /etc/netstart writing to routing socket: File exists add net 127: gateway 127.0.0.1: File exists writing to routing socket: File exists add net 224.0.0.0: gateway 127.0.0.1: File exists
Fíjese en que se producen un pequeño número de errores, pero éstos se refieren a la interfaz de loopback. Por lo tanto puede ignorar estos errores. A partir de aquí su sistema debería funcionar correctamente. Puede hacer una comprobación con ifconfig(8) para asegurarse de que su interfaz se configuró correctamente. También puede comprobar sus rutas con netstat(1) o route(8). A continuación puede ver un ejemplo de cómo ver sus tablas de rutas usando ambas herramientas.
$ netstat -rn Routing tables Internet: Destination Gateway Flags Refs Use Mtu Interface default 10.0.0.1 UGS 0 86 - ne3 127/8 127.0.0.1 UGRS 0 0 - lo0 127.0.0.1 127.0.0.1 UH 0 0 - lo0 10.0.0/24 link#1 UC 0 0 - ne3 10.0.0.1 aa:0:4:0:81:d UHL 1 0 - ne3 10.0.0.38 127.0.0.1 UGHS 0 0 - lo0 224/4 127.0.0.1 URS 0 0 - lo0 Encap: Source Port Destination Port Proto SA(Address/SPI/Proto) $ route show Routing tables Internet: Destination Gateway Flags default 10.0.0.1 UG 127.0.0.0 LOCALHOST UG localhost LOCALHOST UH 10.0.0.0 link#1 U 10.0.0.1 aa:0:4:0:81:d UH 10.0.0.38 LOCALHOST UGH BASE-ADDRESS.MCA LOCALHOST U
Ésta es la información básica que necesita para configurar su sistema OpenBSD como una pasarela (también llamada «enrutador» o «encaminador»). Si piensa usar OpenBSD como un enrutador en Internet, le sugerimos que lea también la sección con las instrucciones sobre la configuración de Filtros IP, para bloquear tráfico potencialmente malicioso. Además, debido a la escasa disponibilidad de direcciones IPv4 en los proveedores de servicios de redes y registros regionales, es conveniente leer la sección sobre NAT para información sobre cómo conservar su espacio de dirección IP.
El núcleo GENERIC posee la capacidad de permitir IP Forwarding, pero debe ser activado. Para ello debe usar la utilidad sysctl(8). Para que los cambios sean permanentes, debe editar el fichero /etc/sysctl.conf para habilitar IP Forwarding. Esto lo puede llevar a cabo añadiendo la siguiente línea en ese fichero de configuración.
net.inet.ip.forwarding=1
Para que este cambio surja efecto sin tener que reiniciar el sistema, use directamente la utilidad sysctl(8). Recuerde que este cambio todavía no existirá después de reiniciar, y que necesitará ser ejecutado como root.
# sysctl -w net.inet.ip.forwarding=1 net.inet.ip.forwarding: 0 -> 1
A continuación modifique las rutas en los otros huéspedes de ambos lados. OpenBSD ofrece muchas posibilidades de uso como enrutador, usando software como routed(8), gated, mrtd, y zebra. OpenBSD dispone de soporte para gated y mrtd en la colección de portes. OpenBSD incluye soporte para varias interfaces T1, HSSI, ATM, FDDI, Ethernet, e interfaces de serie (PPP/SLIP).
OpenBSD dispone de un simple mecanismo para configurar los alias de ip en una interfaz. Para ellos sólo tiene que editar el fichero /etc/hostname.<if>. El guión /etc/rc, que forma parte de la jerarquía de inicio rc, leerá este fichero durante el proceso de inicio del sistema. Por ejemplo, supongamos que el usuario tiene una interfaz dc0 y pertenece a la red 192.168.0.0. Otra información de importancia:
Unas notas sobre los alias: en OpenBSD sólo se usa el nombre de la interfaz; no existen diferencias entre el primer alias y el segundo, por lo tanto, a diferencia de otros sistemas operativos, en OpenBSD no hay que referirse a ellos como dc0:0 y dc0:1. Si hace referencia a una direcció de IP alias específica con ifconfig, o si está añadiendo un alias, asegúrese de decir 'ifconfig int alias' en lugar de 'ifconfig int' en la línea de órdenes. Puede eliminar los alias con 'ifconfig int delete'.
Asumiendo que esté usando direcciones de IP múltiples que estén en la misma subred IP con alias, la configuración de su enmascaramiento de red ("netmask") para cada alias pasa a ser 255.255.255.255. No necesitan seguir el netmask del primer IP ligado a la interfaz. En el siguiente /etc/hostname.dc0 de ejemplo, se añaden dos alias al dispositivo dc0, el cual, por cierto, se configuró como 192.168.0.2 netmask 255.255.255.0.
# cat /etc/hostname.dc0 inet 192.168.0.2 255.255.255.0 media 100baseTX inet alias 192.168.0.3 255.255.255.255 NONE inet alias 192.168.0.4 255.255.255.255 NONE
Una vez que haya configurado este fichero será necesario reiniciar para que los cambios funcionen. Sin embargo, puede hacer efectivos los alias a mano, usando la utilidad ifconfig(8). Para hacer efectivo el primer alias use la orden:
# ifconfig dc0 inet alias 192.168.0.3 netmask 255.255.255.255
Para ver estos alias debe usar la orden:
$ ifconfig -A
dc0: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST>
media: Ethernet manual
inet 192.168.0.2 netmask 0xffffff00 broadcast 192.168.0.255
inet 192.168.0.3 netmask 0xffffffff broadcast 192.168.0.3
El paquete IP Filter se creó con el fin de gestionar dos tareas, tratar con permisos ipf(8) para el envío a nivel de paquetes y asignar huéspedes/subrredes a un campo de direcciones externas ipnat(8). Los ficheros de configuración para estos dos servicios son /etc/ipf.rules y /etc/ipnat.rules.
Para activarlos durante el inicio del sistema es necesario editar /etc/rc.conf. También es necesario tener la línea net.inet.ip.forwarding=1 en /etc/sysctl.conf (o el núcleo de su sistema necesita tener activada la opción IPFORWARDING o GATEWAY). Y también se necesita un núcleo compilado con las opciones IPFILTER y IPFILTER_LOG (los núcleos GENERIC no disponen de estas opciones).
Si ha compilado IP Filter en su núcleo pero no lo ha activado en el fichero /etc/rc.conf, lo puede activar fácilmente.
# ipf -Fa -f /etc/ipf.rules -E # ipnat -CF -f /etc/ipnat.rules
El indicador -E en ipf 'activa' IP Filter. El indicador
-Fa limpia cualquier regla que pueda tener ahí.
-f /etc/ipf.rules carga las reglas desde
/etc/ipf.rules.
Si hace algún cambio en /etc/ipf.rules después de haber cargado ipf, puede recargar sus reglas muy fácilmente.
# ipf -Fa -f /etc/ipf.rulesLo mismo para ipnat...
# ipnat -CF -f /etc/ipnat.rulesTambién puede activar ipmon para el depurado.
# ipmon -Ds
A partir de aquí este documento cubrirá algunos aspectos básicos de configuraciones de ipf y ipnat. Existen muchos ejemplos para ipnat y ipf en /usr/share/ipf, le recomendamos que escoja el que más se acerque a la configuración que Vd. desee, y que lo modifique conforme a sus necesidades. Puede encontrar más información sobre Filtros IP en los archivos de la lista de correo IP Filter, en las páginas de IP Filter, y en el IP Filter HOWTO.
Para activar ipf desde el momento del inicio del sistema necesita modificar /etc/rc.conf de modo que lea IPFILTER=YES. IP Filter (ipf) está controlado por /etc/ipf.rules, que se leerá durante el inicio. Para una explicación más detallada lea la página de manual ipf(5). En los siguientes ejemplos, fxp0 representa la interfaz externa a internet. En su caso puede ser diferente según el adaptador de ethernet de que disponga en su máquina. En estas reglas se asumirá que existe una conexión permanente a internet, del mismo tipo que la de un servidor de web.
Las reglas de IP Filter se procesan de modo secuencial desde el principio hasta el final, siendo de ayuda para visualizar cada paquete que tenga que atravesar cada regla antes de alcanzar su destino.
Por ejemplo, el grupo de reglas predefinido permite que entren y salgan todos los paquetes:
pass out from any to any pass in from any to anySupongamos ahora que no queremos permitir ninguna conexión entrante por el puerto 3306 (mysql) porque la base de datos sólo debería permitir la conexión de forma local. En este caso el grupo de reglas sería así:
pass out from any to any pass in from any to any block in on fxp0 from any to any port = 3306Que traducido viene a decir lo siguiente: «bloquear todos los paquetes entrantes desde cualquier sitio hasta cualquier sitio cuyo destino sea 3306». Lo que ocurriría es que un paquete destinado al puerto 3306 en la interfaz fxp0 pasaría la primera regla "pass in", y acto seguido sería bloqueado por la regla "block in port = 3306". En el caso en que se invirtieran las reglas de entrada (recuerde que el orden es importante)
pass out from any to any block in on fxp0 from any to any port = 3306 pass in from any to anylos paquetes destinados al puerto 3306 pasarían debido a que la última regla en el grupo permite que pasen todos los paquetes. Cuando esté escribiendo reglas para el filtrado de paquetes es importante que tenga en cuenta lo siguiente: La última regla que concuerde tendrá precedencia.
Por supuesto que existen excepciones para toda regla. La opción quick filtra el paquete en la primera regla que concuerde. Veamos el defectuoso ejemplo anterior añadiéndole la opción quick a la regla "block in":
pass out from any to any block in quick on fxp0 from any to any port = 3306 pass in from any to any
Un paquete destinado para el puerto 3306 será filtrado por la regla "block in quick" y bloqueado inmediatamente. Todos los paquetes destinados a otros puertos no encontrarán una concordancia en las reglas hasta llegar a la regla "pass in" que permite que pasen todos los paquetes.
Denegación predefinidaLa política de filtrado de páquetes más segura es la de «denegación por definición». Esta política es mucho más segura que la denegación explícita de cada servicio protegido, permite grupos de reglas más breves, y puede proteger de un servicio que haya sido mal configurado de modo accidental y que haya quedado expuesto.
Veamos ahora otro ejemplo de grupo de reglas real, seguido de una explicación línea por línea. El siguiente ejemplo es para un servidor de web con una política de denegación predefinida que sólo permite conexiones ssh (para administración), y conexiones http (puerto 80) y https (puerto 443).
############################# # begin ruleset ############################# pass in quick on fxp0 from any to any port = 22 pass in quick on fxp0 from any to any port = 80 pass in quick on fxp0 from any to any port = 443 block in quick on fxp0 from any to any pass out on fxp0 from any to any ############################## # end ruleset ##############################
Esto permitirá las conexiones desde cualquier sitio a los puertos 22 (ssh), 80 (http) y 443 (https). Cualquier otro intento de conexión distinto será bloqueado, y permitirá todas las conexiones salientes. Este grupo de reglas es muy estricto. Pero, ¿y si Vd. sólo quisiera permitir la conexión a ssh a huéspedes internos en su bloque de direcciones 1.1.1.0, y al mismo tiempo permitir conexiones externas a http y https?
############################# # begin ruleset ############################# pass in quick on fxp0 from 1.1.1.0/24 to any port = 22 pass in quick on fxp0 from any to any port = 80 pass in quick on fxp0 from any to any port = 443 block in quick on fxp0 from any to any pass out on fxp0 from any to any ############################## # end ruleset ##############################De acuerdo, pero, ¿y si sólo quisiera permitir la administración remota de su servidor de web a una sola máquina (1.1.1.1)? En tal caso cambiaría esta regla:
pass in quick on fxp0 from 1.1.1.0/24 to any port = 22por esta otra:
pass in quick on fxp0 from 1.1.1.1/32 to any port = 22IP Filter tiene soporte para formas de "netmask address" tanto CIDR como de punto decimal. Por tanto podría escribir lo anterior de esta forma:
pass in quick on fxp0 from 1.1.1.1/255.255.255.255 to any port = 22pero, ¿para qué? Ejemplos de reglas
Aquí puede ver algunas buenas reglas que puede usar cualquier persona (se asume que fxp0 es la interfaz externa conectada a interner). Para empezar configuraremos una simple protección contra la falsificación de direcciones.
block in quick on fxp0 from 127.0.0.0/8 to any block in quick on fxp0 from 192.168.0.0/16 to any block in quick on fxp0 from 172.16.0.0/12 to any block in quick on fxp0 from 10.0.0.0/8 to any block out quick on fxp0 from any to 127.0.0.1/8 block out quick on fxp0 from any to 192.168.0.0/16 block out quick on fxp0 from any to 172.16.0.0/12 block out quick on fxp0 from any to 10.0.0.0/8También es una buena idea separar su interfaz de loopback de sus otras reglas.
pass out quick on lo0 pass in quick on lo0Nuestro grupo de reglas empieza a tener buena pinta; cuando lo ponemos todo junto, esto es lo que vemos:
########################### # begin ruleset ########################### # loopback rules pass out quick on lo0 pass in quick on lo0 # no permitir a nadie falsificar direcciones que no puedan ser enrutadas block in quick on fxp0 from 127.0.0.0/8 to any block in quick on fxp0 from 192.168.0.0/16 to any block in quick on fxp0 from 172.16.0.0/12 to any block in quick on fxp0 from 10.0.0.0/8 to any block out quick on fxp0 from any to 127.0.0.1/8 block out quick on fxp0 from any to 192.168.0.0/16 block out quick on fxp0 from any to 172.16.0.0/12 block out quick on fxp0 from any to 10.0.0.0/8 # permitir la conexión por ssh sólo a nuestra máquina de administración pass in quick on fxp0 from 1.1.1.1/32 to any port = 22 # permitir que otros usen http y https pass in quick on fxp0 from any to any port = 80 pass in quick on fxp0 from any to any port = 443 # finalmente, cerrar el resto con una denegación por definición block in quick on fxp0 from any to any # y dejar pasar todo el tráfico saliente # Los indicadores S son para asegurar que el estado del seguimiento # comience sólo en el primer paquete saliente en una # sesión de tcp. # El indicador s sólo funciona con el protocolo tcp, y son # necesarias tres entradas para cubrir los tres protocolo (tcp, udp, y # icmp). pass out quick on fxp0 proto tcp from any to any flags S keep state pass out quick on fxp0 proto udp from any to any keep state pass out quick on fxp0 proto icmp from any to any keep state pass out on fxp0 from any to any ############################# # end ruleset #############################Registro de paquetes
De momento va bastante bien, pero podría ir mejor. ¿Qué haríamos si quisiéramos obtener un registro de cualquier intento de conexión al puerto 22 (ssh) que fuera por nuestro cortafuegos? Sería fácil, IP Filter puede gestionar este caso con la opción clave log:
pass in quick on fxp0 from 1.1.1.1/32 to any port = 22 block in log quick on fxp0 from any to any port = 22Esta regla permitirá la conexión remota por el puerto 22 a nuestra máquina de administración, pero denegará y registrará cualquier otro intento de conexión al puerto 22. Filtrado de paquetes según el protocolo
IP Filter puede filtrar cualquier protocolo IP basándose en su número o nombre en /etc/protocols. Para que se entienda con más claridad, sólo trataremos aquí con tcp, udp, e icmp. Éstos son los protocolos de uso más común. Todas las aplicaciones básicas de internet dependen de la disponibilidad y de la correcta operatibilidad de estos protocolos.
Para que ipf filtre según qué protocolo, se debe usar la opción clave proto. Basándonos en el ejemplo anterior, y puesto que ssh funciona sobre tcp, sólo deberíamos permitir la conexión a paquetes tcp. Usando la opción clave proto para permitir sólo conexiones tcp, obtendremos una regla como esta:
pass in quick on fxp0 proto tcp from 1.1.1.1/32 to any port = 22Pero, ¿y si necesitáramos permitir conexiones a un servicio como bind que funciona tanto sobre tcp como sobre udp? En el caso de tcp/udp, IP Filter nos permite agrupar ambos protocolos en un sólo (Nota: esto sólo es válido para tcp/udp). Usando el ejemplo de bind, una regla que permita conexiones de tcp y udp en un entorno de denegación por definición sería:
pass in quick on fxp0 proto tcp/udp from any to any port = 53Filtrado de paquetes
Además de filtrar según el protocolo, IP Filter también puede gestionar paquetes de IP fragmentados (un método común para bular filtros de paquetes). Hay dos opciones claves posibles que se pueden usar para tratar paquetes de ip fragmentados, frag para paquetes de IP fragmentados normales, o short para paquetes de IP con cabeceras demasiado pequeñas para poder compararlas. Ya que, dependiendo de las condiciones de conexión, los paquetes fragmentados pueden darse normalmente, es mejor filtrar sólo los paquetes con cabeceras demasiado pequeñas como para obtener comparaciones válidas. Esto se puede conseguir con la siguiente regla:
block in quick proto tcp all with short¿Y qué hay de las Opciones de IP? IP Filter también puede tratar con ese tipo de paquetes. Los paquetes se pueden bloquear si tienen las opciones de IP activadas, o se pueden bloquear según las opciones de IP que estén activadas. Por ejemplo, la siguiente regla bloqueará y creará un registro de todos los paquetes con las opciones de ip activadas.
block in log quick on fxp0 all with ipoptsSin embargo, esto puede estropear algunas cosas como traceroute(8). También es posible especificar qué opciones no serán permitidas. Por ejemplo, una buena regla es la de bloquear todos los paquetes con opciones de enrutamiento de fuentes. Se puede llevar a cabo con esta regla:
block in quick on fxp0 all with opt lsrr block in quick on fxp0 all with opt ssrrIndicadores TCP, conexiones establecidas, y mantenimiento del estado
La principal fuerza de IP Filter reside en su capacidad para filtrar paquetes basándose en los indicadores TCP, y mantener conexiones establecidas y el estado de la conexión. Se recomienda a todos los usuarios que deseen filtrar paquetes basándose en indicadores TCP que entiendan antes el papel que desempeña cada indicador. Por ejemplo, si un usuario quisiera denegar la conexión a todos los paquetes con los indicadores FIN, URG, y PSH activados (como por ejemplo un intento de obtener la huella digital de un sistema operativo por nmap), podría usar una regla como la siguiente:
block in quick on fxp0 proto tcp from any to any flags FUP(Gracias a Kyle Hargraves por esta regla)
El próximo truco de IP Filter es su capacidad para «mantener el estado» (keep state). Se ha descrito mantener el estado como «no hablar hasta que no le hablen», o en otras palabras, una vez que se ha establecido una conexión, los paquetes ya no tienen que atravesar grupos de reglas. Ésta es una potente característica que permite escribir unas reglas mucho más sencillas y seguras.
Por ejemplo, veamos cómo se puede aplicar este estado al ejemplo del grupo de reglas anterior. ¿Todavía está confundifo?. Revisémoslo: estamos permitiendo el acceso de gestión desde nuestra máquina de clase C al puerto 22 (ssh), y el acceso web a todo el tráfico a los puertos 80 (http) y 443 (https). Estamos bloqueando el resto de tráfico. Pero, ¿y si quisiera conectar por ssh fuera del servidor de web? o, ¿y si necesitara usar lynx para buscar algo en las páginas de Preguntas Frecuentes? No podría, ya que habría bloqueado todas las conexiones entrantes que no estuvieran dirigidas a los puertos especificados. Aunque ésta es la ruta más segura, puede ser muy poco conveniente. Al añadir las opciones clave keep state a la regla "pass out", puede permitir el paso de conexiones entrantes que sean respuestas a conexiones que Vd. haya iniciado, como por ejemplo al navegar por la web. Recuerde que es necesario especificar para qué protocolo estamos manteniendo el estado.
############################# # begin ruleset ############################# pass in quick on fxp0 from 1.1.1.0/24 to any port = 22 pass in quick on fxp0 from any to any port = 80 pass in quick on fxp0 from any to any port = 443 block in quick on fxp0 from any to any pass out on fxp0 proto tcp from any to any keep state ############################## # end ruleset ##############################
Este pequeño cambio supondrá un dramático incremento en la flexibilidad y seguridad de su grupo de reglas, debido a que IP Filter es extremadamente flexible. Por ejemplo, en el grupo de reglas anterior, está permitiendo todo el tráfico tcp a los puertos 80 y 443. Aún puede ajustarlo un poco más. Para establecer una conexión tcp sólo necesita permitir que tenga lugar el saludo inicial ("handshake"); una vez que esto ocurra, puede bloquear el tráfico a ese puerto y permitir a la regla "keep state" que gestione la conexión. Para que se complete el saludo inicial, sólo necesita permitir el paso a los paquetes con los indicadores SYN y SYNACK activados. Al dejar pasar sólo paquetes con SYN y SYNACK activados puede prevenir muchas formas de escaneos de puertos como puede ser el escaneo FIN. Ahora las reglas están de este modo:
############################# # begin ruleset ############################# pass in quick on fxp0 from 1.1.1.0/24 to any port = 22 pass in quick on fxp0 from any to any port = 80 flags S/SA pass in quick on fxp0 from any to any port = 443 flags S/SA block in quick on fxp0 from any to any pass out on fxp0 proto tcp from any to any keep state ############################## # end ruleset ##############################
Pongamos ahora todas las reglas que tenemos, poniéndolas en un solo paquete de reglas. Este paquete de reglas tendrá una política de denegación predefinida, permitirá conexiones de gestión sólo desde una red local (mediante ssh), y permitirá el paso de tráfico entrante en los puertos 80 (http) y 443 (https). Además, protegerá contra direcciones de ip falsificadas no enrutables, y bloqueará todos los paquetes que no estén tan fragmentados que no puedan ser inspeccionados. Una configuración bastante comprensiva para un servidor de web público. He aquí cómo quedaría /etc/ipf.rules:
########################### # begin ruleset ########################### # reglas de loopback pass out quick on lo0 pass in quick on lo0 # bloquear fragmentos diminutos block in quick proto tcp all with short # bloquear paquetes enrutados de fuentes block in quick on fxp0 all with opt lsrr block in quick on fxp0 all with opt ssrr # no permitir a nadie que falsee direcciones no enrutables block in quick on fxp0 from 127.0.0.0/8 to any block in quick on fxp0 from 192.168.0.0/16 to any block in quick on fxp0 from 172.16.0.0/12 to any block in quick on fxp0 from 10.0.0.0/8 to any block out quick on fxp0 from any to 127.0.0.1/8 block out quick on fxp0 from any to 192.168.0.0/16 block out quick on fxp0 from any to 172.16.0.0/12 block out quick on fxp0 from any to 10.0.0.0/8 # permitir la conexión por ssh sólo a sus máquinas pass in quick on fxp0 from 1.1.1.0/24 to any port = 22 # permitir que otros usen http y https pass in quick on fxp0 from any to any port = 80 flags S/SA pass in quick on fxp0 from any to any port = 443 flags S/SA # finalmente, bloquear el resto con una denegación por definición block in quick on fxp0 from any to any # y dejar pasar todo el tráfico saliente y mantener el estado # en conexiones establecidas pass out on fxp0 proto tcp from any to any keep state ############################# # end ruleset #############################
Si tiene problemas puede activar el ingreso en reglas individuales para
analizarlos; o sea,
pass in log quick on fxp0 from 1.1.1.0/24 to any port = 22
Cuando modifique el fichero de configuración para obtener
ficheros log de información de los paquetes, no se olvide de
hacer que los cambios surtan efecto mediante:
ipf -Fa -f /etc/ipf.rules
ipmon escribirá las entradas de los ficheros de log en
/var/log/ipflog.
Para más información sobre ipf, el
IPF howto es
una fuente excelente, como también lo son los recursos
disponibles en las páginas de
IP Filter.
Desarrollado sobre un trabajo original de Wayne Fergerstrom <wayne@methadonia.net>
Esta sección pretende servir de ayuda para aquellos que instalen y configuren la «Traducción de Direcciones de Red» (NAT, "Network Address Translation") en una máquina con OpenBSD. Se asume que el usuario ya ha configurado y activado una máquina con OpenBSD con dos tarjetas de red (una conectada a Internet y la otra a la red local). IP NAT funcionará en máquinas con sólo un NIC, sin embargo, como los paquetes entrarán y saldrán de la misma interfaz, las colisiones de ethernet ralentizarán el rendimiento de forma considerable.
Basado en RFC 1631, ipnat ofrece una forma fácil para la asignación de redes locales a una dirección única enrutable («real») de internet. Esto es de gran utilidad si no dispone de direcciones asignadas oficialmente para cada huésped en su red interna. Cuando configura redes privadas/internas, puede aprovechar los bloques de direcciones reservados (asignados en RFC 1918), como:
10.0.0.0/8 (10.0.0.0 - 10.255.255.255) 172.16.0.0/12 (172.16.0.0 - 172.31.255.255) 192.168.0.0/16 (192.168.0.0 - 192.168.255.255)Terminología
Los términos convencionales usados en este documento son bastante claros. Con el fin de documentarlos, repasaré algunos de estos términos y la acepción que toman en este documento.
Describe la función de «Traducción de Direcciones de Red». El proceso de NAT se describirá más adelante en este documento.
Es la abreviación de «Traducción de Direcciones de Red IP». Se puede utilizar de manera indistinta en substitución de NAT. Sin embargo, en este documento el término "ipnat" se utilizará tan sólo para el uso de la línea de órdenes.
Es la abreviación de «Filtro IP». IP Filter es un paquete de software de filtrado portable que se incluye como parte del sistema OpenBSD. IP Filter debe estar activado antes de poder activar ipnat. Se activa de modo fácil, simplemente editando el fichero /etc/rc.conf y cambiando ipf=NO por ipf=YES. Esto sólo lo cambiar para la secuencia de inicio, y es necesario ejecutar 'ipf -E' para activar ipf mientras el sistema está en funcionamiento. Más adelante se describen estos pasos.
Esta parte se refiere a los detalles de configuración de las máquinas para este documento. Su configuración será distinta de ésta, pero el propósito de este documento es el de ofrecerle una breve idea de cómo puede ser, con el fin de que pueda adaptar esta información a su configuración.
+-----+ +---------+ +----------+
| Hub |--------- dc1 | NAT | dc0 ----| Internet |
+-----+ +---------+ +----------+
| |
| +-- Cliente A
+---- Más clientes
+--------------------------+
| LEGEND |
+--------------------------+
| NIC dc0 - 24.5.0.5 |
| NIC dc1 - 192.168.1.1 |
| Cliente A - 192.168.1.40 |
+--------------------------+
Cada día más empresas y usuarios entran en Internet, y cada uno debe tener una dirección IP, pero las direcciones IP públicas son cada vez más difíciles de conseguir. Para muchas personas la solución ha sido la «Traducción de Direcciones de Red» (o NAT). NAT es un modo muy simple y a la vez muy potente de conectar una LAN a Internet sin tener que comprar o alquilar direcciones IP para cada máquina. NAT también es conocido como «Enmascaramiento de IP» entre los usuarios de Linux.
Cuando NAT está funcionando correctamente, permite que los usuarios dentro de la LAN puedan acceder a Internet a través de diferentes direcciones de IP (la que haya activado con su proveedor). Cada máquina conectada a la LAN usa la dirección IP (de forma transparente) de la máquina que está configurada para usar la dirección de IP asignada por el Proveedor de Servicion de Internet (ISP).
El modo en que funciona NAT es increiblemente simple. Cuando un cliente dentro de la LAN quiere conectar a la máquina en Internet, le envía un paquete TCP con un requerimiento de conexión. Dentro de la cabecera del paquete TCP se encuentra la dirección IP del cliente (o sea, 192.168.1.40) y la dirección IP del anfitrión requerido (o sea, 123.45.67.89). La máquina en la que está funcionando NAT intercepta este paquete TCP y cambia la dirección IP del cliente de 192.168.1.40 a la dirección IP de la máquina conectada a Internet (o sea, 24.5.0.5). De este modo engaña a la máquina anfitriona, haciéndole pensar que la conexión requerida proviene de la máquina con NAT, no de la máquina cliente. Entonces el anfitrión envía de vuelta respuestas a la máquina NAT como si ésta fuera la que se estuviera conectando. Cuando la máquina NAT recibe las respuestas, las traduce rápidamente y envía el paquete al cliente. El cliente no tiene ni la más remota idea de lo que está ocurriendo y la falsificación de la conectividad a Internet es totalmente transparente.
El ejemplo siguiente muestra NAT de un modo más claro:
Cliente ----------------- dc1 [ NAT ] dc0 ---------- Anfitrión de Internet 192.168.1.40 --- 192.168.1.1 [ NAT ] 24.5.0.5 --- 123.45.67.89 Paquete TCP SALIENTE Paquete TCP SALIENTE Desde: 192.168.1.40 >>=== NAT ===>> Desde: 24.5.0.5 Hacia: 123.45.67.89 Hacia: 123.45.67.89 Paquete TCP ENTRANTE Paquete TCP ENTRANTE Desde: 123.45.67.89 Desde: 123.45.67.89 Hacia: 192.168.1.40 <<=== NAT ===<< Hacia: 24.5.0.5
Una vez que ya había conseguido un módem cable en mi nuevo apartamento me dí cuenta de que tenía un pequeño problema. ¿Cómo podría conseguir acceso a Internet para mis compañeros de apartamento si el módem estaba en mi habitación? Sólo había unas pocas opciones que podían ayudarme, y que iban desde obtener direcciones IP extras, pasando por instalar un servidor proxy, hasta instalar NAT (no permita que el ejemplo del módem cable le engañe, NAT es lo suficientemente potente como para enmascarar un gran red con cientos o incluso miles de máquinas).
Existen varias razones por las que decidí instalar NAT, la primera de ellas mi economía. En la casa vivían dos compañeros de piso (cada uno con su propio PC) y yo (con tres PCs). Mi ISP sólo permitía tres direcciones IP por casa, lo que significaba que no habían suficientes IPs para que cada máquina pudiera tener acceso a Internet.
Usando NAT cada máquina tendría una dirección IP única (interna), pero compartirían la única dirección IP que mi ISP me dio. El coste se redujo.
Para activar NAT en su máquina OpenBSD, necesitará configurar IPF y NAT. Esto se puede llevar a cabo de una manera fácil editando los ficheros que aparecen en la siguiente lista (haga los cambios al fichero de modo que aparezcan como las opciones que siguen a continuación):
/etc/rc.conf (este fichero se usa para iniciar servicios durante el arranque)
/etc/sysctl.conf
Despuís de haber hecho estos cambios, la máquina estará lista para la configuración de NAT.
El primer paso es configurar el fichero de reglas de IPF (/etc/ipf.rules). Para el propósito que persigue este documento, dejaremos que el tráfico pase a través de esta opción de cortafuegos sin que haya interferencias. El fichero será como sigue:
pass in from any to any pass out from any to any
Para más información puede leer la sección 6.2 de estas Preguntas Frecuentes.
La sintaxis del fichero de configuración de NAT (/etc/ipnat.rules) es bastante simple. De acuerdo con el ejemplo de configuración anterior, el fichero de configuración de NAT contendrá las siguientes entradas:
map dc0 192.168.1.0/24 -> 24.5.0.5/32 portmap tcp/udp 10000:60000 map dc0 192.168.1.0/24 -> 24.5.0.5/32
He aquí lo que significan estas líneas.
Ésta es la orden que se le pasa a ipnat. Dicha orden indica a ipnat que ésta es una entrada para cambiar la dirección IP entre la LAN e Internet.
Ésta es la interfaz de red que está conectada a Internet.
La dirección IP y de enmascaramiento de red ("netmask", cuyo formato es CIDR). La combinación de ambas indica que «cualquier dirección IP con un valor desde 192.168.1.1 hasta 192.168.1.254 debe ser asignado». Si prefiere no usar el formato CIDR, puede substituir «/24» por «/255.255.255.0».
Esta dirección de IP y de enmascaramiento de red indica la dirección IP que se asignará a la LAN. /32 indica una sola dirección IP. También puede asignarle direcciones IP /24, ó 256 (ó /27, ó cualquier otro número de bits que quiera). Esto último es muy útil si tiene varios miles de máquinas huéspedes detrás de su NAT... claro que sólo es de utilidad si ese /24 está siendo enrutado a su sistema OpenBSD.
Esto asigna todos los paquetes tcp/udp a puertos desde el 10000 hasta el 60000.
La segunda línea tiene casi la misma entrada que la primera, exceptuando la parte final. En esta línea se indica a ipnat que debe asignar cualquier otra cosa (que no sea tcp/udp, ya que esos paquetes concuerdan en la primera línea) a cualquier puerto que requiera (usado por ICMP y otros protocolos). Una vez que esto está en el fichero, sólo tiene que ejecutar el dæmon IPF.
Ejecutar NAT también es un proceso muy sencillo. Una vez que haya acabado de configurarlo, hay dos maneras de activar NAT. La primera manera, y la mejor si fuera posible comprobar la fase de configuración, es reiniciando su sistema OpenBSD. Para ello basta que use la orden «reboot«.
Si quiere ejecutar ipnat desde la línea de órdenes, use las siguiente órdenes:
# ipf -Fa -f /etc/ipf.rules -E # ipnat -CF -f /etc/ipnat.rules
Con la primera línea de órdenes se activa IPF (recuerde que NAT depende de IPF, y por lo tanto es necesario iniciar IPF y tenerlo en funcionamiento antes de poder cargar NAT). Las opciones en la línea de órdenes "-Fa" limpian cualquier entrada existente. "-f /etc/ipf.rules" indica a ipf dónde encontrar el fichero con las reglas. "-E" es el interruptor para activar el dæmon IPF.
La segunda línea de órdenes es para activar NAT. "-CF" limpia y descarga todas las entradas existentes en la tabla de NAT. "-f /etc/ipnat.rules" indica a NAT dónde encontrar el fichero con las reglas de NAT. Ahora ya tiene NAT funcionando. Así de sencillo.
Nota: para volver a cargar las configuraciones de NAT (en el caso en que las cambiara y no quisiera reiniciar) ejecute la segunda orden de nuevo. Las configuraciones serán descargadas y cargadas de nuevo.
Para averiguar cómo está funcionando NAT o asegurarse de que las configuraciones hayan hecho efecto, use la opción "-l". Esta opción le mostrará un listado de todas las opciones de configuración y sesiones actuales que esté usando ipnat:
# ipnat -l map dc0 192.168.1.0/24 -> 24.5.0.5/32 portmap tcp/udp 10000:60000 map dc0 192.168.1.0/24 -> 24.5.0.5/32 List of active sessions: MAP 192.168.1.40 2473 <- -> 24.5.0.5 13463 [129.128.5.191 80]
El propósito de las primeras dos líneas es el de verificar las configuraciones que se introdujeron anteriormente en /etc/ipnat.rules. Cualquier línea a partir de esas dos mostrará una lista de las conexiones que estén siendo actualmente controladas por NAT.
Le indica la dirección IP de la máquina que esté usando NAT en la LAN. El número del puerto que se use para realizar la conexión se mostrará a continuación.
Indica que NAT está gestionando el flujo de tráfico en ambas direcciones.
Indica que la conexión va a Internet a través de la dirección IP 24.5.0.5 y que usa el puerto 13463.
La dirección IP y el puerto por el que se está realizando la conexión.
NAT tiene unas pocas limitaciones a tener en cuenta. Cuando un usuario conecta a un servidor de FTP remoto y pide información o un fichero a éste, el servidor de FTP conectará con el cliente y le transferirá los datos. Este proceso se lleva a cabo por un puerto libre aleatorio. Pero esto representa un problema para los usuarios que intentan obtener acceso a los servidores de FTP desde dentro de la LAN. Cuando el servidor de FTP envía sus datos, los envía al NIC externo en un puerto aleatorio. La máquina NAT los recibe, pero como no tiene ninguna asignación para el paquete desconocido ni para ese puerto en concreto, suelta el paquete y no lo entrega.
La solución a esto está en que el usuario se ubique en «modo pasivo» en su cliente de FTP. De este modo indicará al servidor que desea conectarse a éste, y que no ocurra lo antes mencionado. Así, al realizar el usuario la conexión, NAT la gestionará correctamente.
IP Filter ofrece otra solución para esta situación, un "proxy" de ftp integrado en el código de NAT. Para activarlo, debe escribir algo parecido a lo siguiente antes de sus otras asignaciones para NAT.
map dc0 192.168.1.0/24 -> 24.5.0.5/32 proxy port ftp ftp/tcpCon esto, el núcleo del sistema observará sus conexiones por FTP para la orden "PORT" que proceda del cliente de ftp, y substituirá la dirección IP y el puerto con su propia dirección IP externa y con un puerto de su elección. Obviamente, esto requiere de un uso mucho más intensivo de recursos pero, a menos que su máquina de filtrado NAT/IP esté alcanzando una masa crítica, no debería darle ningún problema.
Redireccionamiento del tráfico
Es posible que haya momentos en los que necesite redireccionar el tráfico entrante o saliente hacia cierto protocolo o puerto. Un buen ejemplo de esto podría ser el caso en el que tuviera un servidor que residiera dentro de la LAN y que estuviera haciendo la función de servidor de web. Las conexiones entrantes a su IP válido de Internet se encontrarían con que, a menos que su máquina NAT fuera el servidor de web, no podrían conectar. Para solventarlo usaremos la directiva `rdr' de NAT en el fichero de reglas, para darle las instrucciones sobre a dónde debe redireccionar (o enrutar) una conexión en particular.
Para nuestro ejemplo, supongamos que un servidor de web reside en la LAN y que su dirección IP es 192.168.1.80. El fichero de reglas de NAT necesita una nueva directiva para gestionar esto. Añada una línea parecida a la siguiente a su ipnat.con:
rdr dc0 24.5.0.5/32 port 80 -> 192.168.1.80 port 80
Desglosando esta línea para ver qué signfica cada componente de ella:
Es la orden que le está pasando a ipnat. Indica a ipnat que lo que sigue es una entrada para redireccionar una conexión.
Es la interfaz de red que está conectada a Internet.
Indica que es una conexión entrante a esta dirección IP (sólo en dc0, como arriba).
Éste es el puerto (80) que debe ser redireccionado. El número «80» no es estrictamente necesario, también podría usar «port www» para especificar una redirección del puerto 80. Si desea usar un nombre en lugar de un número, el nombre del servicio y el puerto correspondiente deben existir en el fichero /etc/services.
Es la dirección IP y de enmascaramiento de red ("netmask") de la máquina LAN a la que redireccionan los paquetes. El enmascaramiento de red es siempre «/32» (y por tanto no es necesario especificarlo), para que los paquetes puedan ser redirigidos a una máquina en particular.
Cuando haya terminado de añadir todos los datos, recargue las reglas de NAT y el redireccionamiento comezará de inmediato.
La diferencia entre NAT y una aplicación basada en proxy es que el software de proxy actúa como un intermediario entre Internet y las máquinas conectadas a la LAN. En prinicipio esto no presenta ningún problema, sin embargo cada aplicación que quiera ejecutar en su máquina y conectarla a Internet a través del servidor de proxy, DEBE reconocer el proxy (ser capaz de usarlo). No todas las aplicaciones con capaces de esto (en especial los juegos). Aún más, no existen aplicaciones para servidores de proxy para todos los servicios de Internet. NAT asigna su red interna de un modo transparente, para que pueda conectar a Internet. La única ventaja de seguridad que proxy tiene sobre NAT es que el software de proxy puede haber sido programado para funciones de seguridad, y puede filtrar según el contenido con el fin de evitar que una macro de virus se interne en su máquina Windows, o proteger sus programas contra desbordamientos de la memoria intermedia ("buffer overflows"), y otros peligros. El mantenimiento de estos filtros es a menudo un trabajo muy pesado.
6.3.4 Referencias y recursosFicheros de OpenBSD:
Enlaces de NAT en Internet:
Para usar el cliente DHCP incluido en OpenBSD, dhclient(8), edite el fichero /etc/hostname.xl0 (suponiendo que su interfaz principal de ethernet sea xl0; la suya podría ser ep0, o fxp0, o cualquier otra). Todo lo que necesita añadir a este fichero es 'dhcp'.
# echo dhcp >/etc/hostname.xl0Esto hará que OpenBSD inicie el cliente DHCP automáticamente durante el arranque. OpenBSD obtendrá la información sobre su dirección IP, pasarela, y servidores de DNS desde el servidor de DHCP.
Si quiere iniciar un cliente dhcp desde la línea de órdenes, asegúrese de que el fichero /etc/dhclient existe, y entonces escriba:
# dhclient fxp0en donde fxp0 es la interfaz en la que quiere recibir dhcp.
Sea cual fuere el modo en que inicie dhclient, puede evitar que se actualice su DNS de acuerdo con la idea que tenga el servidor dhcp sobre la DNS, comentando las líneas precedidas por 'request' (son ejemplos de la configuración predefinida, pero necesita activarlos para anular la configuración predefinida de dhclient)
request subnet-mask, broadcast-address, time-offset, routers,
domain-name, domain-name-servers, host-name, lpr-servers, ntp-servers;
y a continuación eliminar domain-name-servers.
También es posible que también desee anular hostname u
otras configuraciones.
# echo xl1 xl2 xl3 >/etc/dhcpd.interfacesy edite /etc/dhcpd.conf. Las opciones son bastante claras:
option domain-name "xyz.mil";
option domain-name-servers 192.168.1.3, 192.168.1.5;
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;
range 192.168.1.32 192.168.1.127;
}
Con esto indicará a sus clientes dhcp que el dominio que deben añadir a sus requerimientos de DNS es xyz.mil (así, si un usuario escribiera 'telnet joe', los enviaría a joe.xyz.mil). Les dirigirá a los servidores de DNS 192.168.1.3 y 192.168.1.5. Para los huéspedes que se encuentren en la misma red que una interfaz de ethernet en la máquina de OpenBSD, que está en el rango 192.168.1.0/24, les asignará una dirección de IP entre 192.168.1.32 y 192.168.1.127, configurando su pasarela por definición como 192.168.1.1.
Si quiere iniciar dhcpd desde la línea de órdenes, después de editar /etc/dhcpd.conf intente lo siguiente:
# dhcpd -q fxp0En donde fxp0 es la interfaz que Vd. desea que empiece a servir dhcp. El indicador -q fuerza dhcpd en silencio, de otro modo es muy ruidoso.
Si está actuando como servidor de DHCP para una máquina Windows, es posible que quiera que dhcp ofrezca al cliente una dirección de servidor 'WINS'. Para ello añada la siguiente línea al fichero /etc/dhcpd.conf:
option netbios-name-servers 192.168.92.55;En donde 192.168.92.55 es el IP de su servidor de Windows o Samba. Para ver más opciones que puedan aceptar sus clientes DHCP, lea dhcp-options(5).
Primero trataremos el dæmon del modo de usuario. Para empezar necesitará algo de información sobre su isp. He aquí una lista de la información que necesitará:
Parte de esta información no es estrictamente necesaria, pero será de gran ayuda para configurar ppp. El dæmon PPP de modo usuario utiliza el fichero /etc/ppp/ppp.conf como fichero de configuración. Existen muchos ficheros en /etc/ppp de gran utilidad, que pueden contener diferentes ejemplos de configuración para situaciones distintas. Le aconsejamos que mire en ese directorio.
En caso de no estar usando un núcleo GENERIC, asegúrese de que tiene la siguiente línea en su fichero de configuración:
pseudo-device tun 2
La configuración inicial del dæmon PPP de modo usuario consiste en editar su fichero /etc/ppp/ppp.conf. Este fichero no existe y debe ser creado, pero puede tomar el fichero /etc/ppp/ppp.conf.sample, editarlo, y crear su propio fichero ppp.conf a partir de ahí. Aquí empezaré con la más simple, y probablemente más utilizada, configuración. A continuación puede ver un pequeño fichero ppp.conf que llevará a cabo la conexión con su ISP y usará sus rutas predefinidas y su nameserver. Para este fichero, toda la información que necesitará será el número de teléfono de su ISP, su nombre de usuario, y su contraseña.
default: set log Phase Chat LCP IPCP CCP tun command set device /dev/cua01 set speed 115200 set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" AT OK-AT-OK ATE1Q0 OK\\dATDT\\T TIMEOUT 40 CONNECT"
AVISO - En OpenBSD 2.6, el sistema se lanzó con un fichero /etc/ppp/ppp.conf.example que contenía una configuración errónea para el dispositivo. El dispositivo era "set device /dev/cuaa0" cuando en realidad debía ser /dev/cua00, que corresponde al dispositivo para el puerto de comunicaciones 1 (COM1). Su dispositivo podría no estar en COM1, aún así este esquema era erróneo.
La sección en la opción default: será ejecutada cada vez. En ella se configura toda la información crítica. Con "set log" se configuran los niveles de ingreso. Esto se puede cambiar; para más información sobre cómo configurar los niveles de ingreso lea la página de manual ppp(8). El dispositivo se configura con "set device". Éste es el dispositivo en el que se encuentra el modem. En este ejemplo el modem está en el puerto de comunicaciones 2 (COM2), mientras que el puerto de comunicaciones 1 correspondería a /dev/cua00. Con "set speed" se configura la velocidad de la conexión por llamada, y con "set dial" se configura los parámetros de la llamada. Con esto se puede cambiar el tiempo muerto, etc... Es conveniente dejar esta línea más o menos como está.
A continuación puede pasar a configurar la información específica para su ISP. Para ello debe añadir otra opción en la sección default:. Puede dar cualquier nombre a esta etiqueta, pero lo más fácil es darle el nombre de su ISP. En el ejemplo usaremos myisp: para la opción que hará referencia a nuestro ISP. He aquí una configuración simple que incorpora todo lo necesario para conectar:
myisp: set phone 1234567 set login "ABORT NO\\sCARRIER TIMEOUT 5 ogin:--ogin: ppp word: ppp" set timeout 120 set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0 add default HISADDR enable dns
Aquí hemos configurado información esencial para un ISP específico. La primera opción, "set phone", es para configurar el número de teléfono para la conexión de su ISP. La opción "set login" es para configurar sus opciones de ingreso. En el ejemplo hemos puesto un tiempo muerto de espera de 5, lo que significa que terminará nuestro intento de ingreso después de 5 segundos su no hay transportador. De lo contrario esperará hasta recibir un "login" para enviar su nombre de usuario y contraseña. En el ejemplo, tanto el nombre de usuario como la contraseña son "ppp". Estos valores hay que substituirlos por otros reales. La opción "set timeout" es para configurar el tiempo de espera para todo el proceso de ingreso. La opción "set ifaddr" es algo complicada. He aquí una explicación más extensa sobre ella:
set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0
Hemos configurado la línea anterior con el formato "set ifaddr [myaddr[/nn] [hisaddr[/nn] [netmask [triggeradr]]]]". De este modo el primer IP que se especifique es el que querremos como nuestro IP. Sin tiene una dirección IP estática, escríbala aquí. En el ejemplo hemos usado /0, que indica que no es necesario que concuerde ningún bit de esta dirección ip, y que se puede substituir todo. El segundo IP que se especifique es el que esperamos como el IP de nuestro ISP. Si lo sabe lo puede especificar aquí, pero en la línea no sabemos cuál se asignará, así que dejaremos que nos lo digan. Esto es muy útil al negociar con algunas implementaciones PPP que no asignan un número IP a menos que su conexión les requiera ``0.0.0.0''.
La siguiente opción "add default HISADDR" es para configurar la ruta predefinida a su IP. Si su IP cambiara, la ruta se actualizaría de forma automática. Con "enable dns" indicamos a nuestro ISP que autentifique nuestras direcciones nameservers. No haga esto si está usando una DNS local, ya que ppp circunvalará su uso introduciendo algunas líneas en /etc/resolv.conf.
Ahora que ya tenemos el fichero ppp.conf configurado, podemos intentar una conexión con nuestro ISP. A continuación se darán algunos detalles sobre argumentos de uso común con ppp.
Si usa /usr/sbin/ppp sin pasarle ninguna opción, le pasará al modo interactivo, desde donde podrá interaccionar directamente con el módem. De este modo puede depurar problemas en su fichero ppp.conf.
Si necesitara ejecutar órdenes al tiempo que conecta o desconecta, puede hacerlo creando dos ficheros adicionales. /etc/ppp/ppp.linkup y /etc/ppp/ppp.linkdown. Puede ver ejemplos de configuración para estos ficheros en:
Puede encontrar más información en http://www.freebsd.org/handbook/userppp.html o en http://www.es.freebsd.org/es/FAQ/ppp.html.
Para forzarlo use sysctl e incremente los valores de:
net.inet.tcp.keepinittime net.inet.tcp.keepidle net.inet.tcp.keepintvlSi usa sysctl -a podrá ver los valores actuales de estos y muchos otros parámetros. Para cambiar cualquiera de ellos, use sysctl -w, como por ejemplo en sysctl -w net.inet.tcp.keepidle=28800.
En algunos casos, como en redes cerradas, puede tener cierta utilidad, en particular cuando esté usando implementaciones antiguas del protocolo NetBIOS. Se puede activar con sysctl -w net.inet.ip.directed-broadcast=1. Para saber porqué se encuentra desactivado por definición, infórmese sobre ataques "smurf".
Añada la lista de puertos TCP que no deberían ser asignados dinámicamente por el núcleo. Esto se puede usar para evitar que algunos dæmons se apropien de un puerto específico que sea necesario para el funcionamiento de otro programa. La lista de elementos puede ir separada por comas y/o espacios en blanco. sysctl -w net.inet.tcp.baddynamic=749,750,751,760,761,871 También se pueden añadir o eliminar puertos de la lista actual. sysctl -w net.inet.tcp.baddynamic=+748 sysctl -w net.inet.tcp.baddynamic=-871
El «Sistema de Archivos de Red» (NFS, "Network File System") se usa para compartir un sistema de archivos en una red. Algunas páginas de manual que debería leer antes de que intente configurar un servidor de NFS son:
En esta sección se detallarán los pasos para una configuración simple de NFS. El ejemplo ofrece detalles sobre un servidor en una LAN, con clientes que tengan acceso NFS en la LAN. En esta sección no se tratará sobre la seguridad de NFS. Asumiremos que Vd. ya ha configurado su paquete de filtros, u otra protección como cortafuegos, para prevenir el acceso desde el exterior. Si su configuración permite el acceso desde el exterior a su servidor de NFS, y si tiene algún tipo de datos confidenciales o importantes, le recomendamos encarecidamente que haga uso de IPSec. De otro modo existe la posibilidad de que extraños puedan ver su tráfico NFS. También sería posible que alguien pretendiera estar en la dirección IP que tenga autorizada la entrada en su servidor NFS. Existen varios tipos de ataques efectivos en este aspecto. Cuando IPSec está correctamente configurado, protege contra todos estos tipos de ataques.
Otra nota importante sobre seguridad. No se limite a añadir un sistema de archivos a /etc/exports sin algún tipo de lista de huéspedes autorizados. Sin una lista de huéspedes que puedan montar un directorio particular, cualquiera que pueda llegar a su huésped podrá montar sus directorios de NFS en exports.
La configuración consiste en un servidor con el ip 10.0.0.1, que servirá NFS sólo a clientes dentro de esa red. El primer paso para configurar NFS es configurar su fichero /etc/exports. Este fichero se compone de una lista con los sistemas de archivo que quiera que se encuentren accesibles por medio de NFS, y define quién puede acceder a cada uno de ellos. Existen muchas opciones que puede usar en su fichero /etc/exports, y es conveniente leer la página de manual exports(5). En este ejemplo empezaremos con un fichero /etc/exports como el siguiente:
# # NFS exports Database # See exports(5) for more information. Be very careful, misconfiguration # of this file can result in your filesystems being readable by the world. /work -alldirs -ro -network 10.0.0 -mask 255.255.255.0
Esto quiere decir que el sistema de archivo local /work estará disponible por medio de NFS. -alldirs indica que los clientes podrán montar en cualquier parte del punto de montaje /work. -ro indica que sólo se permitirá montarlo en modo de sólo lectura. Los dos últimos argumentos indican que sólo los clientes dentro de la red 10.0.0.0 que usen una máscara de red 255.255.255.0, estarán autorizados a montar este sistema de archivo. Esto es importante en algunos servidores accesibles desde diferentes redes.
Una vez que su fichero /etc/exports haya sido configurado, puede seguir adelante y configurar su servidor NFS. Primero debería asegurarse de que las opciones NFSSERVER y NFSCLIENT se encuentren en la configuración del núcleo de su sistema (el núcleo GENERIC incluye estas opciones). A continuación debe configurar nfs_server=YES en el fichero /etc/rc.conf. De este modo, cuando reinicie el sistema, se activarán nfsd(8) y mountd(8). Ahora ya puede continuar e iniciar los dæmons Vd. mismo. Estos dæmons deben ser iniciados por root, y debe asegurarse de que portmap(8) se encuentre funcionando en su sistema. El ejemplo que sigue sobre cómo iniciar nfsd(8) sirve tanto para TCP como para UDP usando 4 dæmons. Para gestionar el máximo número de requerimientos de clientes concurrentes a los que quiera dar servicio, debe activar un número apropiado de dæmons del servidor NFS.
# /sbin/nfsd -tun 4
No sólo debe iniciar el servidor nfsd(8), sino que también necesita iniciar mountd(8). Éste es el dæmon que da servicio a los requerimientos para montar en NFS. Para iniciar mountd(8) escriba:
# /sbin/mountd
Si hace algún cambio al fichero /etc/exports mientras NFS esté funcionando, tendrá que avisar a mountd sobre el cambio pasándole una señal "HUP":
# kill -HUP `cat /var/run/mountd.pid`
Puede llevar a cabo comprobaciones para asegurarse de que estos dæmons estén funcionando y registrados con RPC. Para ello use rcpinfo(8).
$ rpcinfo -p 10.0.0.1
program vers proto port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100005 1 udp 633 mountd
100005 3 udp 633 mountd
100005 1 tcp 916 mountd
100005 3 tcp 916 mountd
100003 2 udp 2049 nfs
100003 3 udp 2049 nfs
100003 2 tcp 2049 nfs
100003 3 tcp 2049 nfs
Durante su uso normal, existen unas pocas utilidades más que le permitirán ver lo que está ocurriendo con NFS. Una de ellas es showmount(8), que le permite ver qué se encuentra montado y quién lo está montando. También está nfsstat(8), que muestra una información de las estadísticas mucho más amplia. Para usar showmount(8) escriba /usr/bin/showmount -a host. Por ejemplo:
$ /usr/bin/showmount -a 10.0.0.1 All mount points on 10.0.0.1: 10.0.0.37:/work
Los sistemas de archivo NFS se deben montar mediante mount(8), o más exactamente mediante mount_nfs(8). Para montar un sistema de archivo /work del huésped 10.0.0.1 en un sistema de archivo local /mnt, haga lo siguiente (no necesita usar una dirección IP, mount se encargará de la resolución de nombres):
# mount -t nfs 10.0.0.1:/work /mnt
Para que el sistema se monte al iniciar, añada una algo como lo que ve a continuación en su fichero /etc/fstab:
10.0.0.1:/work /mnt nfs rw 0 0
¡¡Es importante que use 0 0 al final de esta línea para que su máquina no intente ejecutar fsck sobre el sistema de archivo NFS durante el inicio del sistema!! El resto de opciones de seguridad típicas como noexec, nodev, y nosuid, también deberían usarse donde sean posibles, como en:
10.0.0.1:/work /mnt nfs rw,nodev,nosuid 0 0
De este modo ningún dispositivo o programa setuid en el servidor NFS podrá traspasar las medidas de seguridad en el cliente NFS. Si no está montando programas para ejecutarlos en el cliente NFS, añada noexec a esta lista.
El «Servicio de Nombres de Dominio» (DNS, "Domain Name Service") es una facilidad de red que permite a los dominios de redes IP proveer resoluciones de direcciones nombre-a-IP y resoluciones dirección-a-nombre en respuesta a un requerimiento. Su instalación de OpenBSD está configurada por definición como un cliente de DNS, pero no como un servidor de DNS. O sea, su instalación de OpenBSD puede llevar a cabo un requerimiento de DNS para la dirección de una máquina contra un servidor de nombres de dominio, pero no puede responder a uno de esos requerimientos de DNS de por sí a menos que la configure para ello.
Mi máquina con OpenBSD está conectada actualmente a Internet a través de mi proveedor (ISP "Internet Service Provider"), y por lo tanto puedo usar la utilidad nslookup(8) para ejecutar el requerimiento de DNS:
$ nslookup www.openbsd.org Server: ns4.us.prserv.net Address: 165.87.201.244 Non-authoritative answer: Name: www.openbsd.org Address: 129.128.5.191
165.87.201.244 es el nombre del servidor que ha contestado, porque es el «nombre de servidor» ("nameserver") que mi ISP me dijo que usara con mi cuenta, y cuyo número se introduce en el fichero /etc/resolv.conf. Pero la respuesta no fue autorizada. Para una respuesta autorizada, investiguemos cuál es el servidor de DNS autorizado para el dominio openbsd.org, y preguntémosle por la dirección de www.openbsd.org:
# Identificar el nombre de los servidores de openbsd.org # con la ayuda del nombre del servidor de mi ISP. $ nslookup -type=NS openbsd.org Server: ns4.us.prserv.net Address: 165.87.201.244 Non-authoritative answer: openbsd.org nameserver = cvs.openbsd.org openbsd.org nameserver = gandalf.sigmasoft.com openbsd.org nameserver = cs.colorado.edu openbsd.org nameserver = ns.appli.se openbsd.org nameserver = zeus.theos.com Authoritative answers can be found from: cvs.openbsd.org internet address = 199.185.137.3 gandalf.sigmasoft.com internet address = 198.144.202.98 cs.colorado.edu internet address = 128.138.243.151 ns.appli.se internet address = 194.198.196.230 zeus.theos.com internet address = 199.185.137.1 # Usar la información conseguida para requerir una # resolución autorizada: # requerir la autorización zeus.theos.com. $ nslookup www.openbsd.org zeus.theos.com Server: zeus.theos.com Address: 199.185.137.1 Name: www.openbsd.org Address: 129.128.5.191
zeus.theos.com es, como puede suponer, una máquina que funciona con OpenBSD y que está correctamente configurada para ser un servidor de DNS para el dominio openbsd.org.
La orden dig(1) es epecialmente útil porque puede requerir un dominio y devolver la información prácticamente en el mismo formato requerido por los ficheros de configuración de BIND. Puede usar dig(1) para examinar nombres de servidores que sepa que están operando correctamente para comparar su configuración con la de ellos.
Si no está seguro de si necesita que su máquina haga el papel de servidor de DNS, no la configure de ese modo. La instalación de OpenBSD no activa su máquina como servidor de nombres de dominio por definición, aunque todos los ficheros necesarios se encuentran instalados. Para la mayoría de estaciones de trabajo, es suficiente con los ficheros /etc/hosts para indicar las direcciones IP de la máquinas locales y /etc/resolv.conf para indicar qué servidores de DNS le harán el servicio en la intranet o internet.
Por otra parte, podría necesitar configurar su máquina como un servidor de nombres de dominio:
Algo más a tener en cuenta es el velocidad de ejecución. Como la resolución de nombres es un proceso repititivo, en el que el servidor de nombres lleva a cabo repetidos requerimientos de direcciones en dominios remotos a otros servidores de nombres, la resolución de nombres puede tardar algo más si tiene una conexión por módem a Internet y está requiriendo direcciones remotas a su propio servidor de DNS (que hará continuos requerimientos a servidores de nombres remotos a través del módem) que si está requiriendo el servidor de nombres de su ISP (que probablemente tenga una conexión más rápida a los servidores de nombres remotos).
BIND es el nombre de la especificación del comportamiento de un servidor de nombres de dominio. Los componentes de DNS existen para implementar BIND de forma colectiva.
Existen dos especificaciones BIND diferentes:
Tal y como queda instalado, OpenBSD named tiene soporte para BIND 4.x.
Si usa estas implementaciones alternativas del DNS, estará
ofreciendo un servicio de red crítico mediante el uso de unos
programas que pueden no haber sido sometidos al mismo nivel de
escrutinio que el dæmon de name en la
instalación base, named, el cual
ha pasado una auditoría de
seguridad. Esta es una consideración a tener muy en cuenta,
ya que si un servidor de nombres de dominio es puesto en peligro, los
resolucionadores que usen ese servidor de DNS pueden ser
redireccionados al sitio de un impostor.
Si la configuración predefinida de la red se instaló correctamente durante la instalación de OpenBSD, tendrá todo ya instalado. Sólo tiene que configurar el dæmon de name ("named").
Para configurar DNS en OpenBSD, edite y/o cree los ficheros que
controlan el dæmon de name, named.
La ubicación por definición de estos ficheros es el
directorio /var/named y sus subdirectorios, en especial el
fichero /var/named/named.boot que es el fichero de
inicialización para named. También hay
un par más de pasos para la configuración que se deben
llevar a cabo en /etc.
En este documento configuraremos el dæmon de name en nemo.yewtopia.com como el nombre nombre primario del servidor para el dominio (¡muy pequeño!) yewtopia.com. La dirección de nemo.yewtopia.com es 192.168.1.9. Otras dos máquinas en esa subrred son crater.yewtopia.com en 192.168.1.1 y earhart.yewtopia.com en 192.168.1.2.
; tell what subdir has the lookup database files directory /namedb ; type domain source host/file backup file cache root.cache primary 0.0.127.IN-ADDR.ARPA localhost.rev ; example primary server config: primary yewtopia.com yewtopia primary 1.168.192.IN-ADDR.ARPA yewtopia.rev
Esto indica al proceso de inicialización en qué subdirectorio y bajo qué nombres encontrará los ficheros de configuración de yewtopia.com.
; Reverse lookup for localhost interface
@ IN SOA nemo.yewtopia.com.
your_id.nemo.yewtopia.com. (
14 ; Serial
3600 ; Refresh
900 ; Retry
3600000 ; Expire
3600 ) ; Minimum
IN NS nemo.yewtopia.com.
1 IN PTR localhost.yewtopia.com.
; yewtopia.com domain database
yewtopia.com. IN SOA nemo.yewtopia.com.
your_id.nemo.yewtopia.com. (
14 ; Serial
3600 ; Refresh
900 ; Retry
3600000 ; Expire
3600 ) ; Minimum
IN NS nemo.yewtopia.com.
; Addresses
localhost.yewtopia.com. IN A 127.0.0.1
crater.yewtopia.com. IN A 192.168.1.1
earhart.yewtopia.com. IN A 192.168.1.2
nemo.yewtopia.com. IN A 192.168.1.9
; yewtopia domain reverse lookup database
1.168.192.in-addr.arpa. IN SOA nemo.yewtopia.com.
your_id.nemo.yewtopia.com. (
14 ; Serial
3600 ; Refresh
900 ; Retry
3600000 ; Expire
3600 ) ; Minimum
1.168.192.in-addr.arpa. IN NS nemo.yewtopia.com.
; Addresses
1.1.168.192.in-addr.arpa. IN PTR crater.yewtopia.com.
2.1.168.192.in-addr.arpa. IN PTR earhart.yewtopia.com.
9.1.168.192.in-addr.arpa. IN PTR nemo.yewtopia.com.
Asegúrese de que /etc/resolv.conf ahora señale al dominio de la máquina local (en vez de, por ejemplo, el nombre del servidor de su ISP), de modo que la resolución del nombre en requerimientos sea enviada al named que haya configurado.
domain yewtopia.com lookup file bind
Si anteriormente hubiera añadido las direcciones de varias máquinas al fichero /etc/hosts, puede que le interese acortar su fichero /etc/hosts al estado en que se encontraba por definicón
# Host addresses 127.0.0.1 localhost localhost.localdomain 192.168.1.9 nemo nemo.yewtopia.com
de modo que named no sea circunvalado en favor de direcciones (probablemente caducadas) en el fichero /etc/hosts. ¡Asegúrese de que tiene al menos la entrada predefinida de localhost, o su red no iniciará correctamente! Note también que nemo debe aparecer en su propio fichero hosts, o de lo contrario verá un mensaje de error (no dañino) durante el arranque cuando /etc/netstart invoque route(8) para añadir nemo (cuyo nombre aparece en /etc/myname).
$ dig @nemo.yewtopia yewtopia any any
; <<>> DiG 2.2 <<>> @nemo.yewtopia yewtopia any any
; (1 server found)
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59904
;; flags: qr rd ra; Ques: 1, Ans: 2, Auth: 0, Addit: 1
;; QUESTIONS:
;; yewtopia, type = ANY, class = ANY
;; ANSWERS:
yewtopia. 3600 SOA nemo.yewtopia.
your_id.nemo.yewtopia. (
14 ; serial
3600 ; refresh (1 hour)
900 ; retry (15 mins)
3600000 ; expire (41 days 16 hours)
3600 ) ; minimum (1 hour)
yewtopia. 3600 NS nemo.yewtopia.
;; ADDITIONAL RECORDS:
nemo.yewtopia. 3600 A 192.168.1.9
;; Total query time: 4 msec
;; FROM: nemo to SERVER: nemo.yewtopia. 192.168.1.9
;; WHEN: Tue May 2 23:47:19 2000
;; MSG SIZE sent: 25 rcvd: 102
El dæmon de name named se lanza durante el inicio del sistema desde /etc/rc si la línea instalada por definición en /etc/rc.conf,
named_flags=NO # para uso normal: ""
se cambia a
named_flags="" # para uso normal: ""
Examine también estas líneas en /etc/rc.conf:
named_user=named # named no debería ejecutarse como root a menos que fuera necesario named_chroot=/var/named # Dónde chroot named si no está vacío
Estos valores predefinidos serán válidos para casi todas las configuraciones.
Para iniciar named de forma manual, use la orden ndc(8). Por ejemplo:
# ndc start
o
# ndc restart
El mejor modo de parar el dæmon de name es usando la
orden
ndc(8).
Por ejemplo:
# ndc stop
Si no funcionara, encuentre el id del proceso de named y use la orden kill(1) para finalizar el proceso. El PID para named mientras esté funcionando se encontrará como la primera línea del fichero /var/named/named.pid.
# cat /var/named/named.pid 4608 named -t /var/named -u named # kill -KILL 4608
Para hacer que un proceso en funcionamiento del dæmon de name se reinicie recargando su configuración después de haberle hecho cambios, envíe una señal hangup:
# kill -HUP 4608
o use la orden ndc(8). Por ejemplo:
# ndc restart
ejemplo:
garden:/home/jeremy$ host -l openssh.com openssh.com. NS zeus.theos.com. openssh.com. NS cvs.openbsd.org. openssh.com. NS gandalf.sigmasoft.com. openssh.com. NS cs.colorado.edu. openssh.com. NS ns.appli.se. openssh.com. A 199.185.137.4 cvs.openssh.com. A 199.185.137.4 localhost.openssh.com. A 127.0.0.1
Esta información es útil para depurar DNS, pero en
algunos casos puede que no le interese que esta información se
haga pública. Si está usando in-addr(rfc2317) sin clase
para inverso, ¡ 'host -' podría informar sobre todos los
dominios hospedados en su sistema! Esto se puede solucionar
fácilmente con la cláusula 'allow-transfer' en su fichero
zone.
Si usa Bind8 necesitará especificar los huéspedes a los
que quiere permitir la transferencia de zonas en su(s) fichero(s)
individual zone:
zone "foo.com" in {
type master;
file "directory/zonefile";
allow-transfer {
127.0.0.1;
10.0.0.6;
10.0.255.12;
};
};
También puede bloquear las transferencias para todos los
dominios editando /var/named.conf y añadiéndo el
parámetro 'allow-transfer' a la sección 'options' del
fichero de configuración:
options {
allow-transfer { 127.0.0.1; };
};
El método para Bind8 también funciona para Bind9.xfrnets 209.142.221.5 12.7.96.7 ; type domain source host/file backup file cache . root.cache primary 0.0.127.IN-ADDR.ARPA localhost.revBind 4 permite transferencias desde clases enteras, por lo que no es tan exacto. Generalmente, los únicos huéspedes que necesitan llevar a cabo transferencias son los esclavos y huéspedes de DNS desde los que quiera depurar (127.0.0.1 es normalmente un buen huésped desde donde permitir transferencias). El bloqueo de requerimientos AXFR añade un nivel adicional de privacidad, pero puede entorpecer el útil depurado de DNS (gracias a Nicholas Tang por este consejo).
Hay muchas cosas de las que no hemos hablado, como por ejemplo, cómo configurar DNS para que los requerimientos para dominios de intranet que no sean visibles desde la raíz de la jerarquía del dominio dependan de servidores dentro de su empresa. Lea los documentos que le recomendamos para más información sobre DNS.
NOTA: Esta información no es válida para TODOS los proveedores de conexiones ADSL, pero mucha de la información que encontrará aquí se puede usar como base. Esta información sólo se ha comprobado con Inode, un proveedor de ADSL en Austria.
Antes que nada debe instalar pptp. Existe un porte de pptp en el árbol de portes de OpenBSD que fue añadido A PARTIR de la versión 2.8 de OpenBSD, y que se instala y funciona bien desde el mismo árbol. Lo puede encontrar en /ports/net/pptp. Para más información sobre el árbol de portes de OpenBSD, lea la sección 8.6 de las preguntas frecuentes.
Debido a un conflicto entre el soporte integrado en el núcleo de gre(4) y pptp, tendrá que recompilar el núcleo del sistema, eliminando el soporte de gre(4).
Index: sys/conf/GENERIC =================================================================== RCS file: /cvs/src/sys/conf/GENERIC,v retrieving revision 1.66 diff -u -r1.66 GENERIC --- sys/conf/GENERIC 2000/10/13 04:21:14 1.66 +++ sys/conf/GENERIC 2000/12/26 19:55:31 @@ -97,6 +97,6 @@ pseudo-device ksyms 1 # kernel symbols device pseudo-device bridge 2 # network bridging support #pseudo-device vlan 2 # IEEE 802.1Q VLAN -pseudo-device gre 1 # GRE encapsulation interface +#pseudo-device gre 1 # GRE encapsulation interface option BOOT_CONFIG # add support for boot -c
Para recompilar el núcleo, obtenga antes la distribución 2.8-stable de OpenBSD mediante cvs (lea la página de OpenBSD Stable para más información), aplicar el parche anterior al fichero de configuración del núcleo, GENERIC, y recompilar el núcleo tal y como se describe en la sección 5.3 de las preguntas frecuentes.
Una vez que ya tenga instalado el paquete pptp y el nuevo núcleo, deberá editar unos cuantos ficheros para configurar su conexión. Este paquete utiliza el programa de ppp(8) nativo de OpenBSD; si está familiarizado con ppp(8), gran parte de la configuración es idéntica. Lea también la sección 6.5 de este documento.
Para el fichero /etc/ppp/options, una configuración como la siguiente será probablemente todo lo que necesite:
# cat /etc/ppp/options name "LOGINNAME" noauth noipdefault defaultroute debug
Debe substituir LOGINNAME con su identificador de usuario.
Para el fichero /etc/ppp/pap-secrets necesitará una línea como ésta:
# cat /etc/ppp/pap-secrets LOGINNAME 10.0.0.138 PASSWORD
En donde LOGINNAME es su identificador de usuario y PASSWORD su contraseña. 10.0.0.138 es la dirección IP asignada a su modem en caso de que use ADSL, etc. Asegúrese de que este fichero sea de «sólo lectura» para el usuario "root" (modo 600).
En el ejemplo anterior, el modem venía con una interfaz 10.0.0.38 preconfigurada. Pero ahora necesitaremos asignar una dirección a NUESTRA interfaz. Lo mejor es escoger una dirección IP cercana a la asignada para el MODEM, o usar la dirección IP estática que nos hayan asignado. Puede leer más sobre cómo configurar interfaces en la sección 6.1 de este documento.
Una vez que haya configurado su interfaz, debería poder establecer una conexión pptp con la orden:
# /usr/local/sbin/pptp 10.0.0.138 &
Como ya hemos dicho, usará el ppp(8) nativo de OpenBSD, e iniciará dos procesos; en consecuencia, podrá matar pptp matando estos dos procesos:
# kill -9 [pid de pppd] % kill -9 [pid de pptp]Es recomendable abrir /var/log/messages en una ventana de terminal aparte, para poder reconoce cualquier posible problema.
# tail -f /var/log/message
También le sugerimos que ponga la orden de inicio en /etc/rc.local para que conecte de forma automática cuando reinicie el sistema.
[Volver al índice principal] [Sección 5.0 - Configuración del núcleo y del disco] [Sección 7.0 - Controles del teclado]