Mulle on juba ammu meeldinud proovida internetiteenuseid, seades veebiserverit nullist ja viies selle Internetti. Selles artiklis tahan jagada saadud kogemust koduse ruuteri muutmisest praktiliselt täisväärtuslikuks serveriks.
Kõik sai alguse sellest, et truud TP-Link TL-WR1043ND ruuter ei rahuldanud enam koduvõrgu vajadusi, tekkinud oli soov 5 GHz sagedusala ja kiire juurdepääs failidele, mis on ruuterile ühendatud salvestusseadmest. Uurisin spetsialiseeritud foorumeid (4pda, ixbt), arvustuste saite ja vaatasin kohalikke kauplusi — otsustasin osta Keenetic Ultra.
Selle seadme kasuks rääkisid head omanike hinnangud:
- ülevaatusprobleemide puudumine (siin tuli loobuda Asus toodetest);
- töös usaldusväärsus (siin välistas TP-Link);
- lihtsus seadistamisel (kartsin, et ei saa hakkama, ja välistas Microtiki).
Pidin leppima miinustega:
- pole WiFi6, tahtsin seadme, mis oleks tulevikuks varuks;
- 4 LAN porti, tahtsin rohkem, aga see pole enam kodukaubandus.
Lõpuks sai selline "serveri" käitamine:

- vasakul on Rostelecomi optiline terminal;
- paremal on meie katsealana kasutatav ruuter;
- ruuteriga on ühendatud ühel küljel alustatud m.2 SSD, mille ma ostsin AliExpressist, see on praegu korralikult seinale kinnitatud;
- esiplaanil on pikendusjuhe, millel on sõltumatu pistikute väljalülitamine, juhe sellelt läheb odavale UPS-ile;
- taustal on paarike keermejuhtmeid — korteri renoveerimise etapis planeerisin kohe RJ45 pistikud seadmete kavandatud asukoha juures, et vältida WiFi räpasust.
Nii et meil on olemas varustus, tuleb see seadistada:

- ruuteri esialgne seadistamine kestab umbes 2 minutit, määrame teenusepakkujaga ühenduse parameetrid (minu optiline terminal on lülitatud sillarežiimi, PPPoE ühendus tõstatab ruuteri), WiFi võrgu nimi ja parool — põhimõtteliselt on kõik, ruuter käivitub ja töötab.

Seame välispordid suunama ruuteri portidesse jaotises "Võrgureeglid — Suunamine":


Nüüd saab edasi liikuda „edasiarendatud“ osani, mida ma ruuterilt tahtsin:
- väikese NAS-i funktsionaalsus koduvõrgu jaoks;
- veebiserveri funktsioonide täitmine mitme privaatse lehe jaoks;
- isikliku pilve funktsioon, et pääseda isiklikele andmetele igal pool maailmas.
Esimene saavutatakse sisseehitatud vahendite abil, mitte erilisi pingutusi nõudmata:
- võtame selleks määratud salvestusseadme (fleksi, mälukaardi kaardilugejas, välise kõvaketta või SSD) ja vormindame selle Ext4 formaati (mul ei ole käepärast Linuxi arvutit, seal saab kasutada sisseehitatud vahendeid). Kuidas ma aru saan, kirjutab süsteem failidele ainult logisid, seega, kui piirata neid pärast süsteemi seadistamist — võivad mälukaardid olla ka kasutamiseks, kuid kui plaanite sageli salvestada — siis eelistage SSD või HDD.

Pärast seda ühendame salvestusseadme ruuteriga ja vaatame seda süsteemi monitori ekraanil

Klõpsame „USB-diskid ja printerid“ ja liikume jaotisse „Rakendused“, et seadistada jagatud ressurssi jaotises „Windowsi võrk“:

Ja meil on võrguressurss, mida saab kasutada Windowsi arvutitest, vajadusel ühendades selle kettana: net use y: \\192.168.1.1SSD \/persistent:yes
Sellise improvisatsiooni NAS-i kiirus on täiesti piisav koduseks kasutamiseks; kaabli kaudu kasutab see kogu gigabitti, WiFi kiirus on umbes 400-500 megabitti.

Salvestuse seadistamine on üks vajalikest sammudest serveri seadistamisel; järgmised toimingud, mida peame tegema:
— ja staatiline IP-aadress (selle võib lahendada ka dünaamilise DNS-iga, kuid mul oli juba staatiline IP olemas, seega oli lihtsam kasutada — , saame domeeni DNS-hostingu ja postkasti);

