Allotjament d'un lloc web en un encaminador domèstic

Feia temps que volia "tocar-me les mans" als serveis d'Internet configurant un servidor web des de zero i llançant-lo a Internet. En aquest article vull compartir la meva experiència en la transformació d'un encaminador domèstic d'un dispositiu altament funcional a un servidor gairebé complet.

Tot va començar amb el fet que l'encaminador TP-Link TL-WR1043ND, que havia servit fidelment, ja no satisfà les necessitats d'una xarxa domèstica; volia una banda de 5 GHz i un accés ràpid als fitxers en un dispositiu d'emmagatzematge connectat al router. . Després de mirar fòrums especialitzats (4pda, ixbt), llocs amb ressenyes i mirar l'assortiment de botigues locals, vaig decidir comprar Keenetic Ultra.

Les bones crítiques dels propietaris van treballar a favor d'aquest dispositiu en particular:

  • sense problemes amb el sobreescalfament (aquí vam haver d'abandonar els productes Asus);
  • fiabilitat operativa (aquí he ratllat TP-Link);
  • fàcil d'instal·lar (tenia por que no podia manejar-ho i vaig ratllar Microtik).

Vaig haver d'acceptar els inconvenients:

  • sense WiFi6, volia agafar equips amb reserva per al futur;
  • 4 ports LAN, en volia més, però això ja no és una categoria domèstica.

Com a resultat, hem obtingut aquest "servidor":

Allotjament d'un lloc web en un encaminador domèstic

  • a l'esquerra hi ha el terminal òptic de Rostelecom;
  • a la dreta hi ha el nostre encaminador experimental;
  • un SSD m.2 de 128 GB al voltant, col·locat en una caixa USB3 d'Aliexpress, està connectat al router amb un cable, ara està ben muntat a la paret;
  • en primer pla hi ha un cable d'extensió amb endolls desconnectats de manera independent, el cable d'aquest va a un SAI de baix cost;
  • al fons hi ha un munt de cables de parell trenat: en l'etapa de renovació de l'apartament, vaig planificar de seguida preses RJ45 als llocs on se suposava que s'havia d'ubicar l'equip, per no dependre de la xarxa WiFi.

Així doncs, tenim l'equip, hem de configurar-lo:

Allotjament d'un lloc web en un encaminador domèstic

  • La configuració inicial de l'encaminador triga uns 2 minuts, indiquem els paràmetres de connexió al proveïdor (el meu terminal òptic està canviat en mode pont, la connexió PPPoE aixeca l'encaminador), el nom de la xarxa WiFi i la contrasenya, bàsicament això és tot. , l'encaminador s'engega i funciona.

Allotjament d'un lloc web en un encaminador domèstic

Definim el reenviament de ports externs als ports del propi encaminador a la secció "Regles de xarxa - Reenviament":

Allotjament d'un lloc web en un encaminador domèstic

Allotjament d'un lloc web en un encaminador domèstic

Ara podem passar a la part "avançada", el que jo volia del router:

  1. funcionalitat d'un petit NAS per a una xarxa domèstica;
  2. realitzar funcions de servidor web per a diverses pàgines privades;
  3. funcionalitat de núvol personal per accedir a dades personals des de qualsevol part del món.

