Menú
Está libre
registro
hogar  /  SOBRE/ Cambiar la puerta de enlace predeterminada freebsd. Configuración de un enrutador FreeBSD

Cambie la puerta de enlace predeterminada freebsd. Configuración de un enrutador FreeBSD

Introducción == Brevemente, me gustaría esbozar un plan que se debe seguir para que el curso en Internet para la oficina sea correcto y nadie se desvíe. Noto de inmediato que una puerta de enlace en Unix no es un programa, sino una docena de programas, cada uno de los cuales realiza su propia acción y tiene su propia configuración. Usamos: * FreeBSD 7 * natd * nombrado, enrutado * ipfw * squid * squidGuard * apache * dhcpd Mi servidor de prueba ya esta dentro red local entonces yo creo que red externa Lo tengo 192.168.0.0/24, y el interno es 172.16.0.0/16. Después de todo, los números no importan, lo principal es el significado. Instalé FreeBSD en una configuración mínima y mi rc.conf solo contiene: hostname = "vm = freepro.local" ifconfig_em0 = "DHCP" linux_enable = "YES" sshd_enable = "YES"== Configurando NAT == Mi interfaz externa - em0 - por defecto recibe su dirección IP a través de DHCP desde un enrutador regular con la dirección 192.168.1.1. Obviamente, el mismo enrutador actúa como servidor DNS. En el primer paso, hago NAT (¡siempre en la interfaz externa!) Y modifico el archivo /etc/rc.conf de esta manera: hostname = "vm = freepro.local" defaultrouter = "192.168.1.1" ifconfig_em0 = "inet 192.168.1.10 máscara de red 255.255.255.0" linux_enable = "YES" sshd_enable = "YES" # Puerta de enlace de Internet ifconfig_em1 = "inet 172.16.055.1 máscara de red 255.255.1 .0.0 "gateway_enable =" YES "natd_enable =" YES "natd_interface =" em0 "#natd_flags =" - f /etc/redirect.conf "firewall_enable =" YES "firewall_type =" open "#firewall_script =" / etc / firewall. conf "router_enable =" YES "router =" / sbin / routed "router_flags =" - q " Arreglé la dirección externa y configuré la interna. Ahora arreglemos el DNS en el archivo /etc/resolv.conf: nameserver 192.168.1.1 ¡Eso es! Iniciamos el servicio: # /etc/rc.d/ipfw start # /etc/rc.d/natd start # /etc/rc.d/routed start # /etc/rc.d/named start¡E Internet funciona! Por supuesto, prescribimos al cliente a mano: IP: 172.16.0.2 MÁSCARA: 255.255.0.0 PUERTA: 172.16.0.1 DNS1: 192.168.1.1 Por supuesto, esta es una puerta de enlace muy mala. En primer lugar, no está protegido en absoluto, y en segundo lugar, no se almacena en caché en absoluto, y en tercer lugar, redirige todas las solicitudes de DNS "hacia arriba", y no hay forma de obtener estadísticas o administrar nada. Pero, por otro lado, esta es una puerta de enlace muy ligera y rápida y, a partir de configuraciones adicionales, su rendimiento solo aumentará, no disminuirá. Por cierto, tenga en cuenta que dos líneas ya están comentadas en el nuevo rc.conf. El primer comentario me ayudará en el futuro a "reenviar" algunos puertos fuera, dentro de la red. Aquellos. por ejemplo, si quiero acceder a través de ssh a la computadora cliente 172.16.0.2, tendré que crear un archivo como este: # ARCHIVO /etc/redirect.conf redirect_port tcp 172.16.0.2:22 2222 Esto significa que cuando me conecte al servidor externo en el puerto 2222, llegaré a la máquina en la red local justo en el puerto 22 (ssh). El segundo comentario es mi configuración de firewall personal, mejorada y probada. == Configurando ipfw == Mi configuración para ipfw en este escenario se parece a esto: #! / bin / sh # Configuración de IPFW para un servidor NAT simple /etc/firewall.conf cmd = "/ sbin / ipfw -q" IfOut = "em0" IpOut = "192.168.1.10" NetOut = "192.168.1.0/24 "IfIn =" em1 "IpIn =" 172.16.0.1 "NetIn =" 172.16.0.0/16 "########################### # ##################### # Clear ################################################################################################################################################################################################################################################################### # ####################### $ (cmd) -f flush $ (cmd) table 0 flush $ (cmd) table 1 flush ##### # ################################################ # # Lista blanca / Lista negra # ######################################### #### $ (cmd) tabla 0 agregar 172.16.0.12 $ (cmd) tabla 1 agregar 172.16.0.13 ######################### #### ########################################################################################################################################################################################### #### ##################### $ (cmd) agregar permitir ip de cualquiera a cualquiera a través de lo0 ############# #### ################################ # Bloquear mundo a privado ######## ### ##################################### $ (cmd) agregar denegar ip de cualquiera a 127.0 .0.0 / 8 $ (cmd) agregar deny ip desde 127.0.0.0/8 a cualquier # $ (cmd) agregar deny ip desde 172.16.0.0/16 a cualquiera a través de $ (IfOut) # $ (cmd) agregar d eny ip de 192.168.1.0/24 a cualquiera a través de $ (IfOut) $ (cmd) agregar deny ip de any a 10.0.0.0/8 a través de $ (IfOut) # $ (cmd) agregar deny ip de any a 172.16.0.0/ 12 a través de $ (IfOut) # $ (cmd) agregar deny ip de any a 192.168.0.0/16 a través de $ (IfOut) $ (cmd) agregar deny ip de any a 0.0.0.0/8 a través de $ (IfOut) $ (cmd ) agregar deny ip de any a 169.254.0.0/16 a través de $ (IfOut) $ (cmd) agregar deny ip de any a 192.0.2.0/24 a través de $ (IfOut) $ (cmd) agregar deny ip de any a 224.0.0.0 / 4 a través de $ (IfOut) $ (cmd) agregue deny ip de cualquiera a 240.0.0.0/4 a través de $ (IfOut) ####################### ##################################################################################################################################################################################################################################################################################################. ######### ############################# $ (cmd) agregar deny icmp de cualquiera a cualquier frag $ (cmd) agregue deny log icmp de any a 255.255.255.255 en a través de $ (IfOut) $ (cmd) agregue deny log icmp de any a 255.255.255.255 out a través de $ (IfOut) ######### ########### ############################# # NAT ###### ########### ############################### $ (cmd) agregar desvío 8668 ip desde $ (NetIn) a cualquier vía $ (IfOut) $ (cmd) agregar desviar 8668 ip de cualquiera a $ (IpOut) a través de $ (IfOut) # $ (cmd) agregar desvío 8668 ip de cualquiera a cualquiera a través de $ (IfOut) ####################### ########################### # Bloquear privado al mundo ################## # ############################## $ (cmd) agregar deny ip desde 10.0.0.0/8 a cualquier vía $ ( IfOut) # $ (cmd) agregar deny ip desde 172.16.0.0/12 a cualquier vía $ (IfOut) # $ (cmd) agregar deny ip desde 192.168.0.0/16 a cualquiera a través de $ (IfOut) $ (cmd) agregar deny ip desde 0.0.0.0/8 a cualquier vía $ (IfOut) $ (cmd) agregue deny ip desde 169.254.0.0/16 a cualquiera a través de $ (IfOut) $ (cmd) agregue deny ip desde 192. 0.2.0 / 24 a cualquiera a través de $ (IfOut) $ (cmd) agregue deny ip desde 224.0.0.0/4 a cualquiera a través de $ (IfOut) $ (cmd) agregue deny ip desde 240.0.0.0/4 a cualquiera a través de $ ( IfOut) ######################################################################################################################################### ## # Lista blanca ######################################################################################################################################################################################################################################################################################## ### # $ (cmd) agregar permitir todo desde "tabla (0)" a cualquier $ (cmd) agregar permitir todo desde cualquiera a "tabla (0)" ############## ### #######################################################################################################################################################################################################################################################################################################. ################################# $ (cmd) agregar denegar todo de "tabla (1)" a cualquier ########################################### #### # Mantener establecido ############################################## # $ (cmd) agregar permitir tcp de cualquiera a mí establecido ############################ ####### ############# # Principal ########################## ####### ############### $ (cmd) agregar permitir ip de cualquiera a cualquier frag $ (cmd) agregar permitir icmp de cualquiera a $ (IpOut) icmptypes 0, 8.11 # dns $ (cmd ) agregar permitir tcp de cualquiera a $ (IpOut) dst-port 53 setup $ (cmd) agregar permitir udp de cualquiera a $ (IpOut) dst-puerto 53 $ (cmd) agregar allow udp de $ (IpOut) 53 a cualquier $ (cmd) agregar allow udp de $ (IpOut) a cualquier dst-port 53 keep-state # dns-client $ (cmd) agregar allow tcp de any a $ (NetIn) dst-port 53 setup $ (cmd) agregar permitir udp desde cualquier a $ (NetIn) dst-port 53 $ (cmd) agregar permitir udp desde $ (NetIn) 53 a cualquier $ (cmd) agregar permitir udp desde $ (NetIn) a cualquier puerto dst 53 keep-state # time $ (cmd) agregue allow udp desde $ (IpOut) a cualquier dst-port 123 keep-state # time-client $ (cmd) agregue allow udp desde $ (NetIn ) a cualquier puerto dst 123 keep-state # ssh-in $ (cmd) agregue allow tcp de cualquiera a $ (IpOut) 22 $ (cmd) agregue allow tcp de $ (IpOut) 22 a cualquier # ssh-out $ ( cmd) agregue allow tcp desde $ (IpOut) a cualquier 22 $ (cmd) agregue allow tcp desde cualquier 22 a $ (IpOut) # http $ (cmd) agregue allow tcp desde $ (IpOut) a cualquier puerto dst 80 # http -cliente $ (cmd) agregar permitir tcp desde $ (NetIn) a cualquier puerto dst 80 $ (cmd) agregar permitir tcp desde cualquier 80 a $ (NetIn) # smtp $ (cmd) agregar permitir tcp desde cualquiera a $ (IpOut ) dst-port 25 setup # forward 8080 to 81 $ (cmd) add allow tcp from any to $ (IpOut ) dst-port 8080 $ (cmd) agregar permitir tcp desde $ (IpOut) 8080 a cualquier $ (cmd) agregar permitir tcp desde cualquiera a $ (NetIn) dst-port 81 $ (cmd) agregar permitir tcp desde $ (NetIn) 81 a cualquier # salida $ (cmd) agregue deny log tcp de any a any in a través de $ (IfOut) setup # $ (cmd) agregue allow tcp de any a cualquier configuración ############# ##################################### # Red local ########## ###################################### $ (cmd) agregar permitir todo desde cualquier a cualquiera a través de $ (IfIn) ############################################################################################################################################### # ##### # Denegar todo ################################################################################################################################# ####### $ (cmd) agregar negar todo de cualquiera a cualquiera Comenté específicamente algunas de las líneas que clavan paquetes de las redes locales 192, 172 en la interfaz externa, ya que mi interfaz externa es la local. En realidad, estas líneas son necesarias. Vayamos más lejos. == Configuración de squid == Ahora necesito squid, un servidor proxy de almacenamiento en caché capaz de distribuir Internet de manera competente a todos los usuarios de acuerdo con las reglas establecidas por el administrador del sistema. pkg_add -r squid Nota: por supuesto, es más correcto construir software a partir de puertos nuevos y actualizados, pero ahorramos tiempo, así que lo instalamos en paquetes. Actualizaremos en algún momento más tarde con portupgrade. Para el calamar, hacemos la configuración más simple: editar el archivo /usr/local/etc/squid/squid.conf # Mínimo SQUID config acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl to_localhost dst 127.0.0.0/8 acl localnet src 172.16.0.0/255.255.0.0 acl SSL_ports puerto 443 acl CONNECT método CONNECT http_access allow manager localhost http_access allow localnet http_access deny manager http_access deny! Safe_ports http_access deny CONNECT! SSL_ports http_access deny all icp_access allow all http_port 3128 transparente jerarquía_stoplist cgi-bin? acl QUERY urlpath_regex cgi-bin \? cache deny QUERY cache_dir ufs / usr / local / squid / cache 100 16256 access_log /usr/local/squid/logs/access.log squid cache_log /usr/local/squid/logs/cache.log cache_store_log / usr / local / squid /logs/store.log refresh_pattern ^ ftp: 1440 20% 10080 refresh_pattern ^ gopher: 1440 0% 1440 refresh_pattern. 0 20% 4320 acl apache rep_header Server ^ Apache broken_vary_encoding permite apache cache_effective_user squid cache_effective_group squid nombre_host_visible vm-freepro.local icp_port 0 error_directory / usr / local / etc / squid / errors / English coredump_dir / usr / local Eliminé deliberadamente los comentarios del archivo de configuración, porque no hay muchos, pero sí muchos. No olvides corregir /etc/rc.conf agregando la línea: squid_enable = "YES" Luego, reconstruimos el caché e iniciamos el squid: # squid -z # /usr/local/etc/rc.d/squid start Lo primero que hacemos después instalaciones de calamar- Prohibimos a los usuarios locales acceder a Internet a través del puerto 80. Transferimos el puerto 80 al 3128, es decir, hacemos que todos los usuarios pasen solo por calamar. Aquí hay una pequeña trampa. Esto solo se puede hacer introduciendo el soporte de IPFW en el kernel; de lo contrario, el reenvío no funcionará. Sí, esto significa que ahora tenemos que construir nuestro propio kernel. No es una tarea fácil, pero útil: después de ensamblar su núcleo, la velocidad de su funcionamiento debería aumentar y el volumen debería disminuir notablemente. Primero, use sysinstall para instalar las fuentes del kernel: # sysinstall Vaya a / Configure / Distributions Mark dentro de la sección src [X] base [X] sys Ahora tenemos las fuentes del kernel en la carpeta / usr / src. A continuación, copie la configuración GENÉRICA a "nuestro" MYKERNEL y edite MYKERNEL: # cd / usr / src / sys / i386 / conf # cp MYKERNEL GENÉRICO # mcedit MYKERNEL Al editar la configuración, asegúrese de especificar las siguientes opciones: # Habilitando el firewall en las opciones del kernel IPFIREWALL # Habilitando las opciones del mecanismo de "registro" IPFIREWALL_VERBOSE # Restringiendo logs - opciones de protección contra desbordamiento IPFIREWALL_VERBOSE_LIMIT = 50 # Habilitando las opciones del mecanismo de reenvío de paquetes IPFIREWALL_FORWARD # Habilitando el mecanismo de traducción Direcciones NAT opciones IPDIVERT # Habilitar opciones de limitación de velocidad de canal DUMMYNET Y también elimine todo el "hardware" innecesario, que en realidad no tiene. Ahora estamos construyendo el kernel. Esta operacion puede llevar un poco de tiempo y puede fallar con un error que requiera que instale fuentes adicionales desde sysinstall dependiendo de lo que haya escrito en la configuración. Esperamos que no haya nada superfluo allí. # cd / usr / src # make buildkernel KERNCONF = MYKERNEL # make installkernel KERNCONF = MYKERNEL Ahora necesita reiniciar, pero antes de reiniciar, asegúrese de leer el manual en caso de que el reinicio falle. Me gustaría que esto, por supuesto, no sucediera. Entonces, recargue y edite /etc/firewall.conf nuevamente. #! / bin / sh # Configuración de IPFW para servidor NAT y proxy SQUID cmd = "/ sbin / ipfw -q" IfOut = "em0" IpOut = "192.168.1.10" NetOut = "192.168.1.0/24" IfIn = "em1 "IpIn =" 172.16.0.1 "NetIn =" 172.16.0.0/16 "##################################################################################################################################################################################################### ################# # Limpiar ########################################################################################################################################## ################### $ (cmd) -f flush $ (cmd) table 0 flush $ (cmd) table 1 flush ######### ## ##################################### # Lista blanca / Lista negra #### ### ################################################ # $ (cmd) tabla 0 agregar 172.16.0.2 $ (cmd) tabla 1 agregar 172.16.0.13 ############################ ### ################ # Loopback ############################ ## ################### $ (cmd) agregar permitir ip de cualquiera a cualquiera a través de lo0 ################ ### ############################### # Bloquear mundo a privado ########### #### ################################### $ (cmd) agregar denegar ip de cualquier a 127.0.0.0/ 8 $ (cmd) agregar deny ip desde 127.0.0.0/8 a cualquier # $ (cmd) agregar deny ip desde 172.16.0.0/16 a cualquiera a través de $ (IfOut) # $ (cmd) agregar deny ip desde 19 2.168.1.0/24 a cualquiera a través de $ (IfOut) $ (cmd) agregar deny ip de any a 10.0.0.0/8 a través de $ (IfOut) # $ (cmd) agregar deny ip de any a 172.16.0.0/12 a través de $ (IfOut) # $ (cmd) agregar deny ip de any a 192.168.0.0/16 a través de $ (IfOut) $ (cmd) agregar deny ip de any a 0.0.0.0/8 a través de $ (IfOut) $ (cmd) agregar denegar ip de any a 169.254.0.0/16 a través de $ (IfOut) $ (cmd) agregar deny ip de any a 192.0.2.0/24 a través de $ (IfOut) $ (cmd) agregar deny ip de any a 224.0.0.0/4 a través de $ (IfOut) $ (cmd) agregar deny ip de cualquiera a 240.0.0.0/4 a través de $ (IfOut) ######################### ################################################################################################################################################################################################## ######################### $ (cmd) agregar deny icmp de cualquiera a cualquier frag $ (cmd) agregar deny log icmp de cualquiera a 255.255 .255.255 en a través de $ (IfOut) $ (cmd) agregar deny log icmp desde cualquier a 255.255.255.255 a través de $ (IfOut) ###################### ################################################ ########## ############################ $ (cmd) agregar desvío 8668 ip de $ (NetIn) a cualquiera a través de $ (IfOut) $ (cmd) agregue desviar 8668 ip de cualquier a $ (IpOut) a través de $ ( IfOut) # $ (cmd) agregar desvío 8668 ip de cualquiera a cualquiera a través de $ (IfOut) ############################ ##################### # Bloquear privado al mundo ####################### # ######################## $ (cmd) agregar denegar ip desde 10.0.0.0/8 a cualquiera a través de $ (IfOut) # $ (cmd ) agregue deny ip desde 172.16.0.0/12 a cualquier vía $ (IfOut) # $ (cmd) agregue deny ip desde 192.168.0.0/16 a cualquiera a través de $ (IfOut) $ (cmd) agregue deny ip desde 0.0.0.0/ 8 a cualquiera a través de $ (IfOut) $ (cmd) agregue deny ip desde 169.254.0.0/16 a cualquiera a través de $ (IfOut) $ (cmd) agregue deny ip desde 192. 0.2.0 / 24 a cualquiera a través de $ (IfOut) $ (cmd) agregue deny ip desde 224.0.0.0/4 a cualquiera a través de $ (IfOut) $ (cmd) agregue deny ip desde 240.0.0.0/4 a cualquiera a través de $ ( IfOut) ######################################################################################################################################### ## # Lista blanca ######################################################################################################################################################################################################################################################################################## ### # $ (cmd) agregar permitir todo desde "tabla (0)" a cualquier $ (cmd) agregar permitir todo desde cualquiera a "tabla (0)" ############## ### #######################################################################################################################################################################################################################################################################################################. ################################# $ (cmd) agregar denegar todo de "tabla (1)" a cualquier ########################################### #### # Mantener establecido ############################################## # $ (cmd) agregar permitir tcp de cualquiera a mí establecido ############################ ####### ############# # Principal ########################## ####### ############### $ (cmd) agregar permitir ip de cualquiera a cualquier frag $ (cmd) agregar permitir icmp de cualquiera a $ (IpOut) icmptypes 0, 8.11 # dns $ (cmd ) agregar permitir tcp de cualquiera a $ (IpOut) dst-port 53 setup $ (cmd) agregar permitir udp de cualquiera a $ (IpOut) dst-puerto 53 $ (cmd) agregar allow udp de $ (IpOut) 53 a cualquier $ (cmd) agregar allow udp de $ (IpOut) a cualquier dst-port 53 keep-state # dns-client $ (cmd) agregar allow tcp de any a $ (NetIn) dst-port 53 setup $ (cmd) agregar permitir udp desde cualquier a $ (NetIn) dst-port 53 $ (cmd) agregar permitir udp desde $ (NetIn) 53 a cualquier $ (cmd) agregar permitir udp desde $ (NetIn) a cualquier puerto dst 53 keep-state # time $ (cmd) agregue allow udp desde $ (IpOut) a cualquier dst-port 123 keep-state # time-client $ (cmd) agregue allow udp desde $ (NetIn ) a cualquier puerto dst 123 keep-state # ssh-in $ (cmd) agregue allow tcp de cualquiera a $ (IpOut) 22 $ (cmd) agregue allow tcp de $ (IpOut) 22 a cualquier # ssh-out $ ( cmd) agregue allow tcp desde $ (IpOut) a cualquier 22 $ (cmd) agregue allow tcp desde cualquier 22 a $ (IpOut) # http $ (cmd) agregue allow tcp desde $ (IpOut) a cualquier puerto dst 80 # http -client # $ (cmd) agregar permitir tcp desde $ (NetIn) a cualquier puerto dst 80 # $ (cmd) agregar permitir tcp desde cualquier 80 a $ (NetIn) # calamar $ (cmd) agregar permitir todo desde $ (NetIn) ) a $ (IpIn) 3128 a través de $ (IfIn) $ (cmd) agregue fwd $ (IpIn), 3128 tcp desde $ (NetIn) a cualquier 80 # smtp $ (cmd) agregar permitir tcp de cualquier a $ (IpOut) dst-puerto 25 configuración # out $ (cmd) agregar negar log tcp de cualquiera a cualquiera en a través de $ (IfOut) configuración # $ (cmd) agregar permitir tcp de cualquiera a cualquier configuración ########################################### # #### # Red local ####################################### ## ###### $ (cmd) agregar permitir todo de cualquiera a cualquiera a través de $ (IfIn) #################################################################### ### #################### # Denegar todo ############################################################################################################################################################################################################################################################## ######################### $ (cmd) agregar denegar todo de cualquiera a cualquiera Reiniciamos los servicios y comprobamos - todo funciona, y los clientes, inadvertidos por sí mismos, pasan por el sistema de control. Pospondremos la configuración del control de acceso por ahora, y resolveremos otro tema importante: la obtención de DNS. == Configurando DNS == Ahora nuestros clientes tienen una dirección DNS registrada 192.168.1.1 - externa a la red interna 172.16.0.0/16. Podemos decir que los clientes suben por encima del servidor miles de veces al día en busca de direcciones. Mejoremos el sistema: configuraremos un servidor DNS de almacenamiento en caché que nos permitiría evitar conexiones de extremo a extremo con el exterior, ahorrarnos tráfico y acelerar nuestro trabajo. No olvide antes de eso denegar el acceso al puerto 53 externo para todos los clientes. En el archivo /etc/namedb/named.conf, edite los parámetros de escucha, reenviadores: opciones (directorio "/ etc / namedb"; archivo-pid "/ var / run / named / pid"; archivo de volcado "/var/dump/named_dump.db"; archivo de estadísticas "/var/stats/named.stats "; escuchar (127.0.0.1; 172.16.0.1;); desactivar-zona-vacía" 255.255.255.255.IN-ADDR.ARPA "; desactivar-zona-vacía" 0.0.0.0.0.0.0.0.0.0.0.0 .0 .0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA "; desactivar-zona-vacía" 1.0.0.0.0.0.0.0.0.0.0.0.0. 0.0.0.0.0. 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA "; reenviadores (192.168.1.1;); // dirección de origen de la consulta * puerto 53;); En el archivo /etc/resolv.conf, primero cree el DNS local: servidor de nombres 127.0.0.1 servidor de nombres 192.168.1.1 En /etc/firewall.conf, prohíbe a los clientes usar DNS externo (edite las secciones con el comentario dns-client) # dns-client # Deshabilitar DNS externo # $ (cmd) agregar permitir tcp desde cualquier a $ (NetIn) dst-port 53 configuración # $ (cmd) agregar permitir udp desde cualquiera a $ (NetIn) dst-puerto 53 # $ ( cmd) agregar allow udp de $ (NetIn) 53 a cualquier # $ (cmd) agregar allow udp de $ (NetIn) a cualquier dst-port 53 keep-state # Permitir solo DNS local $ (cmd) agregar permitir tcp de $ ( NetIn) a $ (IpIn) dst-port 53 setup $ (cmd) agregar permitir udp desde $ (NetIn) a $ (IpIn) dst-port 53 Reiniciar: # /etc/rc.d/ named restart # /etc/rc.d/ipfw restart Ahora volvamos al tema del control de acceso a Internet. Hay dos soluciones a la vez. Primero, configure las políticas de acl en squid. En segundo lugar, instale y configure squidGuard, una aplicación de control de acceso dedicada. Empecemos por orden. == Configurar squid acl == acl son las reglas en la configuración de squid que son bastante efectivas para limitar flujo de información pasando por un servidor proxy. En resumen, con acl en poco tiempo, puede matar cualquier izquierdismo que interfiera con el trabajo. Todas las configuraciones de acl por defecto están escritas en el archivo squid.conf, pero también se pueden mover a archivos externos... Como ejemplo, daré una parte de la configuración: # Prohibimos todos los saqueadores de archivos acl comparte dstdomain .rapidshare.com .webfile.ru http_access denegar recursos compartidos # Prohibimos que todos soliciten sitios por IP acl ip_urls url_regex http: // + \. + \. + \. + [: /] Http_access deny ip_urls # Restricciones de grupo src group_strict (ip 172.16.0.20-172.16.0.25) src group_allow (ip 172.16.0.26-172.16.0.30) acl (group_allow (pase cualquiera) group_strict (pase local ninguno)) Resulta genial. Pero es obvio que en un buen proxy debería haber muchas reglas de este tipo, una regla para cada "agujero". Descubrir "agujeros" y prescribirlos uno por uno es tedioso, pero, como siempre, existe una solución lista para usar, squidGuard, una aplicación de filtro con un gran conjunto de reglas que, en principio, se puede reponer incluso de acuerdo con la programación cron. Estudiamos el tema. == Configurando squidGuard == Ahora intentemos instalar y configurar squidGuard. Esto no es difícil de hacer, pero debes tener cuidado. Entonces: # pkg_add -r squidGuard # cp /usr/local/etc/squid/squidGuard.conf.sample /usr/local/etc/squid/squidGuard.conf El archivo squidGuard.conf contiene todas las configuraciones, algunas de las cuales deberán corregirse de inmediato, a saber: # Archivo SquidGuard.conf ... fuente de muestra-clientes (ip 172.16.0.0/16) ... Atemos squidGuard a squid - agreguemos 3 líneas al archivo squid.conf: redirector_bypass en redirect_program / usr / local / bin / squidGuard -c /usr/local/etc/squid/squidGuard.conf redirect_children 10 squidGuard almacena su base de datos de configuración en / var / db / squidGuard. Antes del primer lanzamiento o después de realizar cambios, debe reconstruirse: # rehash # squidGuard -C todo # chown -R squid: squid / var / db / squidGuard # /usr/local/etc/rc.d/squid restart Todo está bien, pero cuando un cliente intenta ingresar a un sitio prohibido, por ejemplo, http://3warez.com/, vemos frenos. Y me gustaría recibir algún mensaje inteligible. Para esto necesitamos apache. == Configuración de apache == Como ya se mencionó, necesitamos que apache muestre información sobre las direcciones bloqueadas y los motivos del bloqueo. Hacemos como de costumbre: # pkg_add -r apache22 # echo "apache22_enable =" SÍ "" >> /etc/rc.conf La configuración de Apache se encuentra en el archivo /usr/local/etc/apache22/httpd.conf. Antes de comenzar, debe verificar las directivas DocumentRoot y ServerName; omitiré los detalles, ya que en Internet hay muchos artículos sobre la configuración de este servidor. Hecho en 1 seg. Lanzamiento: # echo "Acceso denegado"> /usr/local/www/apache22/data/index.html # /usr/local/etc/rc.d/apache22 start Arreglemos un poco la configuración de squidGuard.conf: # Al final del archivo acl (..... predeterminado (redireccionar http://172.16.0.1/index.html))== Configurando dhcpd == Y ahora nos estamos acercando a terminar. La red está configurada y funcionando de maravilla. Todo está bajo control, todo está estrictamente limitado. Pero después del látigo, es hora de ofrecer a los clientes una zanahoria también, en forma de distribución de direcciones DHCP automáticas. Un buen administrador, por supuesto, también hace trampas aquí: distribuirá direcciones solo a través de MAC, pero solo le pondremos algunas pasas. # pkg_add -r isc-dhcp3-server # cp /usr/local/etc/dhcpd.conf.sample /usr/local/etc/dhcpd.conf Agregue las líneas al archivo /etc/rc.conf: dhcpd_enable = "SÍ" dhcpd_flags = "- q" dhcpd_ifaces = "em1" También necesita corregir la configuración más importante /usr/local/etc/dhcpd.conf: opción nombre-dominio "ejemplo.com"; opción servidores de nombres de dominio 172.16.0.1; opción máscara de subred 255.255.255.0; tiempo de arrendamiento predeterminado 3600; tiempo máximo de arrendamiento 86400; ddns-update-style ninguno; subred 172.16.0.0 máscara de red 255.255.0.0 (rango 192.16.0.11 172.16.0.15; enrutadores opcionales 172.16.0.1;) Encendemos la electricidad: # /usr/local/etc/rc.d/isc-dhcpd inicio Eso, quizás, es todo, lo más importante. Este artículo no pretende ser completo y significativo, pero describe brevemente los pasos que deben seguirse para que el servidor funcione. Además, solo afinando y afinando nuevamente. No olvide también que esta no es la única forma de configurar el servidor: en Unix siempre hay una alternativa y puede usar aplicaciones completamente diferentes.

ALEXEY BEREZHNOY

Configuración de una puerta de enlace de Internet basada en FreeBSD

El uso de FreeBSD en pequeños enrutadores para comunicarse con el mundo exterior hace tiempo que dejó de ser algo excepcional. Este sistema operativo fácil de usar, de pocos recursos y mantenimiento es casi ideal para este tipo de tareas.

Nosotros necesitamos

  • Hardware... Para llevar la red interna a Internet, una computadora Pentium III a 600 MHz, 256 MB de RAM, 10 GB de disco duro, 2 tarjetas de red es suficiente. La configuración se toma con un margen, para una red completa de una oficina pequeña (alrededor de 50 usuarios) Pentium II 400 MHz con 128 MB de RAM sería suficiente. Pero en el futuro, es posible que desee instalar en la misma puerta de enlace, por ejemplo, un servidor proxy, es mejor elegir una configuración de nivel superior.
  • Sistema operativo: FreeBSD 5.5 o 6.1.
  • Adicionalmente: porque este computador sujeto a uso continuo, te recomiendo que lo entregues dentro del estuche ventiladores adicionales para proporcionar un tiro forzado / aire de escape para enfriar. Casi todas las cajas ATX modernas le permiten hacer esto.

Dado que todos los módulos necesarios están incluidos en el sistema operativo, no necesitamos nada más.

Configurar interfaces de red

Es necesario aclarar los nombres de las interfaces de las tarjetas de red, mediante las cuales el sistema operativo las reconoce.

# ifconfig

Algo como esto debería aparecer:

rl0: banderas = 8843 mtu 1500

Opciones = 8

Éter 00: xx: xx: xx: xx: xx

Estado: Activo

xl0: banderas = 8843 mtu 1500

Opciones = 9

Éter 00: zz: zz: zz: zz: zz

Medios: autoselección de Ethernet (100baseTX)

Estado: Activo

plip0: banderas = 108810 mtu 1500

lo0: banderas = 8049 mtu 16384

Inet6 :: 1 prefijolen 128

La computadora tiene dos tarjetas de red con los nombres de interfaz rl0 y xl0.

En nuestro caso, la interfaz rl0 "buscará" en mundo externo y xl0 - a la red interna. dirección IP interfaz interna: 192.168.9.2, máscara de subred 255.255.255.0, nombre de interfaz xl0; La dirección IP de la interfaz externa es 83.xxx.xxx.xxx, la máscara de subred es 255.255.255.224 y el nombre de la interfaz es rl0.

Puede averiguar qué tarjetas de red de qué fabricantes corresponden a determinadas direcciones de red mirando el archivo GENERIC en el directorio / usr / src / sys / i386 / conf:

# más / usr / src / sys / i386 / conf / GENERIC

En él encontramos las líneas correspondientes:

dispositivo rl # RealTek 8129/8139

dispositivo xl # 3Com 3c90x ("Boomerang" "," Ciclón "")

Por tanto, la interfaz rl0 corresponde a la tarjeta de red RealTek 8129/8139 y sus análogos. La interfaz de red xl0 coincide con la tarjeta de red 3Com.

Por separado, vale la pena mencionar el archivo GENERIC. Este es el archivo de configuración del kernel que se instala por defecto cuando se instala FreeBSD. Está organizado para que el sistema admita la mayoría de los dispositivos más utilizados, incluidas las tarjetas de red especificadas. Muy a menudo, las modificaciones adicionales del kernel se basan en una copia modificada de este archivo. En este caso, haremos precisamente eso:

  • Puerta de enlace del proveedor: por defecto 83.xxx.xxx.1.
  • La red contiene computadoras de usuario: 192.168.9.31, 192.168.9.32.
  • Nuestro dominio es (condicionalmente) nuestrodominio.ru.
  • El nombre del host (computadora) es ourhost.ourdomain.ru.

Configuramos tarjetas de red. Puede usar la utilidad sysinstall (/ stand / sysinstall para FreeBSD 5.5 y / usr / sbin / sysinstall para FreeBSD 6.1) Pero como conocemos todos los parámetros necesarios, para simplificar el proceso y ahorrar tiempo, configuraremos los parámetros editando el archivos de configuración correspondientes.

La configuración de la interfaz de red de FreeBSD se almacena en el archivo /etc/rc.conf. Lo abrimos para editar:

# vi /etc/rc.conf

Y añadir siguientes líneas:

# Establecer la interfaz interna

ifconfig_xl0 = "inet 192.168.9.2 máscara de red 255.255.255.0"

# Establecer la interfaz externa

ifconfig_rl0 = "inet 83.xxx.xxx.xxx máscara de red 255.255.255.224"

# Establecer la puerta de enlace predeterminada del proveedor

defaultrouter = "83.xxx.xxx.1"

# Nombre de host

hostname = "nuestrohost.ourdomain.ru"

# Indicamos que el servidor actuará como enrutador

gateway_enable = "SÍ"

Luego reiniciamos la computadora:

# reiniciar

V este momento no fue necesario reiniciar la computadora. Pero queremos asegurarnos de que nuestras interfaces estén instaladas correctamente y funcionando, por lo que aún recomiendo reiniciar.

Después de la carga, comprobamos:

# ifconfig

La salida del comando ifconfig:

rl0: banderas = 8843 mtu 1500

Opciones = 8

Inet6 fe80 :: 215: 58ff: fe3e: 8fb1% rl0 prefixlen 64 scopeid 0x1

Inet 83.xxx.xxx.xxx máscara de red 0xffffffe0 difusión 83.xxx.xxx.yyy

Éter 00: xx: xx: xx: xx: xx

Medios: autoselección de Ethernet (100baseTX)

Estado: Activo

xl0: banderas = 8843 mtu 1500

Opciones = 9

Inet6 fe80 :: 20a: 5eff: fe62: ade2% xl0 prefixlen 64 scopeid 0x2

Inet 192.168.9.2 máscara de red 0xffffff00 difusión 192.168.9.255

Éter 00: zz: zz: zz: zz: zz

Medios: autoselección de Ethernet (100baseTX)

Estado: Activo

plip0: banderas = 108810 mtu 1500

lo0: banderas = 8049 mtu 16384

Inet6 :: 1 prefijolen 128

Inet6 fe80 :: 1% lo0 prefijolen 64 scopeid 0x4

Inet 127.0.0.1 máscara de red 0xff000000

El archivo rc.conf, en mi opinión, puede denominarse archivo de configuración de claves. Una gran cantidad de parámetros utilizados por el sistema se configuran en forma de variables correspondientes en este archivo. Incluyendo la configuración de las interfaces de red, firewall y NAT que usamos.

Configurar la puerta de enlace

Usaremos el firewall IPFW nativo de FreeBSD. Para hacer esto, necesitamos realizar algunos cambios en el núcleo del sistema. Si usted tiene preguntas adicionales sobre la recompilación del kernel, le aconsejo que lea material adicional: http://freebsd.org.ru/how-to/kernelconfig.html.

Tenga en cuenta que debe utilizar las fuentes del kernel para la arquitectura correspondiente. Dado que la arquitectura de nuestra computadora se basa en la plataforma i386, el kernel también debe compilarse de acuerdo con la plataforma. Para los propietarios de computadoras en otras plataformas, recomiendo consultar la literatura relevante.

Las fuentes del kernel están ubicadas por defecto en el directorio / usr / src / sys / i386 / conf. En consecuencia, vamos a este directorio:

# cd / usr / src / sys / i386 / conf

Normalmente, se modifica el archivo GENERIC que contiene las opciones predeterminadas del kernel. Para hacer esto, haga una copia de este archivo:

# cp GENERIC ourkernel

Abrir para editar archivo nuevo nuestro núcleo:

# vi ourkernel

y agregue las siguientes opciones:

Opciones IPFIREWALL #firewall

Opciones IPFIREWALL_VERBOSE?

# habilitar el registro en syslogd (8)

Opciones IPFIREWALL_FORWARD?

#enable el soporte de proxy transparente

Opciones IPFIREWALL_VERBOSE_LIMIT = 100 #limit verbosity

Opciones IPFIREWALL_DEFAULT_TO_ACCEPT #permitir todo por defecto

Opciones DUMMYNET

Opciones IPDIVERT #divert sockets

Después de realizar los cambios, puede comenzar a recompilar el kernel.

Ejecutamos los comandos:

# config ourkernel

# cd / usr / src / sys / i386 / compile / ourkernel

# hacer depender

# hacer

# hacer instalar

Sobrecarga:

# reiniciar

Si después de reiniciar el servidor funciona bien, comencemos a configurar el firewall.

Para organizar el trabajo del firewall, se utilizan las siguientes variables, agregadas, si es necesario, al archivo rc.conf.

Permite o niega el uso del firewall:

# Establecer en YES para habilitar la funcionalidad de firewall

firewall_enable = "NO"

El nombre y la ubicación del archivo responsable de inicializar el firewall.

# Qué script ejecutar para configurar el firewall

firewall_script = "/ etc / rc.firewall"

Al instalar de esta regla en "YES" se suprime la visualización:

firewall_quiet = "NO"

Activar / desactivar el registro de eventos:

firewall_logging = "NO"

Tipo de configuración de firewall:

firewall_type = "DESCONOCIDO"

FreeBSD usa por defecto las reglas del archivo /etc/rc.firewall.

Tiene varias plantillas listas para usar:

  • abierto- el cortafuegos permite que pasen todos los paquetes.
  • cliente- Recomendado para proteger solo esta computadora. Es decir, el firewall está configurado como un equipo cliente estándar. Permite todas las conexiones salientes y niega todas las conexiones entrantes excepto las conexiones en el puerto 25.
  • sencillo- Se supone para la configuración de pasarelas simples, etc. Es decir, como el firewall más simple que protege la red interna de intrusiones externas. Configuraremos un sistema de reglas más flexible, por lo que no usaremos esta plantilla.
  • cerrado- Se permite el tráfico en la interfaz local lo0. El resto del tráfico pasa por la regla predeterminada. Como regla general, esta es una prohibición de cualquier acceso, excluyendo la interfaz interna lo0 (en pocas palabras, solo se permite el acceso "a uno mismo")
  • DESCONOCIDO- deshabilite la carga de reglas de firewall desde el script de configuración predeterminado. El cortafuegos no se puede configurar de ninguna manera. Si pasará tráfico o no, depende de la configuración del kernel del sistema. Usado por defecto.

La misma variable en el valor "nombre de archivo" - "nombre de archivo" - se puede utilizar para establecer su propio archivo de configuración para el cortafuegos.

Por ejemplo:

firewall_type = "/ etc / rc.firewall.newconfig"

cargará la configuración del archivo /etc/rc.firewall.newconfig generado.

“Firewall_flags =” ””: sirve para pasar argumentos adicionales cuando se usa firewall_type con el valor del nombre de archivo.

Nuestra tarea es crear un sistema que cumpla con los siguientes criterios:

  • Facilidad de administración.
  • Modificación sobre la marcha, invisible para los usuarios. Por tanto, operaciones como romper conexiones y, sobre todo, reiniciar no son deseables para nosotros.
  • Garantizado que nuestro sistema funcionará en la mayoría de las máquinas.

En nuestro script de ejemplo, todas las computadoras de la red local se dividen en dos grupos condicionales: un grupo privilegiado son aquellos a los que se les permite el acceso a Internet utilizando los servicios más comunes, tales como:

  • HTTP- puerto 80;
  • HTTPS- puerto 443;
  • FTP- puertos 20, 21 y de 1025 a 65535;
  • Protocolo SMTP para reenvío de correo- puerto 25;
  • Protocolo POP3 para recibir mensajes- puerto 110.

Existe otro grupo, equipos desde los que solo se permite el acceso a un servidor corporativo externo con una dirección IP de 83.xxx.xxx.2 (solo protocolos SMTP y POP3).

Debemos asegurarnos de que sea posible cambiar el grupo privilegiado, como dicen, "sobre la marcha", si es posible sin romper conexiones establecidas... Para hacer esto, llamamos al script adicional rc.firewall.local.inet de nuestro script. Es suficiente editar y reiniciar este script adicional sin afectar todas las demás configuraciones del firewall.

Además, debemos prever una situación en la que cambien los parámetros de la red, como la dirección IP de la puerta de enlace del proveedor. Para esto usaremos variables locales en el script. Por ejemplo, si cambia la puerta de enlace predeterminada, solo necesita cambiar el valor de la variable intgateway y reiniciar el script rc.firewall.run.

Aquí está nuestro script de muestra:

# vi rc.firewall.run

#! / bin / sh

extip = "83.xxx.xxx.xxx"

intip = "192.168.9.2"

intnet = "192.168.9.0/24"

mailserver = "83.xxx.xxx.2"

intgateway = "83.xxx.xxx.1"

/ sbin / ipfw -f vaciar y

/ sbin / ipfw agrega 180 desviar la ip natd desde $ (intnet) a cualquier salida xmit fxp0

/ sbin / ipfw agregar 190 desviar ip natd de cualquiera a $ (extip)

# ICMP

/ sbin / ipfw agregar 500 permitir icmp de cualquiera a cualquier

# SSH

/ sbin / ipfw agregar 10000 permitir tcp de cualquiera a cualquier 22

/ sbin / ipfw agregar 10010 permitir tcp de 22 a cualquier

# DNS

/ sbin / ipfw agregar 11000 permitir tcp de cualquiera a cualquier 53

/ sbin / ipfw agregar 11010 permitir tcp de cualquier 53 a cualquier

/ sbin / ipfw add 11020 permiten udp de cualquiera a cualquier 53

/ sbin / ipfw add 11030 permiten udp de cualquier 53 a cualquier

# Web FTP

/ sbin / ipfw agregar 12000 permitir tcp de mí a cualquier 20,21,80,443

/ sbin / ipfw agregar 12010 permitir tcp desde cualquier 20,21,80,443 para mí

/ sbin / ipfw add 12020 allow udp from me to any 20,21

/ sbin / ipfw add 12030 allow udp from any 20,21 to me

# Script para el grupo de privilegios

/ bin / sh /etc/rc.firewall.local.inet

# Negar otra computadora de LAN

/ sbin / ipfw agrega 12960 deny tcp desde $ (intnet) a cualquier 20,21,80,443

/ sbin / ipfw agrega 12970 deny tcp desde cualquier 20,21,80,443 a $ (intnet)

/ sbin / ipfw agrega 12980 deny udp desde $ (intnet) a cualquier 20,21

/ sbin / ipfw agrega 12990 deny udp desde cualquier 20.21 a $ (intnet)

/ sbin / ipfw agregar 13000 permitir tcp de $ (intnet) a $ (servidor de correo) 25,110

/ sbin / ipfw add 13010 allow tcp from $ (mailserver) 25,110 to $ (intnet)

/ sbin / ipfw add 55010 permiten tcp de cualquiera a cualquier 1024-65534

/ sbin / ipfw add 55020 allow tcp desde cualquier 1024-65534 a cualquier

/ sbin / ipfw agregue 55030 allow tcp desde cualquier 1024-65534 a cualquier

/ sbin / ipfw add 55040 permiten tcp de cualquiera a cualquier 1024-65534

/ sbin / ipfw add 55050 permite udp de cualquiera a cualquier 1024-65534

/ sbin / ipfw add 55060 permiten udp desde cualquier 1024-65534 a cualquier

/ sbin / ipfw add 55070 permiten udp desde cualquier 1024-65534 a cualquier

/ sbin / ipfw add 55080 permiten udp de cualquiera a cualquier 1024-65534

# Negar todo

/ sbin / ipfw agregar 65534 denegar ip de cualquiera a cualquier

Cree y edite el script rc.firewall.local.inet para trabajar con un grupo de direcciones privilegiadas:

# vi / etc / rc.firewall.local.inet

#! / bin / sh

intnet = "192.168.9.0/24"

grupopriv = (31,32)

/ sbin / ipfw eliminar 12310

/ sbin / ipfw eliminar 12320

/ sbin / ipfw eliminar 12330

/ sbin / ipfw eliminar 12340

/ sbin / ipfw agregue 12310 allow tcp desde $ (intnet) $ (privgroup) a cualquier 20,21,80,443,1025-65535

/ sbin / ipfw add 12320 allow tcp desde cualquier 20,21,80,443,1025-65535 a $ (intnet) $ (privgroup)

/ sbin / ipfw agrega 12330 permite udp desde $ (intnet) $ (privgroup) a cualquier 20,21,1025-65535

/ sbin / ipfw add 12340 permite udp desde cualquier 20,21,1025-65535 a $ (intnet) $ (privgroup)

En el script para cambiar la composición del grupo privilegiado, debe editar la variable privgroup agregando / eliminando el número de host en la subred local.

Por ejemplo, para agregar dos computadoras con direcciones IP 192.168.9.33 y 192.168.9.45, escribiría “privgroup = (31-33.45)”.

Es un poco feo usar reglas como “/ sbin / ipfw delete NNNNN” al iniciar el sistema cuando no existía tal regla. Al intentar eliminar una regla que no existe, el sistema muestra el siguiente mensaje en la consola:

ipfw: regla 13031: setsockopt (IP_FW_DEL): argumento no válido

En este caso, el sistema sigue funcionando con normalidad.

Si hace todo estrictamente, entonces necesita crear dos scripts: uno para ejecutar al inicio, el segundo - al realizar cambios sobre la marcha. Pero luego deberá realizar los cambios apropiados en ambos scripts.

Dado que el objetivo principal es crear un sistema que sea fácil de administrar, este problema en nuestro caso puede pasarse por alto.

Pero ahora, después de realizar los cambios apropiados, simplemente podemos reiniciar el script para el grupo privilegiado.

# / bin / sh rc.firewall.local.inet

También podemos hacer cambios y reiniciar el script rc.firewall.run, aunque, por diseño, tendremos que hacer esto con mucha menos frecuencia que en el caso del script de grupo privilegiado.

# / bin / sh rc.firewall.run

Dado que escribimos nuestro propio script para anular las reglas existentes y lanzar una configuración de firewall alternativa, debemos pensar en cómo iniciarlo.

FreeBSD tiene un maravilloso mecanismo de inicio programas personalizados: archivo rc.local. Está ausente del sistema de forma predeterminada.

Como ya estamos creando Este archivo, agregue el comando para iniciar el demonio natd, que es responsable del soporte de NAT.

El demonio natd se inicia desde el archivo rc.conf. (¡De nuevo este archivo, de hecho juega un papel clave para todo el sistema FreeBSD como un todo!)

El mecanismo para ejecutar este archivo desde rc.conf es a través de las siguientes variables:

# - la ruta al archivo natd en sí

natd_program = "/ sbin / natd"

# Permitir NAT (si firewall_enable == YES)

natd_enable = "SÍ"

# Frontend o ipaddress para usar

natd_interface = ""

# Banderas de lanzamiento natd opcionales

natd_flags = ""

Pero en este caso, usaremos la llamada al demonio natd a través de rc.local. Mando:

# vi /etc/rc.local

crea automáticamente el archivo /etc/rc.local y lo abre para editarlo.

Agregue las siguientes líneas:

# Comando de inicio natd

/ sbin / natd -n rl0

# donde "-n rl0" es el nombre de la interfaz en la que se inicia NAT

# Y ejecute nuestro script para establecer reglas de firewall:

/ bin / sh /etc/rc.firewall.run

Reiniciamos y verificamos el acceso a los recursos de Internet necesarios desde una computadora de la red local.

  1. Evie Nemeth, Garth Snyder, Scott Seabass, Trent R. Hein. UNIX. Gestión administrador de sistema... BHV, Peter, 2004
  2. Alexey Fedorchuk, Alexey Torn. FreeBSD. Instalación, configuración, uso. BHV, 2003
  3. Philip Torchinsky. Una guía práctica para el administrador de UNIX. "Símbolo", 2003

Enrutador wifi con servidores DHCP y DNS FreeBSD 8.2

Que queremos conseguir:
- para que los clientes Wi-Fi estén en la misma subred que los cableados.
- para que los clientes cableados e inalámbricos reciban direcciones automáticamente a través de DHCP
- tener un DNS en caché
- por supuesto que queremos que todos se conecten
- tener acceso RDP al servidor interno

En general, queremos obtener algo similar en funcionalidad al enrutador Dlink DIR-300

Que tenemos:
Celeron 700, 256 MB de RAM, tornillo IDE de 80 GB y una placa base extraña que solo funciona con ACPI deshabilitado
tarjetas de red:

LAN - rl0 (10 \ 100 algún tipo de realtek encontrado detrás del armario en el trabajo) [correo electrónico protegido]:1 :8 :0 : clase = 0x020000 tarjeta = 0x813910ec chip = 0x813910ec rev = 0x10 hdr = 0x00 proveedor = "Realtek Semiconductor" dispositivo = Realtek RTL8139 Family PCI FastEthernet NIC RTL- 8139 / 8139C / 8139D class = subclase de red = ethernet WAN - stge0 (adaptador asus 10 \ 100 \ 1000) [correo electrónico protegido]:1 :5 :0 : class = 0x020000card = 0x81801043chip = 0x102313f0 rev = 0x41 hdr = 0x00 vendor = "Sundance Technology Inc" device = "IC Plus IP1000 Family Gigabit Ethernet Adapter" class = network subclass = ethernet WLAN - ral0 (tarjeta Wi-Fi barata de Dlink) [correo electrónico protegido]:1 :10 :0 : class = 0x028000card = 0x3a711186chip = 0x03021814 rev = 0x00 hdr = 0x00 vendor = "Ralink Technology, Corp." dispositivo = "inalámbrico a / b (RT2525 2 Transceptor de .4GHz + RT2560 MAC / BBP) "clase = red

Dirección IP blanca proporcionada por el ISP:
IP 9.9.9.9
máscara 255.255.255.0
puerta de enlace 9.9.9.1
DNS1 9.9.9.254
DNS1 9.9.9.253
la configuración difiere de la real, pero esto no cambia la esencia

Rango de LAN: 192.168.0.0 con máscara 255.255.255.0

FreeBSD 8.2 OS instalado:

# uname -a FreeBSD GATE 8 .2 -LIBERAR FreeBSD 8 .2 -LIBERACIÓN # 0: Sábado 9 de abril 20:13:28 OMSST 2011 [correo electrónico protegido]: / usr / src / sys / i386 / compile / GATE i386

contenido de /etc/rc.conf:

9 .9 .9 .1 9 .9 .9 .9 máscara de red 255 .255 .255 .0 "ifconfig_rl0 =" inet 192 .168 .0 .1 máscara de red 255 .255 .255 .0 "

contenido de /etc/resolv.conf (servidor DNS):

nombre del servidor 9 .9 .9 .254 nombre del servidor 9 .9 .9 .253

Empezamos a prepararnos:

Eliminamos todos los controladores innecesarios del kernel (bueno, o no los eliminamos, ya que es conveniente para cualquiera) y dejamos todos los controladores para Dispositivos inalambricos... Si sabe qué controlador es adecuado para su tarjeta, déjelo y el resto se puede quitar. No sabía cuál funcionaría para mí, así que lo dejé todo. Reconstruimos el kernel con las opciones:

dispositivo if_bridge # Módulo para operación puente dispositivo wlan # Soporte 802.11 (Wi-Fi) # no sé qué es, se carga automáticamente dispositivo wlan_amrr # Algoritmos de control de velocidad de transmisión AMRR dispositivo wlan_xauth # Módulo de soporte de autorización para el modo de punto de acceso dispositivo wlan_wep # Módulo de soporte de algoritmo de seguridad WEP dispositivo wlan_tkip # Módulo de soporte de cifrado TKIP dispositivo wlan_ccmp # Módulo de soporte de cifrado CCMP dispositivo pf # Uso Packet Filter como firewall # soporte de algoritmo de cola (priorización de tráfico) opciones Opciones ALTQ ALTQ_CBQ # Opciones de cola de bases de clase (CBQ) ALTQ_RED # Detección temprana aleatoria (ROJO) opciones ALTQ_RIO # RED Opciones de entrada / salida ALTQ_HFSC # Programador de paquetes jerárquico (HFSC) opciones ALTQ_PRIQ # Prioridad en cola (PRIQ) # como tengo un procesador de un solo núcleo, no necesito soporte para muchos núcleos #options ALTQ_NOPCC # Requerido para compilación SMP

compila e instala el kernel:

# cd / usr / src # make buildkernel KERNCONF = GATE && \ hacer installkernel KERNCONF = GATE

Reinicie y vea qué sucedió:

