Ž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":

- 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:

- 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.

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


Zdaj lahko preidemo na "napredni" del, kar sem želel od usmerjevalnika:
- funkcionalnost majhnega NAS za domačo mrežo;
- izvajanje funkcij spletnega strežnika za nekaj zasebnih strani;
- 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 (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.

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

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

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.

Nastavitev shrambe je eden od nujnih korakov pri nastavitvi strežnika, nato moramo:
— 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 — prejmejo DNS gostovanje in pošto na svoji domeni);

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

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 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]:

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 . Ovaj proces nije predstavljao poteškoće, jedino sam se zaglavio na onome što u tekstu skripta za rad na svom usmjerivaču /opt/etc/ssl/openssl.cnf:
[openssl_conf]
#engines=enginesI 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 — 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.

Povzetek: usmerjevalnik je povsem primeren za gostovanje lahkega spletnega mesta, načeloma — če ni predvidene velike obremenitve, lahko , 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
