Umiesťujeme stránku na domácom routeri

Už dávno som chcel "osobne zažiť" internetové služby, nastaviť webový server od nuly a pustiť ho do internetu. V tomto článku sa chcem podeliť o skúsenosti s premenou domáceho routera z úzko funkčného zariadenia na takmer plnohodnotný server.

Všetko sa začalo tým, že môj verný router TP-Link TL-WR1043ND prestal vyhovovať potrebám domácej siete, zatúžil som po 5 GHz pásme a rýchlom prístupe k súborom na úložisku pripojenom k routeru. Po prezretí špecializovaných fór (4pda, ixbt), recenzií a pozeraní na sortiment miestnych obchodov som sa rozhodol zakúpiť Keenetic Ultra.

Pre toto zariadenie hovorili dobré recenzie od majiteľov:

  • žiadne problémy s prehriatím (týmto som sa musel vzdať výrobkov Asus);
  • spoľahlivosť v práci (tu som vyškrtl TP-Link);
  • jednoduchosť pri nastavovaní (obával som sa, že to nezvládnem a vyškrtl som Microtik).

Musel som sa zmieriť s negatívami:

  • žiadne WiFi6, chcel som získať zariadenie s rezervou na budúcnosť;
  • 4 LAN porty, chcel som viac, ale to už nie je domáca kategória.

Nakoniec vznikla takáto "serverová" konfigurácia:

Umiesťujeme stránku na domácom routeri

  • vľavo optický terminál od Rostelekom;
  • vpravo náš pokusný router;
  • kábel k routeru je pripojený m.2 SSD s kapacitou 128 GB, umiestnený v USB3 boxe z AliExpressu, teraz je pekne upevnený na stene;
  • v popredí predlžovačka s nezávislým vypínaním zásuviek, kábel od nej smeruje k lacnému UPS;
  • v pozadí zväzok skrútenej dvojice — pri renovácii bytu som hneď naplánoval RJ45 zásuvky na miestach predpokladaného umiestnenia techniky, aby som nebol závislý od zahltenia WiFi.

Takže máme zariadenie, teraz ho musíme nastaviť:

Umiesťujeme stránku na domácom routeri

  • prvé nastavenie routera trvá asi 2 minúty, uvedieme parametre pripojenia k poskytovateľovi (mám optický terminál prepnúť do režimu bridge, PPPoE pripojenie sa spúšťa routerom), názov WiFi siete a heslo — v podstate všetko, router sa spustí a funguje.

Umiesťujeme stránku na domácom routeri

Nastavíme presmerovanie vonkajších portov na porty samotného routera v sekcii "Sieťové pravidlá — Presmerovanie":

Umiesťujeme stránku na domácom routeri

Umiesťujeme stránku na domácom routeri

Teraz sa môžeme presunúť k "pokročilej" časti, čo som chcel od routera:

  1. funkcionalita malého NAS pre domácu sieť;
  2. vykonávanie funkcií webového servera pre niekoľko súkromných stránok;
  3. funkcionalita osobného cloudu pre prístup k osobným údajom z ktorejkoľvek časti sveta.

