- Se incorporó
- 7 Mayo 2011
- Mensajes
- 370
NOTA: Guía en edición, en honor al tiempo. Hecha en base la eximia guía con nombre casi homónimo de yakko. Faltan todos los descriptivos de los servicios, y por supuesto, textos y textos de información, incluyendo los divertidos comentarios del creador original de la estructura. Si los enanitos se me arrancaron hacia el bosque en alguna parte, por favor escribir los alcances necesarios.
A pesar de lo anterior, se irá rellenando en el próximo tiempo (dependiendo de la carga laboral, familia, etc.); por el momento, la dejo aquí lo más práctica posible.
I) REQUISITOS MÍNIMOS
PC con:
1) INSTALACIÓN
2) PREPARACIÓN DE LA MÁQUINA
3) CONFIGURACIÓN DE RED
4) ACTIVANDO EL ROUTER
5) Configurando el caché DNS
6) Configurando el servicio DHCP
7) Configuración de squid (proxy)
FIN
A pesar de lo anterior, se irá rellenando en el próximo tiempo (dependiendo de la carga laboral, familia, etc.); por el momento, la dejo aquí lo más práctica posible.
I) REQUISITOS MÍNIMOS
PC con:
- 2 NIC
- 1 GB RAM
- 1 Procesador de 1.2 Ghz (x86_64)
- 10/20 GB Almacenamiento en disco
1) INSTALACIÓN
a) Parámetros para interfaces de red
Durante el arranque del DVD, iluminar "Install CentOS 7" y presionar Tab para ingresar parámetros al final de la línea:
Presionar Enter. Esto nos ayudará a que se reconozca el nombre de los dispositivos de red como "eth0", "eth1", etc.
b) Menú
Seleccionamos idioma a instalar, en el caso de esta máquina fue:
LOCALIZATION:
Language Support = Inglés
Date/Time = Americas/Santiago timezone
Keyboard = Spanish; Castilian Latin American (include dead tilde)
SECURITY:
Security Policy = OFF
SOFTWARE:
Installation Source = Local Media
Software Selection = Minimal Install
SYSTEM:
Partitioning = Manual
*Esquema de Particionado:
Se mantiene una partición aparte para /boot, y LVM para el resto de puntos de montaje. Nos basaremos en la guía original de yakko. Gracias a las bondades de LVM, luego podremos redimensionar o asignar el espacio necesario a los servicios que deseemos levantar.
Kdump = Disabled
Network & Hostname = Activar la interfaz WAN. Setear hostname a "home-proxy"
c) Comenzamos la instalación
Mientras está instalando la paquetería, seteamos una contraseña de root.
Durante el arranque del DVD, iluminar "Install CentOS 7" y presionar Tab para ingresar parámetros al final de la línea:
Código:
biosdevname=0 net.ifnames=0
Presionar Enter. Esto nos ayudará a que se reconozca el nombre de los dispositivos de red como "eth0", "eth1", etc.
b) Menú
Seleccionamos idioma a instalar, en el caso de esta máquina fue:
LOCALIZATION:
Language Support = Inglés
Date/Time = Americas/Santiago timezone
Keyboard = Spanish; Castilian Latin American (include dead tilde)
SECURITY:
Security Policy = OFF
SOFTWARE:
Installation Source = Local Media
Software Selection = Minimal Install
SYSTEM:
Partitioning = Manual
*Esquema de Particionado:
Se mantiene una partición aparte para /boot, y LVM para el resto de puntos de montaje. Nos basaremos en la guía original de yakko. Gracias a las bondades de LVM, luego podremos redimensionar o asignar el espacio necesario a los servicios que deseemos levantar.
Kdump = Disabled
Network & Hostname = Activar la interfaz WAN. Setear hostname a "home-proxy"
c) Comenzamos la instalación
Mientras está instalando la paquetería, seteamos una contraseña de root.
2) PREPARACIÓN DE LA MÁQUINA
a) Desactivar SELinux
Ya que actúa a muy bajo nivel (llamadas al kernel, red, etc.), afectando directamente el rendimiento de la máquina y por ende, cada proceso y servicio que corra en ella. Es necesario reiniciar para que la configuración surja efecto.
Cambiamos el estado de SELinux de "enforcing" a "disabled". La línea debería quedar así:
b) Nombre de la máquina
Si durante la instalación no configuramos el nombre de host de nuestra máquina, o lo quisiéramos cambiar a futuro, se puede hacer con el siguiente comando:
c) Verificamos los servicios al inicio
Quien haya instalado otro patrón de instalación, o en caso de que existan otros servicios asociados en su máquina, pueden listar todos los que comenzarán durante el arranque del sistema con el siguiente comando:
Presionamos "q" para salir. en caso de querer desactivar un servicio, basta con ingresar:
Existe una capa de compatibilidad para comandos anteriores.
Ya que actúa a muy bajo nivel (llamadas al kernel, red, etc.), afectando directamente el rendimiento de la máquina y por ende, cada proceso y servicio que corra en ella. Es necesario reiniciar para que la configuración surja efecto.
Código:
# vi /etc/sysconfig/selinux
Cambiamos el estado de SELinux de "enforcing" a "disabled". La línea debería quedar así:
Código:
SELINUX=disabled
b) Nombre de la máquina
Si durante la instalación no configuramos el nombre de host de nuestra máquina, o lo quisiéramos cambiar a futuro, se puede hacer con el siguiente comando:
Código:
# hostnamectl set-hostname home-proxy
c) Verificamos los servicios al inicio
Quien haya instalado otro patrón de instalación, o en caso de que existan otros servicios asociados en su máquina, pueden listar todos los que comenzarán durante el arranque del sistema con el siguiente comando:
Código:
# systemctl list-unit-files | grep enabled | less
Presionamos "q" para salir. en caso de querer desactivar un servicio, basta con ingresar:
Código:
# systemctl disable serviciox
Existe una capa de compatibilidad para comandos anteriores.
3) CONFIGURACIÓN DE RED
En esta ocasión utilizaremos NetworkManager,. Aunque también se puede desactivar, y utilizar network.service para que lea nuestros archivos de configuración hechos a mano.
a) Configuración de interfaces
Con la herramienta "nmtui" podemos configurar las interafces de red de forma sencilla. También pueden utilizar nmcli.
eth0 = Configuración IPv4 automática.
Ignoramos configuración para IPv6.
eth1 = Configuramos sólo la dirección IP (192.168.0.1/24)
Ignoramos configuración para IPv6.
En cada una, importante seleccionar la opción para conectar automáticamente.
b) Activar los perfiles
Luego de configurar cada interfaz. Con "nmtui" activamos y desactivamos los perfiles de configuraciones deseados, ingresando a "Activate a connection".
a) Configuración de interfaces
Con la herramienta "nmtui" podemos configurar las interafces de red de forma sencilla. También pueden utilizar nmcli.
eth0 = Configuración IPv4 automática.
Ignoramos configuración para IPv6.
eth1 = Configuramos sólo la dirección IP (192.168.0.1/24)
Ignoramos configuración para IPv6.
En cada una, importante seleccionar la opción para conectar automáticamente.
b) Activar los perfiles
Luego de configurar cada interfaz. Con "nmtui" activamos y desactivamos los perfiles de configuraciones deseados, ingresando a "Activate a connection".
4) ACTIVANDO EL ROUTER
a) Bit de forwarding
Para que nuestra máquina permita el paso de paquetes desde una red a otra, basándose en la tabla de rutas, activamos de forma permanente el parámetro del kernel para reenviar paquetes ipv4.
En versiones anteriores de RHEL (o CentOS), editábamos directamente el archivo /etc/sysctl.conf, sin embargo, dentro de los nuevos cambios y buenas prácticas, está el mandato de que sysctl.conf es parte del rpm, y que en una posible actualización, las configuraciones antiguas se pierdan (varios servicios incluyen esta lógica, como httpd, autofs, etc). Ojo que existe la retrocompatibilidad, por lo tanto si se edita el archivo directamente, también obtenemos los resultados deseados.
b) Firewalld
Nuestra interfaz por defecto para netfilter en RHEL 7 / CentOS 7 es firewalld. Configuraremos dos zonas, una interna (lan) y otra externa (wan), y haremos el enmascaramiento utilizando esta herramienta; si es más cómodo para alguien utilizar iptables, tan sólo desactive el servicio y active iptables (yum install iptables-services -y && systemctl stop firewalld ; systemctl disable firewalld && systemctl start iptables ; systemctl enable iptables).
Para el servicio de firewalld, utilizamos una herramienta llamada "firewall-cmd", con la cual realizamos los mandatos para configurar todo a gusto. Cuando se trata de crear reglas más complejas, existen métodos para introducir reglas de iptables sin perder las configuraciones creadas.
a) Primero, asignamos cada interfaz a una zona específica.
Comprobamos que lo anterior esté correctamente asignado.
En caso de que las interfaces estén todavía en la zona por defecto (public), como pasa con algunas tarjetas intel, hay que editar directamente los archivos de configuración y agregar la línea de zona:
b) Añadir el enmascaramiento
Para que todas las peticiones hacia la WAN sean realizadas utilizando NAT, designamos el masquerade en la zona externa.
Para que nuestra máquina permita el paso de paquetes desde una red a otra, basándose en la tabla de rutas, activamos de forma permanente el parámetro del kernel para reenviar paquetes ipv4.
Código:
# echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/10-forwarding.conf
En versiones anteriores de RHEL (o CentOS), editábamos directamente el archivo /etc/sysctl.conf, sin embargo, dentro de los nuevos cambios y buenas prácticas, está el mandato de que sysctl.conf es parte del rpm, y que en una posible actualización, las configuraciones antiguas se pierdan (varios servicios incluyen esta lógica, como httpd, autofs, etc). Ojo que existe la retrocompatibilidad, por lo tanto si se edita el archivo directamente, también obtenemos los resultados deseados.
b) Firewalld
Nuestra interfaz por defecto para netfilter en RHEL 7 / CentOS 7 es firewalld. Configuraremos dos zonas, una interna (lan) y otra externa (wan), y haremos el enmascaramiento utilizando esta herramienta; si es más cómodo para alguien utilizar iptables, tan sólo desactive el servicio y active iptables (yum install iptables-services -y && systemctl stop firewalld ; systemctl disable firewalld && systemctl start iptables ; systemctl enable iptables).
Para el servicio de firewalld, utilizamos una herramienta llamada "firewall-cmd", con la cual realizamos los mandatos para configurar todo a gusto. Cuando se trata de crear reglas más complejas, existen métodos para introducir reglas de iptables sin perder las configuraciones creadas.
a) Primero, asignamos cada interfaz a una zona específica.
Código:
# firewall-cmd --change-interface=eth0 --zone=external --permanent
# firewall-cmd --change-interface=eth1 --zone=internal --permanent
Comprobamos que lo anterior esté correctamente asignado.
Código:
# firewall-cmd --get-active-zones
En caso de que las interfaces estén todavía en la zona por defecto (public), como pasa con algunas tarjetas intel, hay que editar directamente los archivos de configuración y agregar la línea de zona:
Código:
# echo "ZONE=external" >> /etc/sysconfig/network-scripts/ifcfg-eth0; echo "ZONE=internal" >> /etc/sysconfig/network-scripts/ifcfg-eth1; ifdown eth0 && ifup eth0 && ifdown eth1 && ifup eth1
b) Añadir el enmascaramiento
Para que todas las peticiones hacia la WAN sean realizadas utilizando NAT, designamos el masquerade en la zona externa.
Código:
# firewall-cmd --add-masquerade --zone=external --permanent
# firewall-cmd --query-masquerade --zone=external
5) Configurando el caché DNS
La solución recomendada por Red Hat para el servicio de DNS caché, es Unbound. Si alguien gusta de otro programa para este efecto (BIND, dnsmasq, etc), bienvenido sea.
a) Instalación y configuración del servicio
Procedemos a instalar la paquetería necesaria.
Configuramos el servicio para que sea iniciado durante el arranque.
b) Configuración DNSSEC
Para crear de forma automática las llaves y certificados de validación DNSSEC para las peticiones/respuestas que Unbound realiza, usaremos el siguiente comando.
Ojo, Unbound trabaja con estándares de seguridad por encima de otro software por defecto, por lo tanto, el no realizar el paso anterior puede provocar problemas con las solicitudes DNS.
c) Editar el archivo de configuración
La configuración de Unbound está en un solo archivo, lo editaremos.
Añadiremos los siguientes parámetros. Considerando el NS de google como nuestro forwarder.
Chequeamos la configuración.
Iniciamos el servicio, y lo dejamos listo para iniciar en el arranque.
Añadimos las reglas en el firewall.
a) Instalación y configuración del servicio
Procedemos a instalar la paquetería necesaria.
Código:
# yum install unbound -y
Configuramos el servicio para que sea iniciado durante el arranque.
Código:
# systemctl enable unbound
b) Configuración DNSSEC
Para crear de forma automática las llaves y certificados de validación DNSSEC para las peticiones/respuestas que Unbound realiza, usaremos el siguiente comando.
Código:
# unbound-control-setup
Ojo, Unbound trabaja con estándares de seguridad por encima de otro software por defecto, por lo tanto, el no realizar el paso anterior puede provocar problemas con las solicitudes DNS.
c) Editar el archivo de configuración
La configuración de Unbound está en un solo archivo, lo editaremos.
Código:
# vi /etc/unbound/unbound.conf
Añadiremos los siguientes parámetros. Considerando el NS de google como nuestro forwarder.
Código:
interface: 192.168.0.1
access-control: 192.168.0.0/24 allow
forward-zone:
name: "."
forward-addr: 8.8.8.8
Chequeamos la configuración.
Código:
# unbound-checkconf
unbound-checkconf: no errors in /etc/unbound/unbound.conf
Iniciamos el servicio, y lo dejamos listo para iniciar en el arranque.
Código:
# systemctl start unbound
# systemctl status unbound
Añadimos las reglas en el firewall.
Código:
# firewall-cmd --add-service=dns --permanent
# firewall-cmd --reload
6) Configurando el servicio DHCP
a) Instalación de la paquetería
b) Archivo de Configuración
Editamos manualmente el archivo de configuración.
Ingresamos la siguientes opciones. El nombre de dominio "casa.cl" puede ser reemplazado a gusto.
c) Inicio del servicio y reglas de firewall
Para iniciar el servicio de inmediato, y luego activar el mismo cuando arranque el sistema, ingresamos.
Añadimos las reglas del firewall.
Código:
#yum install dhcp
b) Archivo de Configuración
Editamos manualmente el archivo de configuración.
Código:
# vi /etc/dhcp/dhcpd.conf
Ingresamos la siguientes opciones. El nombre de dominio "casa.cl" puede ser reemplazado a gusto.
Código:
authoritative;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.100 192.168.0.200;
option domain-name-servers 192.168.0.1, 8.8.8.8;
option domain-name "casa.cl";
option routers 192.168.0.1;
option broadcast-address 192.168.0.255;
default-lease-time 600;
max-lease-time 7200;
}
c) Inicio del servicio y reglas de firewall
Para iniciar el servicio de inmediato, y luego activar el mismo cuando arranque el sistema, ingresamos.
Código:
# systemctl start dhcpd
# systemctl enable dhcpd
Añadimos las reglas del firewall.
Código:
# firewall-cmd --add-service=dhcp --zone=internal --permanent
# firewall-cmd --reload
7) Configuración de squid (proxy)
a) Instalación del servicio
b) Editando el archivo de configuración
Con nuestro editor favorito, ingresamos a.
Los parámetros a editar tienen directa relación con el espacio de almacenamiento de nuestra máquina, siendo, por ejemplo, la memoria caché utilizada 3/4 de la RAM de nuestro equipo.
La acl localnet viene por defecto con varias redes privadas por defecto, hacemos match en la nuestra, que posee máscara 24.
En esta versión de squid, para trabajar en modo transparente, incluímos dos sockets con el parámetro http_port.
c) Reglas del firewall
Para que el proxy trabaje de manera transparente (sin intervención en las máquinas de los clientes), realizamos una redirección de puertos interna con nuestro firewall.
Código:
# yum install squid -y
b) Editando el archivo de configuración
Con nuestro editor favorito, ingresamos a.
Código:
# vi /etc/squid/squid.conf
Los parámetros a editar tienen directa relación con el espacio de almacenamiento de nuestra máquina, siendo, por ejemplo, la memoria caché utilizada 3/4 de la RAM de nuestro equipo.
La acl localnet viene por defecto con varias redes privadas por defecto, hacemos match en la nuestra, que posee máscara 24.
Código:
acl localnet src 192.168.0.0/24
http_access allow localnet
http_port 192.168.0.1:3128 intercept
http_port 192.168.0.1:8080
cache_dir ufs /var/spool/squid 10000 16 256
visible_hostname home-proxy.casa.cl
cache_mem 768 MB
maximum_object_size_in_memory 128 KB
maximum_object_size 10240 KB
En esta versión de squid, para trabajar en modo transparente, incluímos dos sockets con el parámetro http_port.
c) Reglas del firewall
Para que el proxy trabaje de manera transparente (sin intervención en las máquinas de los clientes), realizamos una redirección de puertos interna con nuestro firewall.
Código:
# firewall-cmd --add-forward-port=port=80:proto=tcp:toport=3128:toaddr=192.168.0.1 --zone=internal --permanent
# firewall-cmd --add-port=3128/tcp --zone=internal --permanent
# firewall-cmd --reload
FIN
Última modificación: