Webhely tárolása otthoni útválasztóján

Régóta szerettem volna „megérinteni a kezem” az internetes szolgáltatásokat úgy, hogy a nulláról beállítok egy webszervert, és kiadom az internetre. Ebben a cikkben szeretném megosztani tapasztalataimat egy otthoni útválasztónak egy rendkívül funkcionális eszközből szinte teljes értékű szerverré alakításában.

Az egész azzal kezdődött, hogy a hűségesen kiszolgáló TP-Link TL-WR1043ND router már nem felelt meg az otthoni hálózat igényeinek, 5 GHz-es sávot és a routerhez csatlakoztatott tárolóeszközön lévő fájlokhoz való gyors hozzáférést szerettem volna. . Miután átnéztem a speciális fórumokat (4pda, ixbt), a véleményeket tartalmazó webhelyeket, és megnéztem a helyi üzletek választékát, úgy döntöttem, hogy megvásárolom a Keenetic Ultra-t.

A tulajdonosok jó értékelései ennek a készüléknek a javára dolgoztak:

  • nincs probléma a túlmelegedéssel (itt el kellett hagynunk az Asus termékeket);
  • működési megbízhatóság (itt a TP-Link-et áthúztam);
  • könnyű beállítani (féltem, hogy nem bírom, és áthúztam a Microtik-ot).

Meg kellett ismernem a hátrányokat:

  • nincs WiFi6, felszerelést akartam venni tartalékkal a jövőre nézve;
  • 4 LAN port, többre vágytam, de ez már nem otthoni kategória.

Ennek eredményeként ezt a „szervert” kaptuk:

Webhely tárolása otthoni útválasztóján

  • a bal oldalon a Rostelecom optikai terminálja;
  • a jobb oldalon a kísérleti útválasztónk látható;
  • egy 2 GB-os m.128-es SSD hever az Aliexpress USB3-as dobozába, vezetékkel csatlakozik a routerhez, most szépen fel van szerelve a falra;
  • az előtérben egy hosszabbító kábel, egymástól függetlenül leválasztott aljzatokkal, a belőle származó vezeték egy olcsó UPS-hez megy;
  • a háttérben egy köteg csavart érpár - a lakásfelújítás stádiumában egyből RJ45-ös aljzatokat terveztem azokra a helyekre, ahol a berendezésnek el kellett volna helyezkednie, nehogy attól függjön, hogy lomtalanodik a WiFi.

Tehát megvan a berendezés, konfigurálnunk kell:

Webhely tárolása otthoni útválasztóján

  • A router kezdeti beállítása kb 2 percet vesz igénybe, a szolgáltató felé jelezzük a csatlakozási paramétereket (az optikai terminálom bridge módba van kapcsolva, a PPPoE kapcsolat felemeli a routert), a WiFi hálózat nevét és a jelszót - lényegében ennyi. , az útválasztó elindul és működik.

Webhely tárolása otthoni útválasztóján

A „Hálózati szabályok – Továbbítás” részben beállítottuk a külső portok továbbítását magának az útválasztónak a portjaira:

Webhely tárolása otthoni útválasztóján

Webhely tárolása otthoni útválasztóján

Most áttérhetünk a „haladó” részre, amit szerettem volna a routertől:

  1. egy kis NAS funkcionalitása otthoni hálózathoz;
  2. webszerver funkciók ellátása több privát oldalhoz;
  3. személyes felhő funkció a személyes adatok eléréséhez a világ bármely pontjáról.

