Een website hosten op uw thuisrouter

Ik wilde al heel lang 'mijn handen aanraken' op het gebied van internetdiensten door een webserver helemaal opnieuw op te zetten en deze vrij te geven op internet. In dit artikel wil ik mijn ervaring delen met het transformeren van een thuisrouter van een zeer functioneel apparaat in een bijna volwaardige server.

Het begon allemaal met het feit dat de TP-Link TL-WR1043ND-router, die trouw had gediend, niet langer voldeed aan de behoeften van een thuisnetwerk; ik wilde een 5 GHz-band en snelle toegang tot bestanden op een opslagapparaat dat op de router was aangesloten . Nadat ik gespecialiseerde forums (4pda, ixbt), sites met recensies en het assortiment van lokale winkels had bekeken, besloot ik Keenetic Ultra aan te schaffen.

Goede recensies van de eigenaren werkten in het voordeel van dit specifieke apparaat:

  • geen problemen met oververhitting (hier moesten we Asus-producten achterwege laten);
  • operationele betrouwbaarheid (hier heb ik TP-Link doorgestreept);
  • eenvoudig in te stellen (ik was bang dat ik het niet aankon en heb Microtik doorgestreept).

Ik moest de nadelen onder ogen zien:

  • geen WiFi6, ik wilde apparatuur meenemen met reserve voor de toekomst;
  • 4 LAN-poorten, ik wilde meer, maar dit is niet langer een thuiscategorie.

Als resultaat kregen we deze “server”:

Een website hosten op uw thuisrouter

  • aan de linkerkant bevindt zich de optische terminal van Rostelecom;
  • aan de rechterkant staat onze experimentele router;
  • een rondslingerende m.2 SSD van 128 GB, geplaatst in een USB3-box van AliExpress, is met een draadje verbonden met de router, nu hangt hij netjes aan de muur;
  • op de voorgrond bevindt zich een verlengsnoer met onafhankelijk losgekoppelde stopcontacten, de draad ervan gaat naar een goedkope UPS;
  • op de achtergrond bevindt zich een bundel twisted pair-kabels - in de fase van de renovatie van het appartement heb ik onmiddellijk RJ45-aansluitingen gepland op de plaatsen waar de apparatuur zou moeten worden geplaatst, om niet afhankelijk te zijn van de wifi die rondslingert.

Dus we hebben de apparatuur, we moeten deze configureren:

Een website hosten op uw thuisrouter

  • De eerste installatie van de router duurt ongeveer 2 minuten, we geven de verbindingsparameters aan de provider door (mijn optische terminal wordt in bridge-modus geschakeld, de PPPoE-verbinding tilt de router op), de naam van het WiFi-netwerk en het wachtwoord - dat is alles , de router start op en werkt.

Een website hosten op uw thuisrouter

We hebben het doorsturen van externe poorten naar de poorten van de router zelf ingesteld in de sectie "Netwerkregels - Doorsturen":

Een website hosten op uw thuisrouter

Een website hosten op uw thuisrouter

Nu kunnen we verder gaan met het “geavanceerde” gedeelte, wat ik van de router wilde:

  1. functionaliteit van een kleine NAS voor een thuisnetwerk;
  2. het uitvoeren van webserverfuncties voor verschillende privépagina's;
  3. persoonlijke cloudfunctionaliteit voor toegang tot persoonlijke gegevens waar ook ter wereld.

De eerste wordt geïmplementeerd met behulp van ingebouwde tools, zonder dat dit veel moeite kost:

  • We nemen een schijf die voor deze rol bedoeld is (flashdrive, geheugenkaart in een kaartlezer, harde schijf of SSD in een externe box) en formatteren deze naar Ext4 met behulp van MiniTool Partition Wizard gratis editie (Ik heb geen computer met Linux bij de hand, het kan met ingebouwde tools). Zoals ik het begrijp, schrijft het systeem tijdens het gebruik alleen logbestanden naar de flashdrive, dus als je deze beperkt na het instellen van het systeem, kun je ook geheugenkaarten gebruiken als je van plan bent veel en vaak naar de schijf te schrijven - een SSD of HDD is beter.

Een website hosten op uw thuisrouter

Hierna verbinden we de schijf met de router en observeren deze op het systeemmonitorscherm

Een website hosten op uw thuisrouter

Klik op “USB-drives en printers” in het gedeelte “Toepassingen” en configureer de share in het gedeelte “Windows Netwerk”:

Een website hosten op uw thuisrouter

En we hebben een netwerkbron die kan worden gebruikt vanaf Windows-computers, indien nodig verbinding makend als schijf: net use y: \192.168.1.1SSD /persistent:yes

De snelheid van zo'n geïmproviseerde NAS is voor thuisgebruik ruim voldoende; over een draad verbruikt hij de hele gigabit, over WiFi is de snelheid zo'n 400-500 megabit.

Een website hosten op uw thuisrouter

Het opzetten van opslag is een van de noodzakelijke stappen om de server te configureren. Vervolgens hebben we het volgende nodig:
- een domein kopen en een statisch IP-adres (je kunt het zonder doen door Dynamic DNS te gebruiken, maar ik had al een statisch IP-adres, dus het bleek gemakkelijker te gebruiken gratis Yandex-diensten - door het domein daarheen te delegeren, ontvangen we DNS-hosting en mail op ons domein);