8843 mtu 1500 opciones = 8209b éter 01 :01 :01 :01 :01 :01 inet 9 .9 .9 .9 9 .9 .9 .255 8802 métrico 0 mtu 1500 opciones = 3808 éter 00 :50 : fc: ef: 4d: 75 inet 192 .168 .0 .1 emisión de netmask 0xffffff00 192 .168 .0 .255 medios: autoselección de Ethernet (100baseTX 8802 métrico 0 mtu 2290 éter 00 :26 : 5a: 77 :38 : ba medios: IEEE 802 .11 Estado de autoselección (autoselección) de Ethernet inalámbrico: sin operador lo0: banderas = 8049 mtu 16384 opciones = 3 inet 127 .0 .0 .1 máscara de red 0xff000000

La tarjeta wifi se identificó como ral0. Ya bueno. Puede reconstruir el kernel nuevamente y eliminar los controladores inalámbricos innecesarios.

Edite /etc/hostapd.conf a este estado:

Editando /etc/rc.conf:

keymap = "ru.koi8-r" hostname = "GATE" gateway_enable = "YES" defaultrouter = " 9 .9 .9 .1 "sshd_enable =" SÍ "ifconfig_stge0 =" inet 9 .9 .9 .9 máscara de red 255 .255 .255 .0 " # configurar la tarjeta inalámbrica como punto de acceso wlans_ral0 = "wlan0" create_args_wlan0 = "wlanmode hostap" ifconfig_wlan0 = "up mediaopt hostap" # eliminar la dirección IP de la interfaz rl0 # ifconfig_rl0 = "inet 192.168.0.1 netmask 255.255.255.0" # crear un puente entre LAN inalámbrica y cableada # y cuelgue en él la dirección IP de la puerta de enlace de la red local cloned_interfaces = "bridge0" ifconfig_bridge0 = "inet 192 .168 .0 .1 máscara de red 255 .255 .255 .0 \ addm wlan0 addm rl0 arriba "ifconfig_rl0 =" arriba " # habilitar la funcionalidad del punto de acceso hostapd_enable = "SÍ"

Reiniciamos. Vamos a ver que pasó:

# ifconfig stge0: flags = 8843 mtu 1500 opciones = 8209b éter 01 :01 :01 :01 :01 :01 inet 9 .9 .9 .9 emisión de netmask 0xffffff00 9 .9 .9 .255 medios: autoselección de Ethernet (100baseTX ) estado: activo rl0: banderas = 8943 mtu 1500 opciones = 3808 éter 00 :50 : fc: ef: 4d: 75 medios: autoselección de Ethernet (100baseTX ) estado: activo ral0: banderas = 8843 métrico 0 mtu 2290 éter 00 :26 : 5a: 77 :38 : ba medios: IEEE 802 .11 status: running lo0: flags = 8049 métrico 0 mtu 16384 opciones = 3 inet 127 .0 .0 .1 máscara de red 0xff000000 bridge0: flags = 8843 mtu 1500 éter a6: 09 : ed: c1: 23 :38 inet 192 .168 .0 .1 emisión de netmask 0xffffff00 192 .168 .0 .255 identificación 00 :00 :00 :00 :00 :00 prioridad 32768 tiempo infernal 2 fwddelay 15 edad máxima 20 Holdcnt 6 proto rstp maxaddr 100 se acabó el tiempo 1200 ID de root 00 :00 :00 :00 :00 :00 prioridad 32768 ifcost 0 Puerto 0 miembro: rl0 flags = 143 ifmaxaddr 0 Puerto 2 prioridad 128 costo de ruta 200000 miembro: wlan0 flags = 143 ifmaxaddr 0 Puerto 6 prioridad 128 costo de ruta 370370 wlan0: banderas = 8943 mtu 1500 éter 00 :26 : 5a: 77 :38 : ba medios: IEEE 802 .11 Modo de selección automática de Ethernet inalámbrico 11g estado: ejecutando ssid canal 1 (2412 MHz 11g) bssid 00 :26 : 5a: 77 :38 : ba país US authmode WPA2 / 802 .11i privacidad MIXTA deftxkey 2 AES-CCM 2 :128 -bit AES-CCM 3 :128 -bit txpower 0 escaneo válido 60 protmode CTS dtimperiod 1 -dfs

Todo está bien, las tarjetas Wi-Fi y cableadas están conectadas por un puente y una dirección IP cuelga de este puente

Comencemos a configurar PF. PF le permite habilitar la priorización del tráfico. Breve descripción mira aquí:
http://www.freebsd.org/doc/ru/books/handbook/firewalls-pf.html
cree un archivo /usr/local/etc/pf.conf y llévelo a este estado:

# Aquí es donde defino las variables con las que me conviene más escribir el script. WAN = "stge0" LAN = "puente0" LAN_POOL = " 192 .168 .0 .0 /24 "WANIP =" 9 .9 .9 .9 "SERVIDOR =" 192 .168 .0 .3 "ADMIN =" 192 .168 .0 .2 "RDP_PORT =" 3389 "EXTRDP_PORT =" 33389 " # el tráfico hacia y desde estos puertos estará prohibido en la interfaz externa DROP_PORTS = "(135: 139 ,445}" # Qué hacer después de que un paquete alcanza una regla de bloqueo (bloquear) # set block-policy drop - descarte el paquete y no haga nada # establecer rechazo de política de bloqueo: descarte el paquete y envíe un mensaje de error # al anfitrión que lo envió. establecer caída de política de bloqueo # No revise el tráfico para lo0 establecer saltar en lo0 # No verifique el tráfico en la interfaz bridge0 (no tenemos restricciones internas) establecer omitir en $ LAN # "Normalizar" los paquetes. La descripción de esta opción, en mi opinión, es suficiente # son vagas, pero deberían ser útiles contra algunos tipos de ataques a la red. fregar en todo # Tengo una velocidad de ~ 5000 kbps, pero debes ingresar tu velocidad aquí altq en $ WAN priq ancho de banda 5000Kb cola (priv, otro) # Tengo 2 colas # Para tráfico de mayor prioridad (RDP del servidor) cola priv qlimit 25 prioridad 14 priq (rojo) # Para todos los demás cola de otros qlimit 30 prioridad 10 priq (predeterminado) # Los tamaños de las colas se toman, se podría decir, desde el techo: (No demasiado # concéntrese en ellos, por favor. Trate de encontrar el tamaño de la cola usted mismo # habilitar NAT en la interfaz externa para la red LAN nat en $ WAN desde $ LAN_POOL a cualquier -> ($ WAN) # Reenvío del puerto al servidor. Reenvío de un puerto diferente al estándar # para protegerse contra monos de fuerza bruta que escanean puertos estándar rdr en $ WAN proto tcp desde cualquier hasta $ WANIP \ port $ EXTRDP_PORT -> $ SERVER puerto $ RDP_PORT # Cortar las solicitudes de ping a nuestra dirección bloquear rápido en $ WAN proto icmp desde cualquier hasta $ WANIP tipo icmp 8 # No debe haber tráfico de NETBIOS en la interfaz externa bloquear rápido en $ WAN proto (tcp udp) desde cualquier puerto a cualquier puerto $ DROP_PORTS # habilitar anti-spoofing en la interfaz WAN # Citando http://openbsd.corebsd.or.id/faq/pf/ru/filter.html: # Las direcciones se falsifican cuando un atacante falsifica el original # Direcciones IP en paquetes, se transfieren al caparazón de sus direcciones reales, # o representar otro nodo en la red. Después de que el usuario haya sido engañado # podrán lanzar un ataque a la red sin exponer la fuente real # ataques o intenta acceder servicios de red, cuales # restringido a direcciones IP específicas. antispoof rápido por $ WAN # Denegar todo el tráfico no autorizado explícitamente bloquear todo # ### Tráfico entrante # Tráfico privilegiado pasar rápido en $ WAN proto tcp de cualquier al puerto $ WANIP $ EXTRDP_PORT queue priv # Tráfico normal pasar rápido en $ WAN de cualquiera a $ WANIP mantener la cola de estado otro # En realidad, en el tráfico entrante, la priorización en PF no funciona, pero las reglas que # todavía escribió. # ### Tráfico saliente # Tráfico privilegiado pase rápido en $ WAN proto tcp desde $ WANIP \ port $ EXTRDP_PORT a cualquier estado de espera de cola priv # El tráfico normal pasa rápido en $ WAN desde $ WANIP a cualquier estado de cola de mantenimiento otro
pf_enable = "SÍ" pf_rules = "/ usr / local / etc / pf.conf"

y reinicie pf:

# /etc/rc.d/pf reiniciar

Verificamos la corrección de la creación de reglas usando los comandos:

pfctl -sn Reglas NAT existentes
pfctl -sr Reglas existentes retransmisiones
pfctl -ss Conexiones establecidas
pfctl -si Varios contadores
pfctl -sa Todo lo anterior a la vez
pfctl -sq -vvv Muestra el estado de las colas.

Actualizando puertos usando portsnap:

# portsnap fetch Buscando espejos de portsnap.FreeBSD.org ... 5 espejos encontrados. Obteniendo etiqueta de instantánea de portsnap5.FreeBSD.org ... hecho. Obteniendo metadatos de instantáneas ... hecho. Actualizando desde mié jun 15 14 :21 :31 MSD 2011 al jue jul 21 11 :37 :27 MSD 2011 ... Atractivo 3 parches de metadatos .. hecho. Aplicando parches de metadatos ... listo. Atractivo 3 archivos de metadatos ... hecho. Atractivo 9656 parches ..... 10 .... <Часть вывода удалена> ...........9650 ... hecho. Aplicar parches ... listo. Atractivo 1282 nuevos puertos o archivos ... hecho. # portsnap extraer /usr/ports/.cvsignore / usr / ports / CHANGES .................<Часть вывода удалена>................. / usr / ports / x11 / yelp / / usr / ports / x11 / zenity / Construyendo nuevos archivos INDEX ... hecho.

Usamos dnscache del paquete djbdns como servidor DNS de almacenamiento en caché, ya que consume menos memoria y se considera más seguro que el servidor DNS BIND incluido con FreeBSD.

Instalar djbdns:

# cd / usr / ports / dns / djbdns && hacer que la instalación sea limpia

Recopilamos e instalamos con las siguientes opciones:

DUMPCACHE caché persistente para dnscache IPV6 Compatibilidad con IPv6 de Felix von Leitner IGNOREIP parche ignoreip2 de Russell Nelson Parche jumbo de JUMBO de Claudiu Costin [X] MAN páginas de manual de Gerritt Pape PERSISTENT_MMAP Parche de registro mm persistente de Lennert Buyten HandVhek [X] SRV Michael SRV parche SRV Michael SRV Michael

djbdns extraerá el puerto de daemontools junto con él. daemontools está diseñado para iniciar demonios y monitorear su trabajo. Es decir, si algún demonio bajo su control "falla", entonces daemontools lo reiniciará.

Cree un grupo de censores, que incluirá usuarios bajo los cuales se ejecutarán dnscache y dnslog (un registrador para djbdns):

crea un usuario para dnslog:

# pw useradd dnslog -s / sbin / nologin -d / dev / null -G dnsusers

cree una carpeta con el contenido del cual funciona daemontools:

ejecutar daemontools:

dado que la configuración de dnscache se encuentra en / usr / local / etc / djbdns, y daemontools trabaja con la carpeta / var / service, hacemos el enlace:

# ln -s / usr / local / etc / dnscache / var / service / dnscache

La carpeta / usr / local / etc / dnscache / env contiene archivos con una configuración de dnscache más avanzada, pero en este caso estamos bien con los valores predeterminados.

Para el funcionamiento normal del servidor, debe configurar las direcciones de los servidores ascendentes. Para cada zona hay un archivo con el mismo nombre que el nombre de la zona, ubicado en / usr / local / etc / dnscache / root / servers. Cada archivo contiene las direcciones IP de los servidores responsables de esta zona. Dado que redirigimos cualquier solicitud a los servidores DNS del proveedor, escribimos sus nombres en un archivo llamado "@" (responsable de la zona raíz).

Reinicie dnscache:

Instale el servidor DHCP (lo construí con estas opciones):

# cd / usr / ports / net / isc-dhcp41-server && hacer que la instalación sea limpia Opciones para isc-dhcp41-server 4 .1 .e_1, 2 DHCP_IPV6 Habilitar soporte para IPv6 [X] DHCP_PARANOIA Habilitar soporte para chroot DHCP_LDAP Soporte de backend LDAP experimental DHCP_LDAP_SSL Soporte de conexión LDAP sobre SSL / TLS

Traemos la configuración del servidor DHCP (/usr/local/etc/dhcpd.conf) a este estado:

dirección local 192 .168 .0 .1 ; tiempo de arrendamiento predeterminado 600 ; tiempo máximo de arrendamiento 7200 ; autoritario; ddns-update-style provisional; instalación de registro local7; subred 192 .168 .0 .0 máscara de red 255 .255 .255 .0 (distancia 192 .168 .0 .10 192 .168 .0 .250 ; enrutadores de opciones 192 .168 .0 .1 ; # Si ha recaudado SAMBA, puede intentar dar a los clientes # también el valor del servidor WINS. # opción netbios-name-servers 192.168.0.1; # ya hemos subido nuestro servidor DNS, así que le damos su dirección opción servidores de nombres de dominio 192 .168 .0 .1 ; } # "vincular" direcciones MAC específicas a direcciones IP específicas administrador de host (hardware ethernet 03 :03 :03 :03 :03 :03 ; dirección fija 192 .168 .0 .2 ; ) servidor host (hardware ethernet 04 :04 :04 :04 :04 :04 ; dirección fija 192 .168 .0 .3 ; }

Agregue las siguientes líneas a /etc/rc.conf:

e inicie el servidor DHCP:

Todo esta bien. Se ha logrado la funcionalidad del dir-300 más simple.

En este artículo, veremos las interfaces de red en FreeBSD 11.1, vamos a mostrar la configuración de la red a través del archivo de configuración / etc / rc.conf, es decir, el propósito estático ajustes y conseguirlos DHCP. Escribamos las direcciones DNS-servidores, configurar Hospedadores y considera la indicación configuración de red temporal.

Ver interfaces de red.

Primero, dejémoslo claro: Hay dos estados de la tarjeta de red HASTA(involucrado) y ABAJO(no utilizado).

El primer paso es mirar nuestras interfaces de red, buscaremos con el comando ifconfig(Fig.1) La salida del comando muestra todas las interfaces HASTA y ABAJO.

Ifconfig

ifconfig -a te mostrará lo mismo.

Ifconfig -a

Aquí hay algunas diferencias con ifconfig v Servidor de Ubuntu . (v Servidor de Ubuntu "ifconfig" solo muestra interfaces HASTA,"ifconfig -a" muestra todas las interfaces y HASTA y ABAJO)

Fig. 1 - El resultado de ingresar el comando ifconfig.

Y entonces, ¿qué vemos?

  • em0- nuestra tarjeta de red, con una dirección IP 192.168.3.11 .
  • em1- segunda tarjeta de red no configurada.
  • lo- bucle local, está presente por defecto para todos.

Para ver solo las interfaces HASTA, el comando se usa ifconfig -u(Figura 2):

Ifconfig -u

y ver solo las interfaces ABAJO, el comando se usa ifconfig -d(Fig. 3):

Ifconfig -d
Fig. 2 - El resultado de ingresar el comando ifconfig -u.
Fig. 3 - El resultado de ingresar el comando ifconfig -d.

En el futuro, mostraré ejemplos de configuraciones en la interfaz. "em0".

Para habilitar la interfaz, use el comando ifconfig"NOMBRE-INTERFAZ" hasta.

Ifconfig em0 arriba

Para apagar la interfaz, use el comando ifconfig "NOMBRE-INTERFAZ" abajo.

Ifconfig em0 abajo

"Jugar" con una interfaz, a menos que, por supuesto, esté conectado por ssh y déjalo en un estado HASTA.

Configurando la red a través del archivo de configuración.

Para configurar una dirección IP estática o dinámica, necesitamos editar el archivo de configuración de las interfaces de red - / etc / rc.conf lo editaremos con editor de textovi(Fig. 4) Te lo diré enseguida, para poder editar en vi Necesito presionar una letra "I" y para guardar y cerrar el documento, presione "Esc" presentar ": wq!" y presione "Ingresar".

Figura 4 - vi /etc/rc.conf.

Obtención de la configuración de red a través de DHCP.

Para asignar la recepción de la configuración a través de DHCP, debe ingresar (o cambiar la línea existente) en el archivo / etc / rc.conf(Figura 5)

ifconfig_NOMBRE-INTERFAZ= "DHCP"

Ifconfig_em0 = "DHCP"
Fig.5 - Recepción configuración de la red a través de DHCP.

Reiniciar servicio de red netif(Figura 6)

/etc/rc.d/netif restart Fig. 6 - Reinicio del servicio de red FreeBSD.

Observamos las interfaces de red activas, vemos, recibidas a través de DHCP, la dirección IP de la interfaz em0- 192.168.3.6 (Figura 7)

Ifconfig -u

Hacer ping 8.8.8.8
Fig. 7 - Comprobación de interfaces activas y acceso a la red.

Vienen los pings. ¡Todo perfectamente!

Especificación manual de la configuración de red.

Para asignar una dirección estática a nuestro Freebsd necesita archivar / etc / rc.conf ingrese dos líneas (Fig.8)

ifconfig_NOMBRE-INTERFAZ= "inet SIN DIRECCIÓN IP BSD máscara de red RED DE MASCARAS "

defaultrouter = " DIRECCIÓN IP DE GATEWAY "

Ifconfig_em0 = "inet 192.168.3.11 netmask 255.255.255.0" defaultrouter = "192.168.3.1"
Fig. 8 - Configuración estática de la interfaz de red.

Reiniciamos el servicio de red.

/etc/rc.d/netif reiniciar

Comprobación de interfaces activas

Ifconfig -u

Verificamos el acceso a Internet haciendo ping a Google Eights.

Hacer ping 8.8.8.8

Configuración de DNS.

Direcciones IP Servidores DNS almacenado en el archivo / etc / resolv.conf(Figura 9)

Nosotros abrimos resolv.conf en editor vi.

Vi /etc/resolv.conf

Entramos IP Dirección DNS servidor. (Puede ingresar tantas direcciones como desee).

Servidor de nombres 192.168.3.1 servidor de nombres 8.8.8.8 servidor de nombres 8.8.4.4

Si no tiene un archivo resolv.conf luego créalo en el directorio / etc

Toque /etc/resolv.conf
Fig. 9 - Contenido del archivo resolv.conf.

El archivo / etc / hosts.

El archivo / etc / Hospedadores contiene tablas para asignar nombres DNS a direcciones IP. En primer lugar, su servidor accederá al archivo Hospedadores y luego al servidor DNS.

En lo que a mí respecta, me pareció útil agregar Hospedadores grabando esto freebsd(La dirección IP de la red local es el nombre del servidor). Ahora podemos especificar en todos los archivos de configuración Nombre DNS, y no la dirección IP, y si es necesario, en el menor tiempo posible, cambie su dirección IP corrigiendo Hospedadores y la configuración de la interfaz en / etc / rc.conf.

Este es solo un ejemplo para que lo haga. no es necesario.

Comencemos a editar (Fig.10):

Vi / etc / hosts

Yo entro:

192.168.3.11 freebsd.itdeer.loc Fig. 10 - Contenido del archivo hosts.

Lo comprobaré haciendo ping a los nombres de Hospedadores(Figura 11)

Hacer ping localhost ping freebsd.itdeer.loc
Fig. 11 - Ping de nombres de hosts.

Asignación temporal de una dirección IP.

Para ser honesto, no sé para qué puede ser útil la asignación temporal de configuraciones de red. A menos que digamos que tiene algún tipo de servidor que está diseñado solo para su red local y de repente decidió actualizar rápidamente el software a través de Internet en este servidor, para no ir a la puerta de enlace, no distribuir Internet a la IP deseada. dirección, etc. Puede arreglárselas con un par de comandos.

Por ejemplo, sabemos que en 192.168.3.109 Definitivamente hay acceso a Internet, asignamos esta dirección IP a nuestra interfaz, también debe especificar la máscara de red (Fig.12):

Ifconfig em0 192.168.3.109 máscara de red 255.255.255.0

o un comando con una entrada de máscara de red corta.

Ifconfig em0 192.168.3.109/24
Fig. 12 - Especificación de la configuración temporal para la interfaz de red em0.

Es posible que Internet no aparezca porque no se especificó una puerta de enlace predeterminada. Lo registramos y hacemos ping a los ochos de Google (Fig. 13).

Ruta agregar por defecto 192.168.3.1 ping 8.8.8.8
Fig.13 - Especifique la puerta de enlace predeterminada. Comprobando ping.

Si hemos registrado correctamente nuestra puerta de enlace predeterminada, se puede ver en la tabla de enrutamiento. Se muestra usando el comando "netstat -rn" La puerta de enlace predeterminada se indicará con una bandera UG(Figura 14)

Netstat -rn
Fig. 14 - Salida de la tabla de enrutamiento.

Si ha escrito mal la ortografía en algún lugar o ha especificado una puerta de enlace diferente, puede eliminar la puerta de enlace predeterminada.

Ruta del defecto

Esto completa la configuración temporal, recuerde que después de reiniciar el servidor o por separado los servicios redes, todos los ajustes temporales desaparecerán.

Agregue una ruta a la red 192.168.0.0/16 (Máscara 255.255.0.0) a través de la puerta de enlace predeterminada 192.168.3.1/24

Ruta agregar 192.168.0.0/16 192.168.3.1

Opción de agregar una ruta con máscara completa.

Agregar ruta -net 192.168.0.0 -mascara de red 255.255.0.0 192.168.3.1

Cambie el nombre de la interfaz em0 a wan0.

Por conveniencia, algunos administradores cambian el nombre de las interfaces para que puedan ver de inmediato para qué sirve. Digamos que tenemos una puerta de enlace con dos interfaces de red. em0(internet) y em1(red local) y trabajar con tales nombres es inconveniente, ya que tener una gran cantidad de interfaces puede resultar confuso. Es mucho más conveniente trabajar con interfaces. wan0 y lan1.

Mostraremos un ejemplo de cambio de nombre de una interfaz. em0 v wan0 en el archivo / etc / rc.conf(Figura 15)

Ifconfig_em0 = "inet 192.168.3.11 máscara de red 255.255.255.0"

Reemplazar con dos líneas:

Ifconfig_ em0 _name = " wan0"ifconfig_ wan0= "inet 192.168.3.11 máscara de red 255.255.255.0"
Fig.15 - Renombrar las interfaces en el archivo /etc/rc.conf.

No olvide reiniciar el servicio de red:

/etc/rc.d/netif reiniciar

Compruebe, ingrese el comando ifconfig -u... Vemos nuestro wan0 con el derecho dirección IP(Figura 16)

Ifconfig -u
Fig. 16 - Comprobando el nuevo nombre de la interfaz. ifconfig -u.


Un enrutador es un dispositivo que proporciona acceso a computadoras conectadas a una red local a Internet. Con la ayuda de FreeBSD, puede construir un enrutador similar y esto se hace de manera bastante simple, considere la opción de construir un enrutador para una pequeña red local de 20 ... 30 estaciones de trabajo.

Datos iniciales: una PC con dos tarjetas de red con FreeBSD instalado (actualmente usando FreeBSD 8.4 STABLE), dirección IP externa proporcionada por nuestro proveedor, dirección IP de la puerta de enlace del proveedor y dirección IP del servidor DNS.

Para convertirlo en un enrutador, agregue solo una línea al archivo de configuración rc.conf:

# echo gateway_enable = ”YES”> /etc/rc.conf

Lo que permitirá el paso de paquetes ip de una interfaz de red a otra. Usando el comando ifconfig, buscamos información sobre las interfaces de red y determinamos cuál será "externa" (le asignaremos la dirección IP del proveedor) y cuál será "interna" (le asignaremos una ip desocupada). dirección de la red local interna). Veamos lo que obtenemos:


Definimos "em0" como la interfaz externa (con la ip asignada 192.168.5.39), "em1" como la edición interna del archivo rc.conf (asígnela, por ejemplo, ip 192.168.0.240), en el mismo archivo es necesario registrar la puerta de enlace de nuestro proveedor

# echo defaultrouter = ”xxx.xxx.xxx.xxx”> /etc/rc.conf

Donde xxx.xxx.xxx.xxx es la dirección IP de la puerta de enlace del proveedor.

Como resultado, obtuve la siguiente forma del archivo rc.conf


Luego, debe registrar la dirección IP del servidor DNS del proveedor para que podamos referirnos al sitio por sus nombres. Hagamos una entrada en archivo de configuración resolv.conf

# echo servidor de nombres xxx.xxx.xxx.xxx> /etc/resolv.conf

Donde xxx.xxx.xxx.xxx es la dirección IP del servidor DNS.

Si hay varios servidores DNS, es recomendable listarlos todos, cada uno con una nueva línea.


En nuestro caso, estas son las direcciones IP de los servidores 192.168.5.200 y 192.168.5.201. Dirección 8.8.8.8 Servidor DNS excelente Google, como último recurso, puede usarlo.

Reiniciando ...

# shutdown –r ahora

Eso es todo, la configuración inicial del enrutador está lista (puedes configurar la PC de la red local). A continuación, consideraremos configurar un cortafuegos, habilitar la traducción de direcciones de red (NAT) y todo tipo de esquemas de enrutamiento.

Analizamos la configuración de estaciones de trabajo en el sistema operativo Windows para Internet (cómo y dónde registrar la dirección IP de la PC, el enrutador y el DNS). Como aplicación, por si acaso, de repente alguien la necesita.

Observamos la continuación de la configuración del enrutador (parte 2).