Hosting af et websted på din hjemmerouter

Jeg har længe ønsket at "røre mine hænder" på internettjenester ved at opsætte en webserver fra bunden og frigive den til internettet. I denne artikel vil jeg dele min erfaring med at transformere en hjemmerouter fra en yderst funktionel enhed til en næsten fuldgyldig server.

Det hele startede med, at TP-Link TL-WR1043ND-routeren, som havde tjent trofast, ikke længere opfyldte behovene i et hjemmenetværk; jeg ville have et 5 GHz-bånd og hurtig adgang til filer på en lagerenhed, der var tilsluttet routeren . Efter at have kigget gennem specialiserede fora (4pda, ixbt), websteder med anmeldelser og set på udvalget af lokale butikker, besluttede jeg at købe Keenetic Ultra.

Gode ​​anmeldelser fra ejerne virkede til fordel for denne særlige enhed:

  • ingen problemer med overophedning (her måtte vi opgive Asus-produkter);
  • driftssikkerhed (her har jeg streget TP-Link over);
  • let at sætte op (jeg var bange for, at jeg ikke kunne klare det og streg Microtik over).

Jeg måtte affinde mig med ulemperne:

  • ingen WiFi6, jeg ønskede at tage udstyr med en reserve til fremtiden;
  • 4 LAN-porte, jeg ville have flere, men dette er ikke længere en hjemmekategori.

Som et resultat fik vi denne "server":

Hosting af et websted på din hjemmerouter

  • til venstre er Rostelecoms optiske terminal;
  • til højre er vores eksperimentelle router;
  • en 2 GB m.128 SSD liggende, placeret i en USB3 boks fra Aliexpress, er forbundet til routeren med en ledning, nu er den pænt monteret på væggen;
  • i forgrunden er en forlængerledning med uafhængigt afbrudte stikkontakter, ledningen fra den går til en billig UPS;
  • i baggrunden er der en masse parsnoede kabler - ved renoveringsfasen af ​​lejligheden planlagde jeg straks RJ45-stik de steder, hvor udstyret skulle være placeret, for ikke at være afhængig af, at WiFi'et var strøet til.

Så vi har udstyret, vi skal konfigurere det:

Hosting af et websted på din hjemmerouter

  • Den indledende opsætning af routeren tager omkring 2 minutter, vi angiver forbindelsesparametrene til udbyderen (min optiske terminal er skiftet til brotilstand, PPPoE-forbindelsen løfter routeren), navnet på WiFi-netværket og adgangskoden - i bund og grund er det det , routeren starter op og virker.

Hosting af et websted på din hjemmerouter

Vi indstiller videresendelse af eksterne porte til portene på selve routeren i afsnittet "Netværksregler - Videresendelse":

Hosting af et websted på din hjemmerouter

Hosting af et websted på din hjemmerouter

Nu kan vi gå videre til den "avancerede" del, hvad jeg ønskede fra routeren:

  1. funktionalitet af en lille NAS til et hjemmenetværk;
  2. udførelse af webserverfunktioner for flere private sider;
  3. personlig cloud-funktionalitet til at få adgang til personlige data fra hvor som helst i verden.

Den første er implementeret ved hjælp af indbyggede værktøjer, uden at det kræver megen indsats:

  • Vi tager et drev beregnet til denne rolle (flashdrev, hukommelseskort i en kortlæser, harddisk eller SSD i en ekstern boks og formaterer det til Ext4 vha. MiniTool Partition Wizard Gratis udgave (Jeg har ikke en computer med Linux ved hånden, det er muligt med indbyggede værktøjer). Som jeg forstår det, skriver systemet under drift kun logs til flashdrevet, så hvis du begrænser dem efter opsætning af systemet, kan du også bruge hukommelseskort, hvis du planlægger at skrive meget og ofte til drevet - en SSD eller HDD er bedre.

Hosting af et websted på din hjemmerouter

Herefter forbinder vi drevet til routeren og observerer det på systemskærmen

Hosting af et websted på din hjemmerouter

Klik på "USB-drev og printere" til sektionen "Programmer", og konfigurer delingen i "Windows-netværk"-sektionen:

Hosting af et websted på din hjemmerouter

Og vi har en netværksressource, der kan bruges fra Windows-computere, tilslutning som en disk om nødvendigt: netbrug y: \192.168.1.1SSD /persistent:yes

Hastigheden på en sådan improviseret NAS er ganske tilstrækkelig til hjemmebrug; over en ledning bruger den hele gigabit, over WiFi er hastigheden omkring 400-500 megabit.

Hosting af et websted på din hjemmerouter

Opsætning af lager er et af de nødvendige trin for at konfigurere serveren, så har vi brug for:
købe et domæne og en statisk IP-adresse (du kan undvære dette ved at bruge Dynamic DNS, men jeg havde allerede en statisk IP, så det viste sig at være lettere at bruge gratis Yandex-tjenesterved at uddelegere domænet dertil, vi modtager DNS-hosting og mail på vores domæne);

Hosting af et websted på din hjemmerouter

konfigurere DNS-servere og tilføj A-poster, der peger på din IP:

Hosting af et websted på din hjemmerouter

Det tager flere timer for domæne- og DNS-delegationsindstillingerne at træde i kraft, så vi opsætter samtidig routeren.

Først skal vi installere Entware-depotet, hvorfra vi kan installere de nødvendige pakker på routeren. Jeg udnyttede det denne instruktion, har bare ikke uploadet installationspakken via FTP, men oprettet en mappe direkte på det tidligere tilsluttede netværksdrev og kopieret filen dertil på sædvanlig vis.

Efter at have fået adgang via SSH, skift adgangskoden med passwd-kommandoen og installer alle de nødvendige pakker med opkg install [pakkenavne]-kommandoen:

Hosting af et websted på din hjemmerouter

Under opsætningen blev følgende pakker installeret på routeren (outputtet af kommandoen opkg list-installed):

Liste over pakker
bash - 5.0-3
busybox - 1.31.1-1
ca-bundt - 20190110-2
ca-certifikater - 20190110-2
coreutils - 8.31-1
coreutils-mktemp - 8.31-1
cron - 4.1-3
krølle - 7.69.0-1
diffutiler - 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-full - 1.11.1-4
libintl-fuld - 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
lokaliteter - 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-asia - 2019c-1
zoneinfo-europe - 2019c-1

Måske var der noget overflødigt her, men der var meget plads på drevet, så jeg gad ikke kigge nærmere på det.

Efter at have installeret pakkerne, konfigurerede vi nginx, jeg prøvede det med to domæner - det andet er konfigureret med https, og for nu er der en stub. Interne porte 81 og 433 bruges i stedet for 80 og 443, da routerens administrationspanel hænger på normale porte.

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;

For at siden kunne fungere ved hjælp af https, brugte jeg det velkendte dehydrerede script og installerede det vha denne instruktion. Denne proces forårsagede ingen vanskeligheder, jeg faldt kun over det faktum, at i teksten til scriptet til at arbejde på min router du skal kommentere linjen i filen /opt/etc/ssl/openssl.cnf:

[openssl_conf]
#engines=engines

Og jeg bemærker, at generering af dhparams.pem med kommandoen "openssl dhparam -out dhparams.pem 2048" på min router tager mere end 2 timer, hvis ikke for fremskridtsindikatoren, ville jeg have mistet tålmodigheden og genstartet.

Efter at have modtaget certifikaterne, genstart nginx med kommandoen "/opt/etc/init.d/S80nginx restart". I princippet er opsætningen færdig, men der er endnu ingen hjemmeside - hvis vi lægger filen index.html i mappen /share/nginx/html, vil vi se en 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>

For at placere information smukt er det lettere for en ikke-professionel som mig at bruge færdige skabeloner; efter en lang søgning gennem forskellige kataloger fandt jeg templatemo.com - der er et godt udvalg af gratis skabeloner, der ikke kræver tilskrivning (hvilket er sjældent på internettet; de fleste skabeloner i licensen kræver, at du gemmer et link til den ressource, hvorfra de er hentet).

Vi vælger en passende skabelon - der er en til en række forskellige sager, download arkivet og pak det ud i mappen /share/nginx/html, du kan gøre dette fra din computer og derefter redigere skabelonen (her skal du have minimal viden af HTML for ikke at bryde strukturen) og erstatte grafikken som vist i figuren nedenfor.

Hosting af et websted på din hjemmerouter

Resumé: routeren er i princippet ret velegnet til at hoste en let hjemmeside på den - hvis du ikke forventer en stor belastning, kan du installer og php, og eksperimentere med mere komplekse projekter (jeg ser på nextcloud/owncloud, der ser ud til at være vellykkede installationer på sådan hardware). Muligheden for at installere pakker øger dens anvendelighed - for eksempel, når det var nødvendigt at beskytte RDP-porten på en pc på et lokalt netværk, installerede jeg knockd på routeren - og portvideresendelse til pc'en blev først åbnet efter portbankning.

Hvorfor en router og ikke en almindelig pc? En router er en af ​​de få computerdele, der fungerer døgnet rundt i mange lejligheder; en hjemmerouter er normalt helt lydløs, og et let websted med mindre end hundrede besøg om dagen vil overhovedet ikke genere det.

Kilde: www.habr.com

Tilføj en kommentar