Aloxamento dun sitio web no seu enrutador doméstico

Hai tempo que quería "tocar as miñas mans" nos servizos de Internet configurando un servidor web desde cero e lanzándoo a Internet. Neste artigo quero compartir a miña experiencia na transformación dun enrutador doméstico dun dispositivo altamente funcional nun servidor case completo.

Todo comezou co feito de que o enrutador TP-Link TL-WR1043ND, que servira fielmente, xa non satisfacía as necesidades dunha rede doméstica; quería unha banda de 5 GHz e un acceso rápido aos ficheiros nun dispositivo de almacenamento conectado ao enrutador. . Despois de buscar foros especializados (4pda, ixbt), sitios con críticas e ollar a variedade de tendas locais, decidín mercar Keenetic Ultra.

As boas críticas dos propietarios traballaron a favor deste dispositivo en particular:

  • sen problemas co sobrequecemento (aquí tivemos que abandonar os produtos Asus);
  • fiabilidade operativa (aquí tachei TP-Link);
  • fácil de configurar (temín que non podía manexalo e tachei Microtik).

Tiven que aceptar as desvantaxes:

  • sen WiFi6, quería levar equipos con reserva para o futuro;
  • 4 portos LAN, quería máis, pero esta xa non é unha categoría doméstica.

Como resultado, obtivemos este "servidor":

Aloxamento dun sitio web no seu enrutador doméstico

  • á esquerda está o terminal óptico de Rostelecom;
  • á dereita está o noso router experimental;
  • un SSD m.2 de 128 GB que hai, colocado nunha caixa USB3 de Aliexpress, está conectado ao router cun cable, agora está ben montado na parede;
  • en primeiro plano hai un cable de extensión con enchufes desconectados de forma independente, o cable do mesmo vai a un UPS barato;
  • ao fondo hai un montón de cables de par trenzado: na fase de renovación do apartamento, planeei inmediatamente tomas RJ45 nos lugares onde se supoñía que se ubicaría o equipo, para non depender da conexión WiFi.

Entón, temos o equipo, necesitamos configuralo:

Aloxamento dun sitio web no seu enrutador doméstico

  • A configuración inicial do enrutador leva uns 2 minutos, indicamos os parámetros de conexión ao provedor (o meu terminal óptico cambia ao modo ponte, a conexión PPPoE levanta o enrutador), o nome da rede WiFi e o contrasinal, basicamente iso é todo. , o router iníciase e funciona.

Aloxamento dun sitio web no seu enrutador doméstico

Establecemos o reenvío de portos externos aos portos do propio enrutador na sección "Regras de rede - Reenvío":

Aloxamento dun sitio web no seu enrutador doméstico

Aloxamento dun sitio web no seu enrutador doméstico

Agora podemos pasar á parte "avanzada", o que quería do router:

  1. funcionalidade dun pequeno NAS para unha rede doméstica;
  2. realizar funcións de servidor web para varias páxinas privadas;
  3. funcionalidade de nube persoal para acceder a datos persoais desde calquera lugar do mundo.

O primeiro impléntanse mediante ferramentas integradas, sen esixir moito esforzo:

  • Collemos unha unidade destinada a este rol (unidade flash, tarxeta de memoria nun lector de tarxetas, disco duro ou SSD nunha caixa externa e formatámola a Ext4 usando MiniTool Partition Wizard Edición gratuíta (Non teño un ordenador con Linux a man, é posible con ferramentas integradas). Segundo entendo, durante o funcionamento o sistema só escribe rexistros na unidade flash, polo que se os limitas despois de configurar o sistema, tamén podes usar tarxetas de memoria se pensas escribir moito e moitas veces na unidade: un SSD ou O HDD é mellor.

Aloxamento dun sitio web no seu enrutador doméstico

Despois diso, conectamos a unidade ao enrutador e observamos na pantalla do monitor do sistema

Aloxamento dun sitio web no seu enrutador doméstico

Fai clic en "Unidades USB e impresoras" na sección "Aplicacións" e configura o recurso compartido na sección "Rede de Windows":

Aloxamento dun sitio web no seu enrutador doméstico

E temos un recurso de rede que se pode utilizar desde ordenadores Windows, conectándose como disco se é necesario: net use y: \192.168.1.1SSD /persistent:yes

A velocidade dun NAS tan improvisado é bastante suficiente para o uso doméstico; a través dun cable usa todo o gigabit, a través de WiFi a velocidade é duns 400-500 megabits.

Aloxamento dun sitio web no seu enrutador doméstico

Configurar o almacenamento é un dos pasos necesarios para configurar o servidor, entón necesitamos:
- mercar un dominio e un enderezo IP estático (podes prescindir diso usando Dynamic DNS, pero xa tiña unha IP estática, polo que resultou máis doado de usar Servizos gratuítos de Yandex - delegando alí o dominio, recibimos aloxamento DNS e correo no noso dominio);

Aloxamento dun sitio web no seu enrutador doméstico

- configurar servidores DNS e engade rexistros A que apuntan á túa IP:

Aloxamento dun sitio web no seu enrutador doméstico

Tarda varias horas en entrar en vigor a configuración de delegación de dominio e DNS, polo que ao mesmo tempo estamos configurando o enrutador.

En primeiro lugar, necesitamos instalar o repositorio de Entware, desde o que podemos instalar os paquetes necesarios no router. Aproveitei esta instrución, simplemente non cargou o paquete de instalación a través de FTP, senón que creou un cartafol directamente na unidade de rede conectada previamente e copiou o ficheiro alí do xeito habitual.

Despois de ter acceso a través de SSH, cambie o contrasinal co comando passwd e instale todos os paquetes necesarios co comando opkg install [nomes dos paquetes]:

Aloxamento dun sitio web no seu enrutador doméstico

Durante a configuración, instaláronse os seguintes paquetes no enrutador (a saída do comando opkg list-installed):

Lista de paquetes
golpe - 5.0-3
busybox - 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
diffutils - 3.7-2
dropbear - 2019.78-3
versión de software - 1.0-2
findutils - 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-full - 1.11.1-4
libintl-full - 0.19.8.1-2
liblua - 5.1.5-7
libmbedtls - 2.16.5-1
libmount - 2.35.1-1
libncurses - 6.2-1
libncursesw - 6.2-1
libndm - 1.1.10-1a
libopenssl - 1.1.1d-2
libopenssl-conf - 1.1.1d-2
libpcap - 1.9.1-2
libpcre - 8.43-2
libpcre2 - 10.34-1
libpthread - 2.27-9
libreadline - 8.0-1a
librt - 2.27-9
libslang2 - 2.3.2-4
libssh2 - 1.9.0-2
libssp - 8.3.0-9
libstdcpp - 8.3.0-9
libuid - 2.35.1-1
libxml2 - 2.9.10-1
locais - 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
caixa de pobres - 1.31.1-2
Terminfo - 6.2-1
zlib - 1.2.11-3
zoneinfo-asia - 2019c-1
zoneinfo-europe - 2019c-1

Quizais había algo superfluo aquí, pero había moito espazo na unidade, así que non me molestei en miralo.

Despois de instalar os paquetes, configuramos nginx, tenteino con dous dominios: o segundo está configurado con https e, polo de agora, hai un esbozo. Os portos internos 81 e 433 utilízanse en lugar dos 80 e 443, xa que o panel de administración do enrutador colga nos portos normais.

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 o sitio funcione a través de https, usei o coñecido script deshidratado, instalándoo usando esta instrución. Este proceso non causou ningunha dificultade, só tropecei co feito de que no texto do script para traballar no meu enrutador cómpre comentar a liña no ficheiro /opt/etc/ssl/openssl.cnf:

[openssl_conf]
#engines=engines

E observo que xerar dhparams.pem co comando "openssl dhparam -out dhparams.pem 2048" no meu router leva máis de 2 horas, se non fose polo indicador de progreso, perdería a paciencia e reiniciaría.

Despois de recibir os certificados, reinicie nginx co comando "/opt/etc/init.d/S80nginx restart". En principio, a configuración está completa, pero aínda non hai sitio web: se poñemos o ficheiro index.html no directorio /share/nginx/html, veremos un esbozo.

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 a información de xeito fermoso, é máis doado para un non profesional coma min usar modelos xa preparados; despois dunha longa busca en varios catálogos, atopei templatemo.com - hai unha boa selección de modelos gratuítos que non requiren atribución (o que é raro en Internet; a maioría dos modelos da licenza requiren que garde unha ligazón ao recurso do que se obtiveron).

Seleccionamos un modelo axeitado: hai outros para unha variedade de casos, descarga o arquivo e descomprimelo no directorio /share/nginx/html, podes facelo desde o teu ordenador e editar o modelo (aquí necesitarás un mínimo de coñecementos). de HTML para non romper a estrutura) e substitúa os gráficos como se mostra na figura seguinte.

Aloxamento dun sitio web no seu enrutador doméstico

Resumo: o enrutador é bastante axeitado para aloxar un sitio web lixeiro nel, en principio - se non esperas unha gran carga, podes instalar e php, e experimentar con proxectos máis complexos (miro a nextcloud/owncloud, parece que hai instalacións exitosas neste hardware). A posibilidade de instalar paquetes aumenta a súa utilidade; por exemplo, cando era necesario protexer o porto RDP dun PC nunha rede local, instalei knockd no enrutador, e o reenvío de portos ao PC abriuse só despois de golpear o porto.

Por que un enrutador e non un PC normal? Un enrutador é unha das poucas pezas de hardware de ordenador que funciona todo o día en moitos apartamentos; un enrutador doméstico adoita ser absolutamente silencioso e un sitio lixeiro con menos de cen visitas ao día non o molestará en absoluto.

Fonte: www.habr.com

Engadir un comentario