Az elsőt beépített eszközökkel hajtják végre, különösebb erőfeszítés nélkül:

  • Veszünk egy erre a feladatra szánt meghajtót (flash meghajtó, memóriakártya kártyaolvasóban, merevlemez vagy SSD egy külső dobozban, és Ext4-re formázzuk MiniTool Partition Wizard ingyenes kiadás (Nincs kéznél Linuxos számítógépem, beépített eszközökkel lehetséges). Ha jól tudom, működés közben a rendszer csak naplókat ír a pendrive-ra, így ha a rendszer beállítása után korlátozod ezeket, akkor memóriakártyákat is használhatsz, ha sokat és gyakran írsz a meghajtóra - egy SSD ill. A HDD jobb.

Webhely tárolása otthoni útválasztóján

Ezt követően csatlakoztatjuk a meghajtót az útválasztóhoz, és megfigyeljük a rendszermonitor képernyőjén

Webhely tárolása otthoni útválasztóján

Kattintson az „USB-meghajtók és nyomtatók” elemre az „Alkalmazások” részben, és konfigurálja a megosztást a „Windows hálózat” részben:

Webhely tárolása otthoni útválasztóján

És van egy hálózati erőforrásunk, amely Windows számítógépekről használható, szükség esetén lemezként csatlakozik: net use y: \192.168.1.1SSD /persistent:yes

Egy ilyen rögtönzött NAS sebessége bőven elegendő otthoni használatra, vezetéken keresztül a teljes gigabitet használja, WiFi-n kb 400-500 megabit.

Webhely tárolása otthoni útválasztóján

A tárhely beállítása a szerver konfigurálásához szükséges lépések egyike, akkor a következőkre van szükségünk:
- vásárolni egy domaint és egy statikus IP-címet (ezt meg lehet tenni dinamikus DNS használatával, de nekem már volt statikus IP-címem, így könnyebbnek bizonyult a használata ingyenes Yandex szolgáltatások - a domain oda delegálásával, DNS-tárhelyet és leveleket kapunk a domainünkön);

Webhely tárolása otthoni útválasztóján

- konfigurálja a DNS-kiszolgálókat és add hozzá az IP-re mutató A rekordokat:

Webhely tárolása otthoni útválasztóján

A tartomány és a DNS delegálási beállítások érvénybe lépése több órába telhet, így ezzel párhuzamosan állítjuk be az útválasztót.

Először is fel kell telepítenünk az Entware repository-t, ahonnan a szükséges csomagokat telepíthetjük a routerre. kihasználtam ezt az utasítást, csak nem FTP-n keresztül töltötte fel a telepítőcsomagot, hanem közvetlenül a korábban csatlakoztatott hálózati meghajtón hozott létre egy mappát, és a szokásos módon másolta oda a fájlt.

Miután elérte az SSH-t, módosítsa a jelszót a passwd paranccsal, és telepítse az összes szükséges csomagot az opkg install [csomagnevek] paranccsal:

Webhely tárolása otthoni útválasztóján

A telepítés során a következő csomagok kerültek az útválasztóra (az opkg list-installed parancs kimenete):

Csomagok listája
bash - 5.0-3
busybox - 1.31.1-1
ca-bundle - 20190110-2
ca-tanúsítványok - 20190110-2
coreutils - 8.31-1
coreutils-mktemp - 8.31-1
cron - 4.1-3
göndör - 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
libuid - 2.35.1-1
libxml2 - 2.9.10-1
nyelvek - 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
szegénydoboz - 1.31.1-2
terminfo - 6.2-1
zlib - 1.2.11-3
zoneinfo-asia - 2019c-1
zoneinfo-europe - 2019c-1

Talán volt itt valami felesleges, de sok hely volt a meghajtón, úgyhogy nem foglalkoztam vele.

A csomagok telepítése után beállítjuk az nginxet, én két domainnel próbáltam - a második https-el van beállítva, és egyelőre van egy csonk. A 81-as és 433-as helyett a 80-es és 443-as belső portot használják, mivel az útválasztó adminisztrációs panelje a normál portokon lóg.

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

Annak érdekében, hogy az oldal https-en keresztül működjön, a jól ismert dehidratált szkriptet használtam, amelyet a segítségével telepítettem ezt az utasítást. Ez a folyamat nem okozott nehézséget, csak arra a tényre botlottam bele, hogy a szkript szövegében a routeren való munkához kommentálnia kell a fájl sorát /opt/etc/ssl/openssl.cnf:

[openssl_conf]
#engines=engines

És megjegyzem, hogy a dhparams.pem előállítása az „openssl dhparam -out dhparams.pem 2048” paranccsal a routeren több mint 2 órát vesz igénybe, ha nem a folyamatjelző, elvesztettem volna a türelmem és újraindítottam volna.

A tanúsítványok kézhezvétele után indítsa újra az nginx-et az „/opt/etc/init.d/S80nginx restart” paranccsal. A beállítás elvileg kész, de weboldal még nincs - ha az index.html fájlt betesszük a /share/nginx/html könyvtárba, akkor egy csonkot fogunk látni.

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>

Az információk szép elhelyezéséhez egy hozzám hasonló nem profi könnyebben kész sablonokat használ; hosszas keresgélés után a különböző katalógusokban rájöttem templatemo.com - jó a választék az ingyenes sablonokból, amelyek nem igényelnek forrásmegjelölést (ami ritka az interneten; a licencben szereplő sablonok többsége megköveteli, hogy mentse a hivatkozást arra az erőforrásra, ahonnan beszerezte).

Kiválasztunk egy megfelelő sablont - sokféle esetre van, töltse le az archívumot és csomagolja ki a /share/nginx/html könyvtárba, ezt megteheti a számítógépéről, majd szerkesztheti a sablont (itt minimális tudásra lesz szüksége HTML-ből, hogy ne sértse meg a szerkezetet), és cserélje ki a grafikát az alábbi ábrán látható módon.

Webhely tárolása otthoni útválasztóján

Összegzés: a router eléggé alkalmas egy könnyű weboldal elhelyezésére, elvileg - ha nem várható nagy terhelés, akkor install és php, és kísérletezzen bonyolultabb projektekkel (nézem a nextcloud/owncloud-ot, úgy tűnik, vannak sikeres telepítések ilyen hardverre). A csomagok telepítésének lehetősége növeli a hasznosságát - például amikor egy PC RDP-portját kellett védeni egy helyi hálózaton, telepítettem a knockd-t a routerre -, és a port továbbítása a PC-re csak a port kopogtatása után nyílt meg.

Miért egy router és nem egy hagyományos PC? A router azon kevés számítógépes hardver egyike, amely sok lakásban éjjel-nappal működik; az otthoni router általában teljesen néma, és a napi száznál kevesebb látogatást jelentő könnyű oldal egyáltalán nem zavarja.

Forrás: will.com

Hozzászólás