Alojar un sitio web en el enrutador de su hogar

Durante mucho tiempo he querido “tocarme las manos” con los servicios de Internet configurando un servidor web desde cero y liberándolo en Internet. En este artículo quiero compartir mi experiencia al transformar un enrutador doméstico de un dispositivo altamente funcional en un servidor casi completo.

Todo comenzó con el hecho de que el enrutador TP-Link TL-WR1043ND, que había funcionado fielmente, ya no satisfacía las necesidades de una red doméstica; quería una banda de 5 GHz y acceso rápido a los archivos en un dispositivo de almacenamiento conectado al enrutador. . Después de revisar foros especializados (4pda, ixbt), sitios con reseñas y observar la variedad de tiendas locales, decidí comprar Keenetic Ultra.

Las buenas críticas de los propietarios favorecieron este dispositivo en particular:

  • no hay problemas de sobrecalentamiento (aquí tuvimos que abandonar los productos Asus);
  • confiabilidad operativa (aquí taché TP-Link);
  • fácil de configurar (tenía miedo de no poder manejarlo y taché Microtik).

Tuve que aceptar las desventajas:

  • sin WiFi6, quería llevarme equipo con reserva para el futuro;
  • 4 puertos LAN, quería más, pero esta ya no es una categoría doméstica.

Como resultado, obtuvimos este "servidor":

Alojar un sitio web en el enrutador de su hogar

  • a la izquierda está el terminal óptico de Rostelecom;
  • a la derecha está nuestro enrutador experimental;
  • un SSD m.2 de 128 GB por ahí, colocado en una caja USB3 de Aliexpress, está conectado al enrutador con un cable, ahora está cuidadosamente montado en la pared;
  • en primer plano hay un cable de extensión con enchufes desconectados independientemente, el cable que va a un UPS económico;
  • al fondo hay un montón de cables de par trenzado; en la etapa de renovación del apartamento, inmediatamente planeé enchufes RJ45 en los lugares donde se suponía que debía ubicarse el equipo, para no depender de que el WiFi estuviera contaminado.

Entonces, tenemos el equipo, necesitamos configurarlo:

Alojar un sitio web en el enrutador de su hogar

  • La configuración inicial del enrutador tarda unos 2 minutos, indicamos los parámetros de conexión al proveedor (mi terminal óptico cambia al modo puente, la conexión PPPoE levanta el enrutador), el nombre de la red WiFi y la contraseña, básicamente eso es todo. , el enrutador se inicia y funciona.

Alojar un sitio web en el enrutador de su hogar

Configuramos el reenvío de puertos externos a los puertos del propio enrutador en la sección "Reglas de red - Reenvío":

Alojar un sitio web en el enrutador de su hogar

Alojar un sitio web en el enrutador de su hogar

Ahora podemos pasar a la parte “avanzada”, lo que quería del router:

  1. funcionalidad de un pequeño NAS para una red doméstica;
  2. realizar funciones de servidor web para varias páginas privadas;
  3. Funcionalidad de nube personal para acceder a datos personales desde cualquier parte del mundo.