— ja lisada A-kirjeid, mis viitavad teie IP-le:

Domeeni delegeerimise ja DNS-i seadete jõustumine võtab paar tundi, seega tegeleme samal ajal ruuteri seadistamisega.
Esiteks on vajalik paigaldada Entware'i repostiit, kust me saame ruuterile vajalikke pakette installida. Kasutasin , ainult et ei laadinud installipaketti FTP kaudu üles, vaid lõin kausta otse varem ühendatud võrgudiskile ja kopeerisin sinna faili tavalisel viisil.
SSH-ühenduse saamisel muudame parooli käsuga passwd ja installime käsuga opkg install [pakettide nimed] kõik vajalikud paketid:

Seadistamisel avastati ruuteris järgmised paketid (käsu opkg list-installed väljund):
Pakettide nimekiri
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
Võimalik, et siin on midagi üleliigset, aga mäluruumi on palju, seega ei hakanud süvenema.
Paketite paigaldamise järel seadistame nginx'i. Proovisin kahte domeeni — teisel on seadistatud https ja seal ripub hetkel vaikimisi leht. 81 ja 433 on sisemised pordid, mida kasutatakse 80 ja 443 asemel, kuna tavapärastes portides on suunatud ruuteri admin paneelid.
etc/nginx/nginx.conf
kasutaja 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 toetus
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;
}
}
}
\n\nssl_certificate /opt/etc/nginx/certs/milkov.su/fullchain.pem;\nssl_certificate_key /opt/etc/nginx/certs/milkov.su/privkey.pem;\nssl_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';\nssl_prefer_server_ciphers on;\nssl_dhparam /opt/etc/nginx/dhparams.pem;\nssl_session_cache shared:SSL:10m;\nssl_session_timeout 5m;\nssl_stapling on;Selleks, et veebisait töötaks https-i kaudu, kasutasin tuntud skripti dehydrated, installides selle . Selle protsessiga ei olnud probleeme, komistasin vaid sellel, et skripti tekstis minu ruuteril töötamiseks /opt/etc/ssl/openssl.cnf:
[openssl_conf]
#engines=enginesJa märgin, et dhparams.pem genereerimine käsuga „openssl dhparam -out dhparams.pem 2048” minu ruuteril võtab rohkem kui 2 tundi; kui mitte progressi indikaatori eest — oleksin kaotanud kannatlikkuse ja taaskäivitanud.
Pärast sertifikaatide saamist taaskäivitame nginx-i käsuga "/opt/etc/init.d/S80nginx restart". Praktiliselt on seade lõpetatud, kuid veebisaiti veel ei ole — kui paneme katalooge /share/nginx/html faili index.html, näeme peatumispunkti.
index.html
<!DOCTYPE html>
<html>
<head>
<title>Testleht!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Testleht!</h1>
<p>See on lihtne staatiline testleht, täiesti mitte midagi huvitavat.</p>
</body>
</html>Et esitada teavet kaunilt, on algajale nagu mina lihtsam kasutada valmis malle, pärast pikka erinevate kataloogide sirvimist leidsin — seal on hea valik tasuta malle, mis ei nõua autorikrediidi säilitamist (see on internetis haruldus, enamik malle litsentsides nõuavad lingi säilitamist allika juurde, kust need on saadud).
Valime sobiva šablooni — seal on erinevatele juhtumitele, laadime arhiivi alla ja puhastame selle katalooge /share/nginx/html, seda saab teha juba oma arvutist, seejärel redigeerime šablooni (siin on vajalikud minimaalset HTML-oskused, et mitte rikkuda struktuuri) ja asendame graafika, nagu on näidatud alloleval joonisel.

Kokkuvõte: ruuter sobib hästi kerge saidi majutamiseks, põhimõtteliselt — kui ei planeerita suurt koormust, on võimalik. , ja katsetada keerukamate projektidega (olen jälginud nextcloud/owncloud, tundub, et sellisel riistvaral on edukaid paigaldusi). Pakettide installimise võimalus suurendab selle kasulikkust — näiteks, kui oli vaja kaitsta RDP-porti PC-s kohalikus võrgus, paigaldasin knockd ruuterisse — ja porti ülekandmine PC-le avaneb ainult pärast port knockingut.
Miks just ruuter, mitte tavaline PC? Ruuter on üks väheseid arvuti komponente, mis töötab ööpäevaringselt paljudes korterites, kodune ruuter on tavaliselt täiesti müravaba ja kerge sait, millel on päevas vähem kui sada külastust, ei koorma seda absoluutselt.
Allikas: habr.com