Een website hosten op uw thuisrouter

- DNS-servers configureren en voeg A-records toe die naar uw IP verwijzen:

Een website hosten op uw thuisrouter

Het duurt enkele uren voordat de domein- en DNS-delegatie-instellingen van kracht worden, dus we zijn tegelijkertijd de router aan het instellen.

Eerst moeten we de Entware-repository installeren, van waaruit we de benodigde pakketten op de router kunnen installeren. Ik heb geprofiteerd deze instructie, heeft het installatiepakket gewoon niet via FTP geüpload, maar een map rechtstreeks op de eerder aangesloten netwerkschijf gemaakt en het bestand daar op de gebruikelijke manier gekopieerd.

Nadat u toegang hebt verkregen via SSH, wijzigt u het wachtwoord met de opdracht passwd en installeert u alle benodigde pakketten met de opdracht opkg install [pakketnamen]:

Een website hosten op uw thuisrouter

Tijdens de installatie zijn de volgende pakketten op de router geïnstalleerd (de uitvoer van de opdracht opkg list-installed):

Lijst met pakketten
bash-5.0-3
busybox - 1.31.1-1
ca-bundel - 20190110-2
ca-certificaten - 20190110-2
coreutils - 8.31-1
coreutils-mktemp - 8.31-1
cron-4.1-3
krul - 7.69.0-1
diffutils - 3.7-2
dropbear-2019.78-3
entware-release - 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-vol - 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
libnvloeken - 6.2-1
libnvloekenw - 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
libroodlijn - 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
liboïde - 2.35.1-1
libxml2 - 2.9.10-1
landinstellingen - 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
poorbox - 1.31.1-2
terminfo - 6.2-1
zlib - 1.2.11-3
zoneinfo-Azië - 2019c-1
zoneinfo-europa - 2019c-1

Misschien was er hier iets overbodigs, maar er was veel ruimte op de oprit, dus ik heb niet de moeite genomen om ernaar te kijken.

Na het installeren van de pakketten configureren we nginx, ik heb het geprobeerd met twee domeinen - de tweede is geconfigureerd met https, en voorlopig is er een stub. Interne poorten 81 en 433 worden gebruikt in plaats van 80 en 443, omdat het beheerderspaneel van de router op normale poorten blijft hangen.

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;

Om de site via https te laten werken, heb ik het bekende gedehydrateerde script gebruikt en geïnstalleerd met behulp van deze handleiding. Dit proces veroorzaakte geen problemen, ik stuitte alleen op het feit dat in de tekst van het script voor het werken aan mijn router u moet commentaar geven op de regel in het bestand /opt/etc/ssl/openssl.cnf:

[openssl_conf]
#engines=engines

En ik merk op dat het genereren van dhparams.pem met het commando “openssl dhparam -out dhparams.pem 2048” op mijn router meer dan 2 uur duurt, als de voortgangsindicator er niet was geweest, zou ik mijn geduld hebben verloren en opnieuw zijn opgestart.

Nadat u de certificaten heeft ontvangen, start u nginx opnieuw op met het commando “/opt/etc/init.d/S80nginx restart”. In principe is de installatie voltooid, maar er is nog geen website - als we het bestand index.html in de map /share/nginx/html plaatsen, zien we een stub.

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>

Om informatie mooi te plaatsen is het voor een niet-professional als ik makkelijker om kant-en-klare sjablonen te gebruiken; na lang zoeken in diverse catalogi vond ik templatemo.com — er is een goede selectie gratis sjablonen waarvoor geen bronvermelding vereist is (wat zeldzaam is op internet; voor de meeste sjablonen in de licentie moet u een link opslaan naar de bron waar ze zijn verkregen).

We selecteren een geschikte sjabloon - er zijn er voor verschillende gevallen, downloaden het archief en pakken het uit in de map /share/nginx/html, u kunt dit vanaf uw computer doen en vervolgens de sjabloon bewerken (hier heeft u minimale kennis nodig van HTML om de structuur niet te verbreken) en vervang de afbeeldingen zoals weergegeven in de onderstaande afbeelding.

Een website hosten op uw thuisrouter

Samenvatting: de router is in principe redelijk geschikt om er een lichte website op te hosten - als je geen grote belasting verwacht, dan kan dat installeren en php, en experimenteer met complexere projecten (ik kijk naar nextcloud/owncloud, er lijken succesvolle installaties op dergelijke hardware te zijn). De mogelijkheid om pakketten te installeren vergroot het nut ervan - toen het bijvoorbeeld nodig was om de RDP-poort van een pc op een lokaal netwerk te beschermen, installeerde ik knockd op de router - en port forwarding naar de pc werd pas geopend nadat de poort was geklopt.

Waarom een ​​router en geen gewone pc? Een router is een van de weinige computerhardware die in veel appartementen de klok rond werkt; een thuisrouter is meestal absoluut stil en een lichte site met minder dan honderd bezoeken per dag zal daar helemaal geen last van hebben.

Bron: www.habr.com

Voeg een reactie