El primero se implementa utilizando herramientas integradas, sin requerir mucho esfuerzo:

  • Tomamos una unidad destinada a esta función (unidad flash, tarjeta de memoria en un lector de tarjetas, disco duro o SSD en una caja externa y la formateamos en Ext4 usando MiniTool Partition Wizard Edición gratuita (No tengo una computadora con Linux a mano, es posible con herramientas integradas). Según tengo entendido, durante el funcionamiento el sistema solo escribe registros en la unidad flash, por lo que si los limita después de configurar el sistema, también puede usar tarjetas de memoria si planea escribir mucho y con frecuencia en la unidad: SSD o El disco duro es mejor.

Alojar un sitio web en el enrutador de su hogar

Después de esto, conectamos la unidad al enrutador y lo observamos en la pantalla del monitor del sistema.

Alojar un sitio web en el enrutador de su hogar

Haga clic en "Unidades USB e impresoras" en la sección "Aplicaciones" y configure el recurso compartido en la sección "Red de Windows":

Alojar un sitio web en el enrutador de su hogar

Y tenemos un recurso de red que se puede utilizar desde ordenadores con Windows, conectándose como disco si es necesario: net use y:\192.168.1.1SSD /persistent:yes

La velocidad de un NAS tan improvisado es suficiente para uso doméstico: por cable utiliza todo el gigabit, por WiFi la velocidad es de unos 400-500 megabits.

Alojar un sitio web en el enrutador de su hogar

Configurar el almacenamiento es uno de los pasos necesarios para configurar el servidor, entonces necesitamos:
- comprar un dominio y una dirección IP estática (puedes prescindir de esto usando DNS dinámico, pero yo ya tenía una IP estática, por lo que resultó ser más fácil de usar servicios gratuitos de Yandex - delegando el dominio allí, recibimos hosting DNS y correo en nuestro dominio);

Alojar un sitio web en el enrutador de su hogar

- configurar servidores DNS y agregue registros A que apunten a su IP:

Alojar un sitio web en el enrutador de su hogar

Se necesitan varias horas para que la configuración de delegación de dominio y DNS surta efecto, por lo que estamos configurando el enrutador simultáneamente.

Primero, necesitamos instalar el repositorio de Entware, desde el cual podemos instalar los paquetes necesarios en el enrutador. me aproveché esta instrucción, simplemente no cargó el paquete de instalación a través de FTP, sino que creó una carpeta directamente en la unidad de red previamente conectada y copió el archivo allí de la forma habitual.

Habiendo obtenido acceso a través de SSH, cambie la contraseña con el comando passwd e instale todos los paquetes necesarios con el comando opkg install [nombres de paquetes]:

Alojar un sitio web en el enrutador de su hogar

Durante la instalación, se instalaron los siguientes paquetes en el enrutador (el resultado del comando opkg list-installed):

Lista de paquetes
fiesta - 5.0-3
caja ocupada - 1.31.1-1
paquete ca - 20190110-2
certificados-ca - 20190110-2
coreutils - 8.31-1
coreutils-mktemp - 8.31-1
cron - 4.1-3
rizo - 7.69.0-1
difutils - 3.7-2
soltar oso - 2019.78-3
lanzamiento de software - 1.0-2
encontrarutils - 4.7.0-1
glib2 - 2.58.3-5
grep - 3.4-1
ldconfig - 2.27-9
libattr - 2.4.48-2
libblkid - 2.35.1-1
libc - 2.27-9
libcurl - 7.69.0-1
libffi - 3.2.1-4
libgcc-8.3.0-9
libiconv-completo - 1.11.1-4
libintl-completo - 0.19.8.1-2
liblua - 5.1.5-7
libbedtls - 2.16.5-1
montaje de biblioteca - 2.35.1-1
libnmaldiciones - 6.2-1
libncursesw - 6.2-1
libndm - 1.1.10-1a
libopenssl - 1.1.1d-2
libopenssl-conf - 1.1.1d-2
libcap - 1.9.1-2
libcre - 8.43-2
libpcre2 - 10.34-1
hilolibp - 2.27-9
línea libre - 8.0-1a
libre - 2.27-9
libslang2 - 2.3.2-4
libsh2 - 1.9.0-2
libsp-8.3.0-9
libstdcpp - 8.3.0-9
libuid - 2.35.1-1
libxml2 - 2.9.10-1
configuraciones regionales - 2.27-9
mc - 4.8.23-2
ndmq - 1.0.2-5a
nginx-1.17.8-1
openssl-util - 1.1.1d-2
opkg — 2019-06-14-dcbc142e-2
opt-ndmsv2 - 1.0-12
php7-7.4.3-1
php7-mod-openssl - 7.4.3-1
caja pobre - 1.31.1-2
información terminológica - 6.2-1
zlib - 1.2.11-3
zonainfo-asia - 2019c-1
zonainfo-europa - 2019c-1

Quizás había algo superfluo aquí, pero había mucho espacio en el disco, así que no me molesté en mirarlo.

Después de instalar los paquetes, configuramos nginx, lo probé con dos dominios: el segundo está configurado con https y por ahora hay un código auxiliar. Se utilizan los puertos internos 81 y 433 en lugar de 80 y 443, ya que el panel de administración del enrutador se bloquea en los puertos normales.

etc/nginx/nginx.conf

user  nobody;
worker_processes  1;
#error_log  /opt/var/log/nginx/error.log;
#error_log  /opt/var/log/nginx/error.log  notice;
#error_log  /opt/var/log/nginx/error.log  info;
#pid        /opt/var/run/nginx.pid;

events {
    worker_connections  64;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
    #access_log  /opt/var/log/nginx/access.log main;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    #gzip  on;

server {
    listen 81;
    server_name milkov.su www.milkov.su;
    return 301 https://milkov.su$request_uri;
}

server {
        listen 433 ssl;
        server_name milkov.su;
        #SSL support
        include ssl.conf;
        location / {
            root   /opt/share/nginx/html;
            index  index.html index.htm;
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
            }
        }
}
</spoiler>
<spoiler title="etc/nginx/ssl.conf">
ssl_certificate /opt/etc/nginx/certs/milkov.su/fullchain.pem;
ssl_certificate_key /opt/etc/nginx/certs/milkov.su/privkey.pem;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_prefer_server_ciphers on;
ssl_dhparam /opt/etc/nginx/dhparams.pem;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 5m;
ssl_stapling on;

Para que el sitio funcione a través de https, utilicé el conocido script deshidratado, instalándolo usando esta instrucción. Este proceso no causó ninguna dificultad, solo me topé con el hecho de que en el texto del script para trabajar en mi enrutador necesitas comentar la línea en el archivo /opt/etc/ssl/openssl.cnf:

[openssl_conf]
#engines=engines

Y observo que generar dhparams.pem con el comando "openssl dhparam -out dhparams.pem 2048" en mi enrutador lleva más de 2 horas, si no fuera por el indicador de progreso, habría perdido la paciencia y habría reiniciado.

Después de recibir los certificados, reinicie nginx con el comando "/opt/etc/init.d/S80nginx restart". En principio, la configuración está completa, pero aún no hay un sitio web; si colocamos el archivo index.html en el directorio /share/nginx/html, veremos un código auxiliar.

index.html

<!DOCTYPE html>
<html>
<head>
<title>Тестовая страничка!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Тестовая страничка!</h1>
<p>Это простая статическая тестовая страничка, абсолютно ничего интересного.</p>
</body>
</html>

Para colocar la información de manera hermosa, es más fácil para un no profesional como yo usar plantillas ya preparadas; después de una larga búsqueda en varios catálogos, encontré templatemo.com - hay una buena selección de plantillas gratuitas que no requieren atribución (lo cual es poco común en Internet; la mayoría de las plantillas de la licencia requieren que guarde un enlace al recurso del que se obtuvieron).

Seleccionamos una plantilla adecuada: las hay para una variedad de casos, descargamos el archivo y lo descomprimimos en el directorio /share/nginx/html, puede hacerlo desde su computadora y luego editar la plantilla (aquí necesitará conocimientos mínimos de HTML para no romper la estructura) y reemplazar los gráficos como se muestra en la figura siguiente.

Alojar un sitio web en el enrutador de su hogar

Resumen: el enrutador es bastante adecuado para alojar un sitio web liviano, en principio; si no espera una gran carga, puede instalar y phpy experimentar con proyectos más complejos (miro nextcloud/owncloud, parece que hay instalaciones exitosas en dicho hardware). La capacidad de instalar paquetes aumenta su utilidad; por ejemplo, cuando fue necesario proteger el puerto RDP de una PC en una red local, instalé knockd en el enrutador y el reenvío de puertos a la PC se abrió solo después de llamar al puerto.

¿Por qué un enrutador y no una PC normal? Un router es uno de los pocos equipos informáticos que en muchos apartamentos funciona las XNUMX horas del día; un router doméstico suele ser absolutamente silencioso y un sitio ligero con menos de cien visitas al día no le molestará en absoluto.

Fuente: habr.com

Añadir un comentario