Prvá sa realizuje vstavanými nástrojmi, nevyžadujúcimi osobitné úsilie:

  • vezmeme úložisko určené na tento účel (pendrive, pamäťovú kartu v čítačke, pevný disk alebo SSD vo vonkajšom boxe a naformátujeme ho na Ext4 pomocou MiniTool Partition Wizard Free Edition (nemám pri ruke počítač s linuxom, tam je možné použiť vstavané nástroje). Ako chápem, pri práci systém zapisuje na pendrive iba logy, preto ak ich po nastavení systému obmedzíme — môžeme používať aj pamäťové karty, ak plánujete veľa a často zapisovať na úložisko — najlepšie SSD alebo HDD.

Umiesťujeme stránku na domácom routeri

Potom pripojíme úložisko k routeru a sledujeme ho na obrazovke systémového monitora.

Umiesťujeme stránku na domácom routeri

Prejdeme kliknutím na 'USB disk a tiskárne' do sekcie 'Aplikácie' a nastavíme zdieľaný zdroj v sekcii 'Sieť Windows':

Umiesťujeme stránku na domácom routeri

A máme sieťový zdroj, ktorý môžeme používať s počítačmi so systémom Windows, pripojením ak je to potrebné ako disk: net use y: \\192.168.1.1SSD /persistent:yes

Rýchlosť takéhoto improvizovaného NAS je úplne dostatočná pre domáce použitie, cez kábel využíva celý gigabit, cez WiFi rýchlosť dosahuje okolo 400-500 megabitov.

Umiesťujeme stránku na domácom routeri

Nastavenie úložiska je jedným z nevyhnutných krokov pri nastavovaní servera, ďalej potrebujeme:
— zakúpiť doménu a statickú IP adresu (môžeme sa zaobísť aj bez nej, používaním Dynamic DNS, ale statická IP už bola, preto sa zdalo jednoduchšie využiť bezplatné služby Yandexu — delegovaním tam doménu, získavame DNS hosting a email na našej doméne);

Umiesťujeme stránku na domácom routeri

— nastaviť DNS servery a pridať A záznamy, ktoré odkazujú na vašu IP:

Umiesťujeme stránku na domácom routeri

Nadobudnutie účinnosti nastavení delegovania domény a DNS trvá niekoľko hodín, preto sa súčasne zaoberáme nastavovaním routeru.

Na začiatok je potrebné nainštalovať repozitár Entware, z ktorého si môžeme nainštalovať potrebné balíky na router. Ja som využil túto inštrukciu, len som nenahrával inštalačný balík cez FTP, ale som vytvoril priečinok priamo na predtým pripojenom sieťovom disku a skopíroval tam súbor bežným spôsobom.

Po získaní prístupu cez SSH zmeníme heslo príkazom passwd a príkazom opkg install [názvy balíkov] nainštalujeme všetky potrebné balíky:

Umiesťujeme stránku na domácom routeri

V priebehu nastavenia na routeri boli nainštalované nasledujúce balíky (výsledok príkazu opkg list-installed):

Zoznam balíčkov
bash — 5.0-3
busybox — 1.31.1-1
ca-bundle — 20190110-2
ca-certificates — 20190110-2
coreutils — 8.31-1
coreutils-mktemp — 8.31-1
cron — 4.1-3
curl — 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-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
libuuid — 2.35.1-1
libxml2 — 2.9.10-1
locales — 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

Mohlo sa tu niečo zbytočné dostať, ale na disku je veľa miesta, preto som sa tým nezaoberal.

Po inštalácii balíkov nastavujeme nginx, skúšal som to s dvoma doménami — na druhej je nastavené https a zatiaľ tam visí zástupca. Používajú sa interné porty 81 a 433 namiesto 80 a 443, pretože na normálnych portoch bežia administrátorské rozhrania routera.

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;
            }
        }
}
<

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 web fungoval cez https, použil som známy skript dehydrated, ktorý som nainštaloval podľa tohto návodu. Tento proces nespôsobil ťažkosti, iba som sa zasekol na tom, že v texte skriptu pre fungovanie na mojom routeri musím zakomentovať riadok v súbore /opt/etc/ssl/openssl.cnf:

[openssl_conf]
#engines=engines

A poznamenám, že generovanie dhparams.pem príkazom „openssl dhparam -out dhparams.pem 2048“ na mojom routeri trvá viac ako 2 hodiny, keby nebolo indikátora postupu — stratil by som trpezlivosť a reštartoval.

Po získaní certifikátov reštartujeme nginx príkazom " /opt/etc/init.d/S80nginx restart ". V podstate je touto konfiguráciou koniec, ale stránka ešte neexistuje — ak položíme do adresára /share/nginx/html súbor index.html, uvidíme zástupcu.

index.html

<!DOCTYPE html>
<html>
<head>
<title>Testovacia stránka!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Testovacia stránka!</h1>
<p>Toto je jednoduchá statická testovacia stránka, úplne nič zaujímavé.</p>
</body>
</html>

Aby som umiestnil informácie pekne, pre neprofesionála ako som ja je jednoduchšie využiť hotové šablóny, po dlhom prehľadávaní rôznych adresárov som našiel templatemo.com — tam je slušný výber bezplatných šablón, ktoré nevyžadujú povinné uvedenie autora (čo je v internete zriedkavé, väčšina šablón v licenciách vyžaduje zachovať odkaz na zdroj, odkiaľ boli získané).

Vyberáme vhodnú šablónu — sú tu na najrozličnejšie prípady, stiahneme archív a rozbalíme ho do adresára /share/nginx/html, je možné to urobiť už z vlastného počítača, potom upravujeme šablónu (tu budú potrebné minimálne znalosti HTML, aby sa nenarušila štruktúra) a nahrádzame grafiku, ako je ukázané na obrázku nižšie.

Umiesťujeme stránku na domácom routeri

Zhrnutie: router je úplne vhodný na umiestnenie ľahkej webovej stránky, v podstate — ak sa nepredpokladá veľká záťaž, môžeme inštalovať aj php, a experimentovať so zložitejšími projektmi (pozerám na nextcloud/owncloud, zdá sa, že sú úspešné inštalácie na takom hardvéri). Možnosť inštalácie balíkov zvyšuje jeho užitočnosť — napríklad, keď bolo potrebné zabezpečiť RDP port PC v lokálnej sieti, nainštaloval som knockd na router — a presmerovanie portu na PC sa otvorilo iba po port knocking.

Prečo práve router, a nie bežný počítač? Router je jedným z mála počítačových zariadení, ktoré fungujú nonstop v mnohých bytoch, domáci router je zvyčajne úplne bezhlučný a ľahká stránka s počtom návštev za deň menej než sto ho úplne nezaťaží.

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster