Gostovanje spletnega mesta na domačem usmerjevalniku

Že dolgo sem si želel "dotakniti roke" internetnih storitev tako, da sem iz nič postavil spletni strežnik in ga dal v internet. V tem članku želim deliti svoje izkušnje pri preoblikovanju domačega usmerjevalnika iz zelo funkcionalne naprave v skoraj polnopravni strežnik.

Vse se je začelo s tem, da usmerjevalnik TP-Link TL-WR1043ND, ki je zvesto služil, ni več ustrezal potrebam domačega omrežja; želel sem pas 5 GHz in hiter dostop do datotek na pomnilniški napravi, povezani z usmerjevalnikom. . Po ogledu specializiranih forumov (4pda, ixbt), strani z ocenami in ogledu ponudbe lokalnih trgovin sem se odločil za nakup Keenetic Ultra.

Dobre ocene lastnikov so delovale v prid tej napravi:

  • brez težav s pregrevanjem (tukaj smo morali opustiti izdelke Asus);
  • zanesljivost delovanja (tukaj sem prečrtal TP-Link);
  • enostaven za postavitev (bal sem se, da ne bom zmogel in prečrtal Microtik).

Moral sem se sprijazniti s slabostmi:

  • brez WiFi6, hotel sem vzeti opremo z rezervo za prihodnost;
  • 4 LAN priključki, želel sem več, vendar to ni več domača kategorija.

Kot rezultat smo dobili ta "strežnik":

Gostovanje spletnega mesta na domačem usmerjevalniku

  • na levi je optični terminal Rostelecoma;
  • na desni je naš poskusni usmerjevalnik;
  • 2 GB m.128 SSD leži naokoli, vstavljen v škatlo USB3 iz Aliexpressa, povezan z usmerjevalnikom z žico, zdaj je lepo nameščen na steni;
  • v ospredju je podaljšek z neodvisno odklopljenimi vtičnicami, žica iz njega gre v poceni UPS;
  • v ozadju je kup kablov z zvitimi pari - v fazi prenove stanovanja sem takoj načrtoval vtičnice RJ45 na mestih, kjer naj bi bila oprema, da ne bi bil odvisen od smeti WiFi.

Torej, imamo opremo, moramo jo konfigurirati:

Gostovanje spletnega mesta na domačem usmerjevalniku

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

Gostovanje spletnega mesta na domačem usmerjevalniku

Posredovanje zunanjih vrat na vrata samega usmerjevalnika nastavimo v razdelku »Omrežna pravila - Posredovanje«:

Gostovanje spletnega mesta na domačem usmerjevalniku

Gostovanje spletnega mesta na domačem usmerjevalniku

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

  1. funkcionalnost majhnega NAS za domače omrežje;
  2. izvajanje funkcij spletnega strežnika za več zasebnih strani;
  3. funkcionalnost osebnega oblaka za dostop do osebnih podatkov od kjerkoli na svetu.

Prvi se izvaja z vgrajenimi orodji, ne da bi zahteval veliko truda:

  • Vzamemo disk, namenjen za to vlogo (flash disk, pomnilniško kartico v čitalniku kartic, trdi disk ali SSD v zunanji škatli in ga formatiramo v Ext4 z uporabo Čarovnik za mini particijo MiniTool Free Edition (Računalnika z Linuxom nimam pri roki, možno je z vgrajenimi orodji). Kolikor razumem, sistem med delovanjem piše samo dnevnike na bliskovni pogon, tako da če jih po nastavitvi sistema omejite, lahko uporabite tudi pomnilniške kartice, če nameravate veliko in pogosto pisati na pogon - SSD oz. HDD je boljši.

Gostovanje spletnega mesta na domačem usmerjevalniku

Po tem pogon priključimo na usmerjevalnik in ga opazujemo na zaslonu sistemskega monitorja

Gostovanje spletnega mesta na domačem usmerjevalniku

Kliknite »Pogoni USB in tiskalniki« v razdelku »Aplikacije« in konfigurirajte skupno rabo v razdelku »Omrežje Windows«:

Gostovanje spletnega mesta na domačem usmerjevalniku

In imamo omrežni vir, ki ga lahko uporabljamo iz računalnikov z operacijskim sistemom Windows in se po potrebi povežemo kot disk: ​​net use y: \192.168.1.1SSD /persistent:yes

Hitrost takega improviziranega NAS-a je povsem zadostna za domačo uporabo, po žici porabi cel gigabit, po WiFi je hitrost okoli 400-500 megabitov.

Gostovanje spletnega mesta na domačem usmerjevalniku

Nastavitev pomnilnika je eden od potrebnih korakov za konfiguracijo strežnika, potem potrebujemo:
- kupiti domeno in statični naslov IP (brez tega lahko storite z uporabo dinamičnega DNS-ja, vendar sem že imel statični IP, zato se je izkazalo, da je lažji za uporabo brezplačne storitve Yandex - z delegiranjem domene tja, na svojo domeno prejemamo gostovanje DNS in pošto);

Gostovanje spletnega mesta na domačem usmerjevalniku

- konfigurirajte DNS strežnike in dodajte zapise A, ki kažejo na vaš IP:

Gostovanje spletnega mesta na domačem usmerjevalniku

Traja nekaj ur, da nastavitve domene in delegiranja DNS začnejo veljati, zato hkrati nastavljamo usmerjevalnik.

Najprej moramo namestiti repozitorij Entware, iz katerega lahko namestimo potrebne pakete na usmerjevalnik. Izkoristil sem to navodilo, preprosto ni naložil namestitvenega paketa prek FTP, ampak je ustvaril mapo neposredno na predhodno povezanem omrežnem pogonu in tja kopiral datoteko na običajen način.

Ko pridobite dostop prek SSH, spremenite geslo z ukazom passwd in namestite vse potrebne pakete z ukazom opkg install [package names]:

Gostovanje spletnega mesta na domačem usmerjevalniku

Med namestitvijo so bili na usmerjevalnik nameščeni naslednji paketi (izhod ukaza opkg list-installed):

Seznam paketov
bash - 5.0-3
busybox - 1.31.1-1
ca-sveženj - 20190110-2
ca-certifikati - 20190110-2
coreutils - 8.31-1
coreutils-mktemp - 8.31-1
kron - 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-poln - 1.11.1-4
libintl-poln - 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
kraji - 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 bilo tu kaj odvečnega, vendar je bilo na pogonu veliko prostora, zato se nisem trudil gledati vanj.

Po namestitvi paketov konfiguriramo nginx, poskusil sem z dvema domenama - druga je konfigurirana s https, zaenkrat je še škrbina. Notranja vrata 81 in 433 se uporabljajo namesto 80 in 443, ker skrbniška plošča usmerjevalnika visi na običajnih vratih.

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 spletno mesto delovalo prek https, sem uporabil dobro znani dehidrirani skript in ga namestil z to navodilo. Ta postopek ni povzročal težav, naletel sem le na dejstvo, da je v besedilu skripta za delo na mojem usmerjevalniku vrstico v datoteki morate komentirati /opt/etc/ssl/openssl.cnf:

[openssl_conf]
#engines=engines

Opažam, da generiranje dhparams.pem z ukazom “openssl dhparam -out dhparams.pem 2048” na mojem usmerjevalniku traja več kot 2 uri, če ne bi bilo indikatorja napredka, bi izgubil potrpljenje in znova zagnal.

Po prejemu potrdil znova zaženite nginx z ukazom “/opt/etc/init.d/S80nginx restart”. Načeloma je nastavitev končana, spletne strani pa še ni – če datoteko index.html damo v imenik /share/nginx/html, bomo videli škrbino.

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 lepo umestitev informacij je neprofesionalcu, kot sem jaz, lažje uporabiti že pripravljene predloge; po dolgem iskanju po različnih katalogih sem našel templatemo.com - obstaja dober izbor brezplačnih predlog, ki ne zahtevajo pripisa (kar je na internetu redko; večina predlog v licenci zahteva shranjevanje povezave do vira, iz katerega so bile pridobljene).

Izberemo primerno predlogo - obstajajo za različne primere, prenesite arhiv in ga razpakirajte v imenik /share/nginx/html, to lahko storite iz računalnika, nato uredite predlogo (tu boste potrebovali minimalno znanje HTML, da ne porušite strukture) in zamenjajte grafiko, kot je prikazano na spodnji sliki.

Gostovanje spletnega mesta na domačem usmerjevalniku

Povzetek: usmerjevalnik je načeloma povsem primeren za gostovanje lahke spletne strani - če ne pričakujete velike obremenitve, lahko namestite in php, in eksperimentirajte z bolj zapletenimi projekti (gledam nextcloud/owncloud, zdi se, da obstajajo uspešne namestitve na tako strojno opremo). Možnost namestitve paketov poveča njegovo uporabnost - na primer, ko je bilo treba zaščititi vrata RDP računalnika v lokalnem omrežju, sem namestil knockd na usmerjevalnik - in posredovanje vrat na računalnik se je odprlo šele po trkanju vrat.

Zakaj usmerjevalnik in ne navaden računalnik? Usmerjevalnik je eden redkih računalniških kosov strojne opreme, ki v mnogih stanovanjih deluje XNUMX ur na dan, domači usmerjevalnik je običajno popolnoma tih in lahka stran z manj kot sto obiski na dan ga sploh ne bo motila.

Vir: www.habr.com

Dodaj komentar