Hostenie webovej stránky na domácom smerovači

Už dlho som sa chcel „dotknúť rúk“ internetových služieb tým, že vytvorím webový server od nuly a uvoľním ho na internet. V tomto článku sa chcem podeliť o svoje skúsenosti s premenou domáceho smerovača z vysoko funkčného zariadenia na takmer plnohodnotný server.

Všetko to začalo tým, že verne slúžiaci router TP-Link TL-WR1043ND už nevyhovoval potrebám domácej siete; chcel som pásmo 5 GHz a rýchly prístup k súborom na úložnom zariadení pripojenom k ​​routeru. . Po prezretí špecializovaných fór (4pda, ixbt), stránok s recenziami a prezretí si sortimentu miestnych obchodov som sa rozhodol kúpiť Keenetic Ultra.

Dobré recenzie od majiteľov pracovali v prospech tohto konkrétneho zariadenia:

  • žiadne problémy s prehrievaním (tu sme museli opustiť produkty Asus);
  • prevádzková spoľahlivosť (tu som preškrtol TP-Link);
  • jednoduché nastavenie (bál som sa, že to nezvládnem a preškrtol som Microtik).

Musel som sa zmieriť s nevýhodami:

  • nie WiFi6, chcel som zobrat vybavu s rezervou do buducna;
  • 4 LAN porty, chcel som viac, ale toto už nie je domáca kategória.

V dôsledku toho sme dostali tento „server“:

Hostenie webovej stránky na domácom smerovači

  • vľavo je optický terminál Rostelecomu;
  • vpravo je náš experimentálny smerovač;
  • okolo povaľujúci sa 2 GB m.128 SSD disk umiestnený v USB3 boxe od Aliexpressu je k routeru pripojený káblom, teraz je úhľadne namontovaný na stene;
  • v popredí je predlžovací kábel s nezávisle odpojenými zásuvkami, drôt z neho ide do lacného UPS;
  • v pozadí je kopa točenej dvojlinky - v štádiu rekonštrukcie bytu som si hneď naplánoval zásuvky RJ45 v miestach, kde sa mala nachádzať technika, aby som nebol závislý od zasypanej WiFi.

Takže máme vybavenie, musíme ho nakonfigurovať:

Hostenie webovej stránky na domácom smerovači

  • Prvotné nastavenie routera trvá cca 2 minúty, poskytovateľovi zadáme parametre pripojenia (môj optický terminál je prepnutý do bridge módu, PPPoE spojenie zdvihne router), názov WiFi siete a heslo – v podstate to je všetko , router sa spustí a funguje.

Hostenie webovej stránky na domácom smerovači

Preposielanie externých portov na porty samotného smerovača sme nastavili v časti „Pravidlá siete - Preposielanie“:

Hostenie webovej stránky na domácom smerovači

Hostenie webovej stránky na domácom smerovači

Teraz môžeme prejsť k „pokročilej“ časti, čo som chcel od smerovača:

  1. funkčnosť malého NAS pre domácu sieť;
  2. vykonávanie funkcií webového servera pre niekoľko súkromných stránok;
  3. funkcia osobného cloudu na prístup k osobným údajom odkiaľkoľvek na svete.

Prvý sa implementuje pomocou vstavaných nástrojov bez toho, aby si to vyžadovalo veľké úsilie:

  • Zoberieme disk určený na túto úlohu (flash disk, pamäťovú kartu v čítačke kariet, pevný disk alebo SSD v externom boxe a naformátujeme ho na Ext4 pomocou Sprievodca oddielmi MiniTool Free Edition (Nemám po ruke počítač s Linuxom, je to možné pomocou vstavaných nástrojov). Ako som pochopil, systém počas prevádzky zapisuje na flash disk iba logy, takže ak ich po nastavení systému obmedzíte, môžete použiť aj pamäťové karty, ak plánujete veľa a často zapisovať na disk - SSD resp. HDD je lepší.

Hostenie webovej stránky na domácom smerovači

Potom pripojíme disk k smerovaču a pozorujeme ho na obrazovke monitora systému

Hostenie webovej stránky na domácom smerovači

Kliknite na „USB disky a tlačiarne“ v časti „Aplikácie“ a nakonfigurujte zdieľanie v časti „Sieť Windows“:

Hostenie webovej stránky na domácom smerovači

A máme sieťový zdroj, ktorý možno použiť z počítačov so systémom Windows, v prípade potreby sa pripájame ako disk: net use y: \192.168.1.1SSD /persistent:yes

Rýchlosť takéhoto improvizovaného NAS je na domáce použitie úplne postačujúca, po drôte využije celý gigabit, cez WiFi je rýchlosť okolo 400-500 megabitov.

Hostenie webovej stránky na domácom smerovači

Nastavenie úložiska je jedným z nevyhnutných krokov na konfiguráciu servera, potom potrebujeme:
- kúpiť doménu a statickú IP adresu (môžete to urobiť bez toho pomocou dynamického DNS, ale už som mal statickú IP, takže sa ukázalo, že je jednoduchšie použiť bezplatné služby Yandex - delegovaním domény tam, prijímame DNS hosting a poštu na našej doméne);

Hostenie webovej stránky na domácom smerovači

- konfigurovať servery DNS a pridajte záznamy A smerujúce na vašu IP:

Hostenie webovej stránky na domácom smerovači

Trvá niekoľko hodín, kým sa prejavia nastavenia delegovania domény a DNS, takže súčasne nastavujeme smerovač.

Najprv musíme nainštalovať úložisko Entware, z ktorého môžeme nainštalovať potrebné balíčky na router. Využil som to s týmto pokynom, len nenahral inštalačný balík cez FTP, ale vytvoril priečinok priamo na predtým pripojenom sieťovom disku a skopíroval tam súbor obvyklým spôsobom.

Po získaní prístupu cez SSH zmeňte heslo pomocou príkazu passwd a nainštalujte všetky potrebné balíky pomocou príkazu opkg install [package names]:

Hostenie webovej stránky na domácom smerovači

Počas inštalácie boli na smerovač nainštalované nasledujúce balíky (výstup príkazu opkg list-installed):

Zoznam balíkov
bash - 5.0-3
busybox - 1.31.1-1
ca-zväzok - 20190110-2
ca-certifikáty - 20190110-2
coreutils - 8.31-1
coreutils-mktemp - 8.31-1
cron - 4.1-3
zvlnenie - 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-full - 1.11.1-4
libintl-plný - 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
lireadline - 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
miestne - 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
chudobný box - 1.31.1-2
terminfo - 6.2-1
zlib - 1.2.11-3
zoneinfo-asia - 2019c-1
zoneinfo-europe - 2019c-1

Možno tu bolo niečo zbytočné, ale na jednotke bolo veľa miesta, takže som sa neobťažoval sa na to pozerať.

Po nainštalovaní balíčkov nakonfigurujeme nginx, skúšal som to s dvoma doménami - druhá je nakonfigurovaná s https a zatiaľ je tam stub. Namiesto 81 a 433 sa používajú interné porty 80 a 443, pretože panel správcu smerovača visí na normálnych portoch.

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;

Aby stránka fungovala cez https, použil som známy dehydrovaný skript, ktorý som nainštaloval pomocou túto príručku. Tento proces nespôsobil žiadne ťažkosti, iba som narazil na skutočnosť, že v texte skriptu pre prácu na mojom routeri musíte zakomentovať riadok v súbore /opt/etc/ssl/openssl.cnf:

[openssl_conf]
#engines=engines

A podotýkam, že vygenerovanie dhparams.pem pomocou príkazu “openssl dhparam -out dhparams.pem 2048” na mojom routeri trvá viac ako 2 hodiny, nebyť indikátora priebehu, stratil by som trpezlivosť a reštartoval by som.

Po prijatí certifikátov reštartujte nginx príkazom „/opt/etc/init.d/S80nginx restart“. V zásade je nastavenie dokončené, ale zatiaľ neexistuje žiadna webová stránka - ak vložíme súbor index.html do adresára /share/nginx/html, uvidíme útržok.

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>

Na krásne umiestnenie informácií je pre neprofesionála, ako som ja, jednoduchšie použiť hotové šablóny; po dlhom hľadaní v rôznych katalógoch som našiel templatemo.com - existuje dobrý výber bezplatných šablón, ktoré nevyžadujú uvedenie zdroja (čo je na internete zriedkavé; väčšina šablón v licencii vyžaduje, aby ste si uložili odkaz na zdroj, z ktorého boli získané).

Vyberieme vhodnú šablónu - existujú pre rôzne prípady, stiahnite si archív a rozbaľte ho do adresára /share/nginx/html, môžete to urobiť z počítača, potom upravte šablónu (tu budete potrebovať minimálne znalosti HTML, aby sa neporušila štruktúra) a nahraďte grafiku, ako je znázornené na obrázku nižšie.

Hostenie webovej stránky na domácom smerovači

Zhrnutie: router je v zásade vhodný na hosťovanie ľahkej webovej stránky - ak neočakávate veľké zaťaženie, môžete nainštalovať a phpa experimentujte so zložitejšími projektmi (pozriem nextcloud/owncloud, zdá sa, že na takomto hardvéri existujú úspešné inštalácie). Možnosť inštalácie balíčkov zvyšuje jeho užitočnosť - napríklad keď bolo potrebné chrániť RDP port PC v lokálnej sieti, nainštaloval som knockd na router - a presmerovanie portov do PC sa otvorilo až po zaklepaní portu.

Prečo router a nie obyčajný PC? Router je jedným z mála počítačového hardvéru, ktorý v mnohých bytoch funguje nonstop, domáci router je väčšinou absolútne tichý a ľahká stránka s menej ako stovkou návštev za deň mu vôbec nebude prekážať.

Zdroj: hab.com

Pridať komentár