Postavimo spletno stran na domačem usmerjevalniku

Že dolgo sem želel "sprobat" internetne storitve, tako da sem nastavil spletni strežnik od nič in ga izdal na internet. V tem članku želim deliti pridobljene izkušnje pri pretvorbi domačega usmerjevalnika iz ožjega funkcionalnega naprave v praktično popoln strežnik.

Vse se je začelo, ko usmerjevalnik TP-Link TL-WR1043ND, ki je dolgo zvesto služil, ni več zadostoval potrebam domače mreže, želel sem pasovno širino 5GHz in hiter dostop do datotek, povezanih z usmerjevalnikom. Po pregledu specializiranih forumov (4pda, ixbt), spletnih mest z mnenji in ogledu izbire lokalnih trgovin, sem se odločil za nakup Keenetic Ultra.

V prid temu napravi so prišli dobri pregledi uporabnikov:

  • ni težav s pregrevanjem (tu sem moral opustiti izdelke Asus);
  • zanesljivost pri delu (tu sem izključil TP-Link);
  • enostavnost nastavitve (bojal sem se, da ne bom zmogel, zato sem izključil Microtik).

Moral sem se sprijazniti z minusi:

  • ni WiFi6, želel sem opremo s rezervo za prihodnost;
  • 4 LAN priključki, želel sem več, ampak to že ni domača kategorija.

Na koncu je nastala taka "strežniška":

Postavimo spletno stran na domačem usmerjevalniku

  • levo optični terminal Rostelekoma;
  • desno naš preizkušeni usmerjevalnik;
  • s kablom do usmerjevalnika je povezan m.2 SSD na 128 GB, ki je bil shranjen v USB3 škatli z Aliexpressa, zdaj je lepo pritrjen na steno;
  • v ospredju je podaljšek z neodvisnim izklapljanjem vtičnic, kabel od njega gre do cenovno ugodnega UPS;
  • v ozadju je šopek zavitih parov - med obnovo stanovanja sem takoj načrtoval RJ45 vtičnice na mestih predvidenega postavljanja naprave, da ne bi bil odvisen od zamašenosti WiFi.

Torej, imamo opremo, potrebno jo je nastaviti:

Postavimo spletno stran na domačem usmerjevalniku

  • prva nastavitev usmerjevalnika traja približno 2 minuti, navedemo parametre povezave s ponudnikom (moj optični terminal je preklopljen v način bridga, PPPoE povezava dvigne usmerjevalnik), ime WiFi omrežja in geslo - v bistvu je to vse, usmerjevalnik se zažene in deluje.

Postavimo spletno stran na domačem usmerjevalniku

Nastavimo preusmerjanje zunanjih vrat na vrata samega usmerjevalnika v razdelku "Mrežna pravila - Preusmerjanje":

Postavimo spletno stran na domačem usmerjevalniku

Postavimo spletno stran na domačem usmerjevalniku

Zdaj lahko preidemo na "napredni" del, kar sem želel od usmerjevalnika:

  1. funkcionalnost majhnega NAS za domačo mrežo;
  2. izvajanje funkcij spletnega strežnika za nekaj zasebnih strani;
  3. funkcionalnost osebnega oblaka za dostop do osebnih podatkov z katere koli točke sveta.

To se prvič uresniči z vgrajenimi sredstvi, brez potrebe po posebnih naporih:

  • vzeti napravo, namenjeno tej vlogi (USB ključek, pomnilniško kartico v čitalniku, zunanji trdi disk ali SSD, in jo formatirati v Ext4 s pomočjo MiniTool Partition Wizard Free Edition (nimam računalnika z linuxom pri roki, tam je to možno z vgrajenimi sredstvi). Tako razumem, da sistem pri delu piše samo dnevnike na USB ključek, zato, če jih omejite po nastavitvi sistema — lahko uporabite tudi pomnilniške kartice, če načrtujete veliko in pogosto pisanje na napravo — raje izberite SSD ali HDD.

Postavimo spletno stran na domačem usmerjevalniku

Po tem priključimo napravo na usmerjevalnik in jo opazujemo na zaslonu sistemskega monitorja.

Postavimo spletno stran na domačem usmerjevalniku

Z klikom na 'USB-napravice in tiskalniki' preidemo v razdelek 'Aplikacije' in nastavimo skupni vir v razdelku 'Windows omrežje':

Postavimo spletno stran na domačem usmerjevalniku

Tako imamo omrežni vir, ki ga lahko uporabljamo z računalniki, ki tečejo Windows, in ga po potrebi povezujemo kot disk: net use y: \\192.168.1.1SSD /persistent:yes

Hitrost te improvizirane NAS naprave je povsem zadostna za domačo rabo, po kablu uporablja cel gigabit, po WiFi pa hitrost dosega okoli 400-500 megabitov.

Postavimo spletno stran na domačem usmerjevalniku

Nastavitev shrambe je eden od nujnih korakov pri nastavitvi strežnika, nato moramo:
— pridobiti domeno in statični IP naslov (lahko gre tudi brez tega, z uporabo Dynamic DNS, vendar sem že imel statični IP, zato je bilo lažje uporabiti brezplačne storitve Yandexa — in delegirati domeno tja,prejmejo DNS gostovanje in pošto na svoji domeni);

Postavimo spletno stran na domačem usmerjevalniku

— nastaviti DNS strežnike in dodati A-zapise, ki kažejo na vaš IP:

Postavimo spletno stran na domačem usmerjevalniku

Učinkovanje nastavitev delegiranja domene in DNS traja nekaj ur, zato se paralelno ukvarjamo z nastavitvijo usmerjevalnika.

Najprej je potrebno namestiti repozitorij Entware, iz katerega bomo lahko namestili potrebne pakete na usmerjevalnik. Uporabil sem to navodilo,le da nisem nalagal namestitvenega paketa prek FTP, ampak sem ustvaril mapo neposredno na prej priključeni omrežni disk in vanjo prekopiral datoteko na običajen način.

Ko pridobimo dostop prek SSH, zamenjamo geslo z ukazom passwd in namestimo vse potrebne pakete z ukazom opkg install [imena paketov]:

Postavimo spletno stran na domačem usmerjevalniku

Med nastavitvijo so na usmerjevalniku bili nameščeni naslednji paketi (rezultat izhoda ukaza opkg list-installed):

Seznam paketov
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

Morda je nekaj odveč, a ker je prostora na disku dovolj, se nisem ukvarjal s tem.

Po namestitvi paketov nastavljamo nginx, poskusil sem z dvema domenama — druga ima nastavljen https, in trenutno je tam samo zasilna stran. Uporabljam notranje porte 81 in 433 namesto 80 in 443, ker so na standardnih portih povezana upravljalska orodja usmerjevalnika.

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;

Da bi web stranica radila putem https, iskoristio sam poznati skript dehydrated, instalirao ga prema ovim uputstvom. Ovaj proces nije predstavljao poteškoće, jedino sam se zaglavio na onome što u tekstu skripta za rad na svom usmjerivaču moram iskomentirati redak u datoteci /opt/etc/ssl/openssl.cnf:

[openssl_conf]
#engines=engines

I napominjem da generacija dhparams.pem komandom „openssl dhparam -out dhparams.pem 2048“ na mom usmjerivaču traje više od 2 sata, da nije bilo indikatora napretka — izgubio bih strpljenje i ponovno pokrenuo.

Nakon dobijanja certifikata ponovno pokrećemo nginx komandom "\/opt\/etc\/init.d\/S80nginx restart". U suštini, na tome je konfiguracija završena, ali web stranica još ne postoji — ako stavimo u direktorij \/share\/nginx\/html datoteku index.html, vidjet ćemo obavijest.

index.html

<!DOCTYPE html>
<html>
<head>
<title>Testna stranica!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Testna stranica!</h1>
<p>To je jednostavna statična testna stranica, apsolutno ništa zanimljivo.</p>
</body>
</html>

Da bih informacije postavio lepo, neprofesionalcu poput mene je lakše koristiti gotove šablone, nakon dugog pretraživanja raznih direktorija pronašao sam templatemo.com — tam je dober izbor brezplačnih predlog, ki ne zahtevajo obveznega navajanja avtorstva (kar je redkost na internetu, saj večina predlog v licenčnem dogovoru zahteva, da ohranite povezavo na vir, od koder so pridobljene).

Izberemo ustrezen predlog — tam je za najrazličnejše primere, prenesemo arhiv in ga razpakiramo v imenik /share/nginx/html, to lahko storimo že s svojega računalnika, nato uredimo predlog (tu so potrebna minimalna znanja HTML, da ne motimo strukture) in zamenjamo grafiko, kot je prikazano na spodnji sliki.

Postavimo spletno stran na domačem usmerjevalniku

Povzetek: usmerjevalnik je povsem primeren za gostovanje lahkega spletnega mesta, načeloma — če ni predvidene velike obremenitve, lahko namestimo tudi php, in eksperimentiramo z bolj zapletenimi projekti (gledam na nextcloud/owncloud, zdi se, da so uspešne namestitve na to strojno opremo). Možnost namestitve paketov povečuje njegovo uporabnost — na primer, ko je bilo treba zaščititi RDP vrata računalnika v lokalnem omrežju, sem namestil knockd na usmerjevalnik — in preusmeritev vrat na računalnik se je odprla šele po port knocking.

Zakaj ravno usmerjevalnik, ne običajen računalnik? Usmerjevalnik je ena redkih računalniških naprav, ki delujejo neprekinjeno v mnogih stanovanjih, domači usmerjevalnik je običajno popolnoma brezšumen in lahko spletno mesto z manj kot sto obiskovalci na dan zanj ne predstavlja obremenitve.

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster