public:guifinet:doc:recetas:guifinetservidorcompleto
Diferencias
Muestra las diferencias entre dos versiones de la página.
Próxima revisión | Revisión previa | ||
public:guifinet:doc:recetas:guifinetservidorcompleto [2010/03/24 11:05] – creado admin | public:guifinet:doc:recetas:guifinetservidorcompleto [2012/01/07 10:50] (actual) – boronat | ||
---|---|---|---|
Línea 1: | Línea 1: | ||
+ | ====== Cómo Instalar y configurar un servidor completo guifi.net ====== | ||
+ | ** ¡¡¡¡ Documento en construcción !!!! ** | ||
+ | |||
+ | |||
+ | ====== Servicios a instalar ====== | ||
+ | |||
+ | ===== Sistema base Debian o Ubuntu ===== | ||
+ | |||
+ | ==== Debian ==== | ||
+ | |||
+ | |||
+ | La versión que vamos a instalar es la debian estable, a fecha 7/3/2010 es la 5.0.4, cuyo nombre en código es //lenny//. Se pueden encontrar instrucciones de instalación en http:// | ||
+ | |||
+ | ==== Ubuntu ==== | ||
+ | |||
+ | Utilizando el liveCD ... | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== Particionado del disco ==== | ||
+ | |||
+ | |||
+ | Durante la instalación pedirá que indiquemos las particiones a realizar, el particionado depende de las necesidades y del equipo del que se disponga, como ejemplo en el servidor de '' | ||
+ | |||
+ | < | ||
+ | mperez@castello: | ||
+ | S.ficheros | ||
+ | / | ||
+ | tmpfs 1037436 | ||
+ | udev | ||
+ | tmpfs 1037436 | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | ==== Actualizar el sistema ==== | ||
+ | |||
+ | Una vez instalado conviene actualizar los paquetes utilizando el Gestor de Actualizaciones del entorno gráfico o desde una consola mediante las órdenes: | ||
+ | |||
+ | apt-get update | ||
+ | apt-get upgrade | ||
+ | |||
+ | ==== Instalar el servidor ssh ==== | ||
+ | |||
+ | Para poder conectarse por ssh remotamente hay que instalar el servidor | ||
+ | |||
+ | apt-get install openssh-server | ||
+ | |||
+ | ===== Activar el forwarding permanente ===== | ||
+ | |||
+ | Si el servidor tiene que actuar como router hay que activar el forwarding. | ||
+ | |||
+ | Editar el fichero ''/ | ||
+ | |||
+ | net.ipv4.ip_forward = 1 | ||
+ | |||
+ | normalmente esta linea estará comentada, hay que descomentarla. | ||
+ | |||
+ | Esto hace que el forwarding se active al arrancar, si sólo queremos hacer una prueba hay que hacer: | ||
+ | |||
+ | echo " | ||
+ | |||
+ | ===== Cortafuegos ===== | ||
+ | |||
+ | Instalar el siguiente script (adaptandolo si es necesario) | ||
+ | |||
+ | < | ||
+ | #!/bin/sh | ||
+ | IPTABLES=/ | ||
+ | |||
+ | # 1) Definir la norma de cada cadena básica | ||
+ | $IPTABLES -P INPUT ACCEPT | ||
+ | $IPTABLES -P FORWARD ACCEPT | ||
+ | $IPTABLES -P OUTPUT ACCEPT | ||
+ | |||
+ | $IPTABLES -F | ||
+ | |||
+ | #$IPTABLES -t nat -A POSTROUTING -o eth0 -j SNAT --to 10.228.130.162 | ||
+ | $IPTABLES -t nat -A POSTROUTING -s 192.168.1.0/ | ||
+ | |||
+ | # 2) Aceptar paquetes en estado establecido y relacionado | ||
+ | $IPTABLES -A INPUT -i lo -j ACCEPT | ||
+ | $IPTABLES -A INPUT -m state --state ESTABLISHED, | ||
+ | |||
+ | $IPTABLES -I INPUT -p icmp -j ACCEPT | ||
+ | |||
+ | $IPTABLES -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT | ||
+ | $IPTABLES -A INPUT -m state --state NEW -p tcp --dport 25 -j ACCEPT | ||
+ | $IPTABLES -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT | ||
+ | $IPTABLES -A INPUT -m state --state NEW -p udp --dport 53 -j ACCEPT | ||
+ | $IPTABLES -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT | ||
+ | |||
+ | # Para el SNMP | ||
+ | $IPTABLES -A INPUT -m state --state NEW -p udp --dport 161 -j ACCEPT | ||
+ | |||
+ | # Para quagga | ||
+ | $IPTABLES | ||
+ | |||
+ | $IPTABLES -A INPUT -j DROP | ||
+ | </ | ||
+ | |||
+ | y hacerlo ejecutable | ||
+ | |||
+ | chmod 755 firewall | ||
+ | |||
+ | Para parar el firewall hay que ejecutar: | ||
+ | |||
+ | iptables -F | ||
+ | iptables -F -t nat | ||
+ | |||
+ | ===== Webmin ===== | ||
+ | |||
+ | Descargar el fichero http:// | ||
+ | |||
+ | dpkg --install webmin_1.510_all.deb | ||
+ | |||
+ | Si existen fallos de dependencias, | ||
+ | |||
+ | < | ||
+ | apt-get -f install | ||
+ | </ | ||
+ | |||
+ | Ahora ya se puede acceder a webmin con un navegador en la dirección '' | ||
+ | |||
+ | Se puede configurar el idioma de la interfaz de webmin en '' | ||
+ | |||
+ | También se puede limitar el acceso en '' | ||
+ | |||
+ | |||
+ | Si se ha puesto en marcha el cortafuegos y se quiere dar acceso desde fuera, hay que abrir el puerto 10000: | ||
+ | |||
+ | $IPTABLES -A INPUT -m state --state NEW -p tcp --dport 10000 -j ACCEPT | ||
+ | | ||
+ | [[http:// | ||
+ | |||
+ | ===== Servidor web Apache ===== | ||
+ | |||
+ | |||
+ | < | ||
+ | root@ftp2000-desktop: | ||
+ | Leyendo lista de paquetes... Hecho | ||
+ | Creando árbol de dependencias | ||
+ | Leyendo la información de estado... Hecho | ||
+ | Se instalaron de forma automática los siguientes paquetes y ya no son necesarios. | ||
+ | linux-headers-2.6.31-14 linux-headers-2.6.31-14-generic | ||
+ | Utilice «apt-get autoremove» para eliminarlos. | ||
+ | Se instalarán los siguientes paquetes extras: | ||
+ | apache2-mpm-worker apache2-utils apache2.2-bin apache2.2-common libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap | ||
+ | Paquetes sugeridos: | ||
+ | apache2-doc apache2-suexec apache2-suexec-custom | ||
+ | Se instalarán los siguientes paquetes NUEVOS: | ||
+ | apache2 apache2-mpm-worker apache2-utils apache2.2-bin apache2.2-common libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap | ||
+ | 0 actualizados, | ||
+ | Necesito descargar 2013kB de archivos. | ||
+ | Se utilizarán 6738kB de espacio de disco adicional después de esta operación. | ||
+ | ¿Desea continuar [S/ | ||
+ | Des:1 http:// | ||
+ | Des:2 http:// | ||
+ | Des:3 http:// | ||
+ | Des:4 http:// | ||
+ | Des:5 http:// | ||
+ | Des:6 http:// | ||
+ | Des:7 http:// | ||
+ | Des:8 http:// | ||
+ | Des:9 http:// | ||
+ | Descargados 2013kB en 18s (111kB/s) | ||
+ | Seleccionando el paquete libapr1 previamente no seleccionado. | ||
+ | (Leyendo la base de datos ... 00% | ||
+ | 152401 ficheros y directorios instalados actualmente.) | ||
+ | Desempaquetando libapr1 (de .../ | ||
+ | Seleccionando el paquete libaprutil1 previamente no seleccionado. | ||
+ | Desempaquetando libaprutil1 (de .../ | ||
+ | Seleccionando el paquete libaprutil1-dbd-sqlite3 previamente no seleccionado. | ||
+ | Desempaquetando libaprutil1-dbd-sqlite3 (de .../ | ||
+ | Seleccionando el paquete libaprutil1-ldap previamente no seleccionado. | ||
+ | Desempaquetando libaprutil1-ldap (de .../ | ||
+ | Seleccionando el paquete apache2.2-bin previamente no seleccionado. | ||
+ | Desempaquetando apache2.2-bin (de .../ | ||
+ | Seleccionando el paquete apache2-utils previamente no seleccionado. | ||
+ | Desempaquetando apache2-utils (de .../ | ||
+ | Seleccionando el paquete apache2.2-common previamente no seleccionado. | ||
+ | Desempaquetando apache2.2-common (de .../ | ||
+ | Seleccionando el paquete apache2-mpm-worker previamente no seleccionado. | ||
+ | Desempaquetando apache2-mpm-worker (de .../ | ||
+ | Seleccionando el paquete apache2 previamente no seleccionado. | ||
+ | Desempaquetando apache2 (de .../ | ||
+ | Procesando disparadores para man-db ... | ||
+ | Procesando disparadores para ufw ... | ||
+ | Procesando disparadores para ureadahead ... | ||
+ | Configurando libapr1 (1.3.8-1) ... | ||
+ | |||
+ | Configurando libaprutil1 (1.3.9+dfsg-1ubuntu1) ... | ||
+ | |||
+ | Configurando libaprutil1-dbd-sqlite3 (1.3.9+dfsg-1ubuntu1) ... | ||
+ | Configurando libaprutil1-ldap (1.3.9+dfsg-1ubuntu1) ... | ||
+ | Configurando apache2.2-bin (2.2.12-1ubuntu2.2) ... | ||
+ | Configurando apache2-utils (2.2.12-1ubuntu2.2) ... | ||
+ | Configurando apache2.2-common (2.2.12-1ubuntu2.2) ... | ||
+ | Enabling site default. | ||
+ | Enabling module alias. | ||
+ | Enabling module autoindex. | ||
+ | Enabling module dir. | ||
+ | Enabling module env. | ||
+ | Enabling module mime. | ||
+ | Enabling module negotiation. | ||
+ | Enabling module setenvif. | ||
+ | Enabling module status. | ||
+ | Enabling module auth_basic. | ||
+ | Enabling module deflate. | ||
+ | Enabling module authz_default. | ||
+ | Enabling module authz_user. | ||
+ | Enabling module authz_groupfile. | ||
+ | Enabling module authn_file. | ||
+ | Enabling module authz_host. | ||
+ | |||
+ | Configurando apache2-mpm-worker (2.2.12-1ubuntu2.2) ... | ||
+ | * Starting web server apache2 | ||
+ | [ OK ] | ||
+ | |||
+ | Configurando apache2 (2.2.12-1ubuntu2.2) ... | ||
+ | |||
+ | Procesando disparadores para libc-bin ... | ||
+ | ldconfig deferred processing now taking place | ||
+ | </ | ||
+ | |||
+ | |||
+ | Falta hacer lo del certificado que indican en http:// | ||
+ | |||
+ | ===== proxy cache / web cache ===== | ||
+ | |||
+ | Siguiendo los pasos de http:// | ||
+ | |||
+ | < | ||
+ | root@ftp2000-desktop: | ||
+ | Leyendo lista de paquetes... Hecho | ||
+ | Creando árbol de dependencias | ||
+ | Leyendo la información de estado... Hecho | ||
+ | Se instalaron de forma automática los siguientes paquetes y ya no son necesarios. | ||
+ | linux-headers-2.6.31-14 linux-headers-2.6.31-14-generic | ||
+ | Utilice «apt-get autoremove» para eliminarlos. | ||
+ | Se instalarán los siguientes paquetes extras: | ||
+ | squid-common squid-langpack | ||
+ | Paquetes sugeridos: | ||
+ | squidclient squid-cgi logcheck-database resolvconf winbind | ||
+ | Se instalarán los siguientes paquetes NUEVOS: | ||
+ | squid squid-common squid-langpack | ||
+ | 0 actualizados, | ||
+ | Necesito descargar 1346kB de archivos. | ||
+ | Se utilizarán 8651kB de espacio de disco adicional después de esta operación. | ||
+ | ¿Desea continuar [S/ | ||
+ | Des:1 http:// | ||
+ | Des:2 http:// | ||
+ | Des:3 http:// | ||
+ | Descargados 1346kB en 17s (78,1kB/s) | ||
+ | Preconfigurando paquetes ... | ||
+ | Seleccionando el paquete squid-langpack previamente no seleccionado. | ||
+ | (Leyendo la base de datos ... 00% | ||
+ | 152972 ficheros y directorios instalados actualmente.) | ||
+ | Desempaquetando squid-langpack (de .../ | ||
+ | Seleccionando el paquete squid-common previamente no seleccionado. | ||
+ | Desempaquetando squid-common (de .../ | ||
+ | Seleccionando el paquete squid previamente no seleccionado. | ||
+ | Desempaquetando squid (de .../ | ||
+ | Procesando disparadores para ureadahead ... | ||
+ | Procesando disparadores para man-db ... | ||
+ | Configurando squid-langpack (3.HEAD.20090706-1ubuntu1) ... | ||
+ | Configurando squid-common (2.7.STABLE6-2ubuntu2.2) ... | ||
+ | |||
+ | Configurando squid (2.7.STABLE6-2ubuntu2.2) ... | ||
+ | Creating squid spool directory structure | ||
+ | 2010/03/18 14:01:15| Creating Swap Directories | ||
+ | * Restarting Squid HTTP proxy squid [ OK ] | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Configuración utilizando webmin ==== | ||
+ | |||
+ | Desde un terminal crear el directorio / | ||
+ | |||
+ | mkdir /usr/etc | ||
+ | touch / | ||
+ | |||
+ | |||
+ | Acceder con el navegador a webmin en '' | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Seleccionar la opción '' | ||
+ | |||
+ | < | ||
+ | Programa de autenticación básica / | ||
+ | Número de programas de autentificación 5 | ||
+ | Tiempo de caché de autentificación 2 horas | ||
+ | Hechizo de autentificación | ||
+ | </ | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Al darle al botón '' | ||
+ | |||
+ | {{: | ||
+ | |||
+ | y en el menú '' | ||
+ | |||
+ | {{: | ||
+ | |||
+ | En la pestaña '' | ||
+ | |||
+ | {{: | ||
+ | |||
+ | En la lista se ha de bajar la opción '' | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Por último hay que pulsar el enlace «Aplicar Cambios» que aparece en la parte superior derecha. | ||
+ | |||
+ | |||
+ | ===== Otros ===== | ||
+ | |||
+ | * QoS: tc?? | ||
+ | * servidor de túneles: Openvpn | ||
+ | * Servidor voip y videoconferencia: | ||
+ | * Servidor de gráficas guifi.net | ||
+ | * Autenticación: | ||
+ | * DNS: PowerDNS? | ||
+ | * Copias de seguridad (sistema y logs): backup2l?? | ||
+ | * enrutamiento: | ||
+ | * SNMP (si el también hace de router, ha de enviar las gráficas). | ||
+ | |||
+ | ====== Notas de instalación en servidores previos ====== | ||
+ | |||
+ | Instalación de un servidor utilizando un ordenador viejo (portatil): | ||
+ | |||
+ | * El portátil está conectado por rj45 a un buffalo, dos nanos asociadas a dos APs (La Coma y el IESMiquelPeris) en modo bridge. | ||
+ | |||
+ | * Asociar cada nano con su ap y ponerla en modo bridge. Esto tiene algunos problemas, por ejemplo cuando un ordenador de la red interna pide una ip por dhcp, le puede contestar alguno de los APs de guifi.net y asignarle una IP. Por el momento lo soluciono dando ips fijas :-( | ||
+ | |||
+ | * Ponerle la ip del rango del AP al PC (si sólo tiene una interfaz hay que crearla como un alias). Hacerlo permanente en interfaces. | ||
+ | |||
+ | < | ||
+ | # This file describes the network interfaces available on your system | ||
+ | # and how to activate them. For more information, | ||
+ | |||
+ | # The loopback network interface | ||
+ | auto lo | ||
+ | iface lo inet loopback | ||
+ | |||
+ | # The primary network interface | ||
+ | |||
+ | #iface eth0 inet dhcp | ||
+ | #auto eth0 | ||
+ | |||
+ | auto eth0 | ||
+ | iface eth0 inet static | ||
+ | address 192.168.1.157 | ||
+ | netmask 255.255.255.0 | ||
+ | network 192.168.1.0 | ||
+ | broadcast 192.168.1.255 | ||
+ | post-up ifup eth0:2 | ||
+ | pre-down ifdown eth0:2 | ||
+ | post-up ifup eth0:3 | ||
+ | pre-down ifdown eth0:3 | ||
+ | |||
+ | |||
+ | iface eth0:2 inet static | ||
+ | address 10.228.152.37 | ||
+ | netmask 255.255.255.224 | ||
+ | network 10.228.152.32 | ||
+ | broadcast 10.228.152.63 | ||
+ | gateway 10.228.152.33 | ||
+ | |||
+ | |||
+ | iface eth0:3 inet static | ||
+ | address 10.228.144.62 | ||
+ | netmask 255.255.255.224 | ||
+ | network 10.228.144.32 | ||
+ | broadcast 10.228.144.63 | ||
+ | </ | ||
+ | |||
+ | las lineas | ||
+ | |||
+ | < | ||
+ | post-up ifup eth0:2 | ||
+ | pre-down ifdown eth0:2 | ||
+ | post-up ifup eth0:3 | ||
+ | pre-down ifdown eth0:3 | ||
+ | </ | ||
+ | |||
+ | no son en principio necesarias, pero en algun caso no levanta los alias si no se ponen. | ||
+ | |||
+ | * Hacer NAT de la red privada: | ||
+ | |||
+ | < | ||
+ | iptables -t nat -A POSTROUTING -s 192.168.1.0/ | ||
+ | </ | ||
+ | |||
+ | y hacerlo permanente (También se puede poner junto al firewall del punto posterior) | ||
+ | |||
+ | editar ''/ | ||
+ | |||
+ | < | ||
+ | iface eth0 inet static | ||
+ | address 192.168.0.200 | ||
+ | netmask 255.255.255.0 | ||
+ | network 192.168.0.0 | ||
+ | post-up iptables -A POSTROUTING -t nat -j MASQUERADE -s 192.168.0.0/ | ||
+ | post-up echo 1 > / | ||
+ | </ | ||
+ | |||
+ | // | ||
+ | |||
+ | |||
+ | * Firewall en el router (pendiente) | ||
+ | < | ||
+ | #!/bin/sh | ||
+ | IPTABLES=/ | ||
+ | |||
+ | # 1) Definir la norma de cada cadena básica | ||
+ | $IPTABLES -P INPUT ACCEPT | ||
+ | $IPTABLES -P FORWARD ACCEPT | ||
+ | $IPTABLES -P OUTPUT ACCEPT | ||
+ | |||
+ | $IPTABLES -F | ||
+ | |||
+ | #$IPTABLES -t nat -A POSTROUTING -o eth0 -j SNAT --to 10.228.130.162 | ||
+ | $IPTABLES -t nat -A POSTROUTING -s 192.168.1.0/ | ||
+ | |||
+ | # 2) Aceptar paquetes en estado establecido y relacionado | ||
+ | $IPTABLES -A INPUT -i lo -j ACCEPT | ||
+ | $IPTABLES -A INPUT -m state --state ESTABLISHED, | ||
+ | |||
+ | $IPTABLES -I INPUT -p icmp -j ACCEPT | ||
+ | |||
+ | $IPTABLES -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT | ||
+ | $IPTABLES -A INPUT -m state --state NEW -p tcp --dport 25 -j ACCEPT | ||
+ | $IPTABLES -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT | ||
+ | $IPTABLES -A INPUT -m state --state NEW -p udp --dport 53 -j ACCEPT | ||
+ | $IPTABLES -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPT | ||
+ | |||
+ | # Para el SNMP | ||
+ | $IPTABLES -A INPUT -m state --state NEW -p udp --dport 161 -j ACCEPT | ||
+ | |||
+ | # Para quagga | ||
+ | $IPTABLES | ||
+ | |||
+ | $IPTABLES -A INPUT -j DROP | ||
+ | </ | ||
+ | |||
+ | y hacerlo permanente. | ||
+ | |||
+ | * Instalar quagga, configurar el zebra y el ospf. El modo bridge de las nanos, | ||
+ | parece que sí que pasan los hellos pero no las rutas. Hay que definir que la | ||
+ | red no es multicast e indocar los vecinos (ver | ||
+ | http:// | ||
+ | http:// | ||
+ | |||
+ | Ficheros en ''/ | ||
+ | |||
+ | < | ||
+ | coscoll:/ | ||
+ | zebra=yes | ||
+ | bgpd=no | ||
+ | ospfd=yes | ||
+ | ospf6d=no | ||
+ | ripd=no | ||
+ | ripngd=no | ||
+ | isisd=no | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | coscoll:/ | ||
+ | ! -*- zebra -*- | ||
+ | ! | ||
+ | ! zebra sample configuration file | ||
+ | ! | ||
+ | ! $Id: zebra.conf.sample, | ||
+ | ! | ||
+ | hostname serradal. | ||
+ | password zebraaa | ||
+ | enable password zebraaa | ||
+ | ! | ||
+ | ! Interface' | ||
+ | ! | ||
+ | !interface lo | ||
+ | ! description test of desc. | ||
+ | ! | ||
+ | !interface sit0 | ||
+ | ! multicast | ||
+ | |||
+ | interface eth0 | ||
+ | description virtual para el enlace con al coma | ||
+ | |||
+ | ! | ||
+ | ! Static default route sample. | ||
+ | ! | ||
+ | !ip route 0.0.0.0/0 10.228.152.33 | ||
+ | ! | ||
+ | |||
+ | log file / | ||
+ | </ | ||
+ | |||
+ | |||
+ | < | ||
+ | coscoll:/ | ||
+ | ! -*- ospf -*- | ||
+ | ! | ||
+ | ! OSPFd sample configuration file | ||
+ | ! | ||
+ | ! | ||
+ | hostname serradal | ||
+ | password zebraaa | ||
+ | enable password zebraaa | ||
+ | ! | ||
+ | interface eth0 | ||
+ | ! ip ospf network point-to-point | ||
+ | ip ospf network non-broadcast | ||
+ | |||
+ | router ospf | ||
+ | ospf router-id 10.228.152.37 | ||
+ | network 10.228.152.32/ | ||
+ | network 10.228.144.32/ | ||
+ | neighbor 10.228.152.33 | ||
+ | neighbor 10.228.144.33 | ||
+ | ! | ||
+ | log file / | ||
+ | </ | ||
+ | |||
+ | * snmp: http:// | ||
+ | |||
+ | Otros enlaces interesantes sobre snmp y herramientas de visualización: | ||
+ | |||
+ | http:// | ||
+ | |||
+ | http:// | ||
+ | |||
+ | |||
+ | ====== Enlaces ====== |