El primer s'implementa mitjançant eines integrades, sense requerir gaire esforç:

  • Agafem una unitat destinada a aquesta funció (unitat flash, targeta de memòria en un lector de targetes, disc dur o SSD en una caixa externa i la formem a Ext4 utilitzant MiniTool Partition Wizard Free Edition (No tinc un ordinador amb Linux a mà, és possible amb eines integrades). Segons tinc entès, durant el funcionament el sistema només escriu registres a la unitat flaix, de manera que si els limiteu després de configurar el sistema, també podeu utilitzar targetes de memòria si teniu previst escriure molt i sovint a la unitat: un SSD o L'HDD és millor.

Allotjament d'un lloc web en un encaminador domèstic

Després d'això, connectem la unitat al router i l'observem a la pantalla del monitor del sistema

Allotjament d'un lloc web en un encaminador domèstic

Feu clic a "Unitats USB i impressores" a la secció "Aplicacions" i configureu la compartició a la secció "Xarxa de Windows":

Allotjament d'un lloc web en un encaminador domèstic

I tenim un recurs de xarxa que es pot utilitzar des d'ordinadors Windows, connectant-se com a disc si cal: ús net y: \192.168.1.1SSD /persistent:sí

La velocitat d'un NAS tan improvisat és prou suficient per a l'ús domèstic; amb un cable s'utilitza tot el gigabit, amb WiFi la velocitat és d'uns 400-500 megabits.

Allotjament d'un lloc web en un encaminador domèstic

Configurar l'emmagatzematge és un dels passos necessaris per configurar el servidor, llavors necessitem:
- comprar un domini i una adreça IP estàtica (pot prescindir d'això utilitzant Dynamic DNS, però ja tenia una IP estàtica, així que va resultar més fàcil d'utilitzar serveis gratuïts de Yandex - delegant-hi el domini, rebem allotjament i correu DNS al nostre domini);

Allotjament d'un lloc web en un encaminador domèstic

- configurar servidors DNS i afegiu registres A que apunten a la vostra IP:

Allotjament d'un lloc web en un encaminador domèstic

La configuració de la delegació de domini i DNS triguen diverses hores a tenir efecte, de manera que estem configurant l'encaminador simultàniament.

En primer lloc, hem d'instal·lar el repositori Entware, des del qual podem instal·lar els paquets necessaris al router. Vaig aprofitar aquesta instrucció, simplement no va penjar el paquet d'instal·lació mitjançant FTP, sinó que va crear una carpeta directament a la unitat de xarxa prèviament connectada i hi va copiar el fitxer de la manera habitual.

Havent tingut accés mitjançant SSH, canvieu la contrasenya amb l'ordre passwd i instal·leu tots els paquets necessaris amb l'ordre opkg install [noms de paquets]:

Allotjament d'un lloc web en un encaminador domèstic

Durant la configuració, es van instal·lar els paquets següents al router (la sortida de l'ordre d'instal·lació de la llista opkg):

Llista de paquets
bash - 5.0-3
busybox - 1.31.1-1
ca-bundle - 20190110-2
ca-certificats - 20190110-2
coreutils - 8.31-1
coreutils-mktemp - 8.31-1
cron - 4.1-3
rínxol - 7.69.0-1
diffutils - 3.7-2
dropbear - 2019.78-3
llançament de programari - 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
Línia límit lliure - 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
locals - 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 pobre - 1.31.1-2
Terminfo - 6.2-1
zlib - 1.2.11-3
zoneinfo-asia - 2019c-1
zoneinfo-europe - 2019c-1

Potser hi havia alguna cosa superflu aquí, però hi havia molt d'espai a la unitat, així que no em vaig molestar a mirar-ho.

Després d'instal·lar els paquets, configurem nginx, ho vaig provar amb dos dominis: el segon està configurat amb https i, de moment, hi ha un taló. Els ports interns 81 i 433 s'utilitzen en lloc dels 80 i 443, ja que el tauler d'administració de l'encaminador es penja als ports normals.

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;

Per tal que el lloc funcioni mitjançant https, vaig utilitzar el conegut script deshidratat, instal·lant-lo mitjançant aquesta instrucció. Aquest procés no va causar cap dificultat, només em vaig ensopegar amb el fet que al text de l'script per treballar amb el meu encaminador heu de comentar la línia del fitxer /opt/etc/ssl/openssl.cnf:

[openssl_conf]
#engines=engines

I noto que generar dhparams.pem amb l'ordre "openssl dhparam -out dhparams.pem 2048" al meu encaminador triga més de 2 hores, si no fos per l'indicador de progrés, hauria perdut la paciència i hauria reiniciat.

Després de rebre els certificats, reinicieu nginx amb l'ordre "/opt/etc/init.d/S80nginx restart". En principi, la configuració està completa, però encara no hi ha cap lloc web: si posem el fitxer index.html al directori /share/nginx/html, veurem un taló.

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>

Per col·locar la informació de manera meravellosa, és més fàcil que un no professional com jo utilitzi plantilles ja fetes; després d'una llarga recerca a través de diversos catàlegs, vaig trobar templatemo.com - hi ha una bona selecció de plantilles gratuïtes que no requereixen atribució (cosa poc freqüent a Internet; la majoria de plantilles de la llicència requereixen que deseu un enllaç al recurs del qual s'han obtingut).

Seleccionem una plantilla adequada: n'hi ha per a diversos casos, descarregueu l'arxiu i descomprimiu-lo al directori /share/nginx/html, podeu fer-ho des del vostre ordinador i, a continuació, editar la plantilla (aquí necessitareu un coneixement mínim). d'HTML per no trencar l'estructura) i substituïu els gràfics tal com es mostra a la figura següent.

Allotjament d'un lloc web en un encaminador domèstic

Resum: l'encaminador és bastant adequat per allotjar-hi un lloc web lleuger, en principi, si no espereu una càrrega gran, podeu instal·lar i php, i experimentem amb projectes més complexos (miro nextcloud/owncloud, sembla que hi ha instal·lacions reeixides en aquest maquinari). La possibilitat d'instal·lar paquets augmenta la seva utilitat; per exemple, quan era necessari protegir el port RDP d'un ordinador en una xarxa local, vaig instal·lar knockd a l'encaminador, i el reenviament de ports a l'ordinador només es va obrir després de tocar el port.

Per què un encaminador i no un ordinador normal? Un encaminador és una de les poques peces de maquinari d'ordinador que funciona durant tot el dia a molts apartaments; un encaminador domèstic sol ser absolutament silenciós i un lloc lleuger amb menys de cent visites al dia no li molestarà gens.

Font: www.habr.com

Afegeix comentari