Hosting web stranice na kućnom routeru

Dugo sam želio "dotaknuti ruke" internetskih usluga postavljanjem web poslužitelja od nule i puštanjem ga na Internet. U ovom članku želim podijeliti svoje iskustvo u pretvaranju kućnog usmjerivača iz visoko funkcionalnog uređaja u gotovo punopravni poslužitelj.

Sve je počelo s činjenicom da usmjerivač TP-Link TL-WR1043ND, koji je vjerno služio, više nije zadovoljavao potrebe kućne mreže; želio sam pojas od 5 GHz i brz pristup datotekama na uređaju za pohranu spojenom na usmjerivač . Nakon pregledavanja specijaliziranih foruma (4pda, ixbt), stranica s recenzijama i pregledavanja asortimana domaćih trgovina, odlučio sam kupiti Keenetic Ultra.

Dobre recenzije vlasnika radile su u korist ovog uređaja:

  • nema problema s pregrijavanjem (ovdje smo morali napustiti Asus proizvode);
  • radna pouzdanost (ovdje sam prekrižio TP-Link);
  • lako se postavlja (bojao sam se da se ne snalazim i prekrižio Microtik).

Morao sam se pomiriti s nedostacima:

  • nema WiFi6, htio sam uzeti opremu s rezervom za budućnost;
  • 4 LAN porta, htio sam više, ali ovo više nije kućna kategorija.

Kao rezultat, dobili smo ovaj "poslužitelj":

Hosting web stranice na kućnom routeru

  • s lijeve strane je optički terminal Rostelecoma;
  • desno je naš eksperimentalni router;
  • 2 GB m.128 SSD koji leži uokolo, smješten u USB3 kutiju iz Aliexpressa, povezan je s routerom žicom, sada je uredno postavljen na zid;
  • u prvom planu je produžni kabel s neovisno odvojenim utičnicama, žica iz njega ide na jeftin UPS;
  • u pozadini je hrpa kabela s upletenim paricama - u fazi renoviranja stana odmah sam planirao RJ45 utičnice na mjestima gdje je oprema trebala biti smještena, kako ne bih ovisila o zatrpavanju WiFi-ja.

Dakle, imamo opremu, moramo je konfigurirati:

Hosting web stranice na kućnom routeru

  • Početno postavljanje usmjerivača traje oko 2 minute, pružatelju navodimo parametre veze (moj optički terminal je prebačen u način rada mosta, PPPoE veza podiže usmjerivač), naziv WiFi mreže i lozinku - u biti to je to , ruter se pokreće i radi.

Hosting web stranice na kućnom routeru

Postavljamo prosljeđivanje vanjskih priključaka na priključke samog usmjerivača u odjeljku "Mrežna pravila - Prosljeđivanje":

Hosting web stranice na kućnom routeru

Hosting web stranice na kućnom routeru

Sada možemo prijeći na "napredni" dio, ono što sam želio od rutera:

  1. funkcionalnost malog NAS-a za kućnu mrežu;
  2. izvođenje funkcija web poslužitelja za nekoliko privatnih stranica;
  3. funkcionalnost osobnog oblaka za pristup osobnim podacima s bilo kojeg mjesta u svijetu.

Prvi se implementira pomoću ugrađenih alata, bez puno truda:

  • Uzimamo pogon namijenjen za tu ulogu (flash disk, memorijsku karticu u čitaču kartica, tvrdi disk ili SSD u vanjskoj kutiji i formatiramo ga u Ext4 koristeći Čarobnjak za particije MiniTool Besplatno izdanje (Nemam računalo s Linuxom pri ruci, moguće je s ugrađenim alatima). Koliko sam shvatio, tijekom rada sustav zapisuje samo zapise na flash pogon, pa ako ih ograničite nakon postavljanja sustava, možete koristiti i memorijske kartice ako planirate puno i često pisati na pogon - SSD ili HDD je bolji.

Hosting web stranice na kućnom routeru

Nakon toga povezujemo pogon s usmjerivačem i promatramo ga na zaslonu monitora sustava

Hosting web stranice na kućnom routeru

Kliknite na “USB pogoni i pisači” u odjeljak “Aplikacije” i konfigurirajte zajedničko korištenje u odjeljku “Windows mreža”:

Hosting web stranice na kućnom routeru

I imamo mrežni resurs koji se može koristiti s Windows računala, povezujući se kao disk ako je potrebno: ​​net use y: \192.168.1.1SSD /persistent:yes

Brzina ovakvog improviziranog NAS-a sasvim je dovoljna za kućnu upotrebu, preko žice koristi cijeli gigabit, preko WiFi-a brzina je oko 400-500 megabita.

Hosting web stranice na kućnom routeru

Postavljanje pohrane jedan je od nužnih koraka za konfiguriranje poslužitelja, a zatim nam je potrebno:
- kupiti domenu i statičku IP adresu (možete i bez toga pomoću dinamičkog DNS-a, ali ja sam već imao statičku IP adresu pa se pokazalo lakšim za korištenje besplatne Yandex usluge - delegiranjem domene tamo, primamo DNS hosting i poštu na našoj domeni);

Hosting web stranice na kućnom routeru

- konfigurirati DNS poslužitelje i dodajte A zapise koji upućuju na vaš IP:

Hosting web stranice na kućnom routeru

Potrebno je nekoliko sati da postavke domene i delegiranja DNS-a stupe na snagu, tako da istovremeno postavljamo usmjerivač.

Prvo moramo instalirati Entware repozitorij iz kojeg možemo instalirati potrebne pakete na ruter. Iskoristio sam prednost s ovom uputom, samo nije prenio instalacijski paket putem FTP-a, već je stvorio mapu izravno na prethodno spojenom mrežnom disku i tamo kopirao datoteku na uobičajeni način.

Nakon što ste dobili pristup putem SSH-a, promijenite lozinku naredbom passwd i instalirajte sve potrebne pakete naredbom opkg install [package names]:

Hosting web stranice na kućnom routeru

Tijekom postavljanja sljedeći su paketi instalirani na usmjerivaču (izlaz naredbe opkg list-installed):

Popis paketa
bash - 5.0-3
busybox - 1.31.1-1
ca-paket - 20190110-2
ca-certifikati - 20190110-2
coreutils - 8.31-1
coreutils-mktemp - 8.31-1
cron - 4.1-3
kovrča - 7.69.0-1
difutili - 3.7-2
padajući medvjed - 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-puno - 1.11.1-4
libintl-pun - 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
lokaliteti - 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
sirotište - 1.31.1-2
terminfo - 6.2-1
zlib - 1.2.11-3
zoneinfo-asia - 2019c-1
zoneinfo-europe - 2019c-1

Možda je tu bilo nečeg suvišnog, ali na disku je bilo puno prostora, pa se nisam trudio gledati u njega.

Nakon instaliranja paketa konfiguriramo nginx, probao sam sa dvije domene - druga je konfigurirana sa https, i za sada postoji stub. Interni priključci 81 i 433 koriste se umjesto 80 i 443, budući da administratorska ploča usmjerivača visi na normalnim priključcima.

itd/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;

Da bi stranica radila preko https-a, koristio sam dobro poznatu dehidriranu skriptu, instalirajući je pomoću ovu uputu. Ovaj proces nije izazvao nikakve poteškoće, samo sam naišao na činjenicu da u tekstu skripte za rad na mom ruteru trebate komentirati redak u datoteci /opt/etc/ssl/openssl.cnf:

[openssl_conf]
#engines=engines

Napominjem da generiranje dhparams.pem s naredbom “openssl dhparam -out dhparams.pem 2048” na mom usmjerivaču traje više od 2 sata, da nema indikatora napretka, izgubio bih strpljenje i ponovno pokrenuo sustav.

Nakon primitka certifikata ponovno pokrenite nginx naredbom “/opt/etc/init.d/S80nginx restart”. U principu, postavljanje je završeno, ali još nema web stranice - ako datoteku index.html stavimo u /share/nginx/html direktorij, vidjet ćemo 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>

Za lijepo postavljanje informacija, neprofesionalcu poput mene lakše je koristiti gotove predloške; nakon dugog pretraživanja po raznim katalozima, našao sam templatemo.com - postoji dobar izbor besplatnih predložaka koji ne zahtijevaju atribuciju (što je rijetkost na Internetu; većina predložaka u licenci zahtijeva da spremite vezu na izvor iz kojeg su dobiveni).

Odaberemo prikladan predložak - postoje oni za razne slučajeve, preuzmite arhivu i raspakirajte je u direktorij /share/nginx/html, to možete učiniti sa svog računala, a zatim uredite predložak (ovdje će vam trebati minimalno znanje HTML-a kako ne biste pokvarili strukturu) i zamijenite grafiku kao što je prikazano na donjoj slici.

Hosting web stranice na kućnom routeru

Sažetak: ruter je sasvim prikladan za hostiranje lagane web stranice na njemu, u principu - ako ne očekujete veliko opterećenje, možete instalirati i php, i eksperimentirati sa složenijim projektima (gledam nextcloud/owncloud, čini se da postoje uspješne instalacije na takav hardver). Mogućnost instaliranja paketa povećava njegovu korisnost - na primjer, kada je bilo potrebno zaštititi RDP port računala na lokalnoj mreži, instalirao sam knockd na ruter - i prosljeđivanje porta na računalo otvaralo se tek nakon kucanja porta.

Zašto usmjerivač, a ne obično računalo? Usmjerivač je jedan od rijetkih računalnih dijelova hardvera koji u mnogim stanovima radi danonoćno; kućni usmjerivač obično je potpuno tih i lagana stranica s manje od stotinu posjeta dnevno neće mu smetati.

Izvor: www.habr.com

Dodajte komentar