Hosting van 'n webwerf op 'n tuisrouter

Ek wou al lankal "my hande aanraak" op internetdienste deur 'n webbediener van nuuts af op te stel en dit op die internet vry te stel. In hierdie artikel wil ek my ervaring deel met die transformasie van 'n tuisroeteerder van 'n hoogs funksionele toestel in 'n byna volwaardige bediener.

Dit het alles begin met die feit dat die TP-Link TL-WR1043ND-roeteerder, wat getrou gedien het, nie meer aan die behoeftes van 'n tuisnetwerk voldoen het nie; Ek wou 'n 5 GHz-band hê en vinnige toegang tot lêers op 'n stoortoestel wat aan die roeteerder gekoppel is . Nadat ek deur gespesialiseerde forums (4pda, ixbt), webwerwe met resensies gekyk het en na die verskeidenheid plaaslike winkels gekyk het, het ek besluit om Keenetic Ultra te koop.

Goeie resensies van die eienaars het ten gunste van hierdie spesifieke toestel gewerk:

  • geen probleme met oorverhitting nie (hier moes ons Asus-produkte laat vaar);
  • operasionele betroubaarheid (hier het ek TP-Link deurgehaal);
  • maklik om op te stel (ek was bang ek kon dit nie hanteer nie en het Microtik deurgehaal).

Ek moes vrede maak met die nadele:

  • geen WiFi6, ek wou toerusting neem met 'n reserwe vir die toekoms;
  • 4 LAN-poorte, ek wou meer hê, maar dit is nie meer 'n tuiskategorie nie.

As gevolg hiervan het ons hierdie "bediener" gekry:

Hosting van 'n webwerf op 'n tuisrouter

  • aan die linkerkant is die optiese terminaal van Rostelecom;
  • aan die regterkant is ons eksperimentele router;
  • 'n 2 GB m.128 SSD wat rondlê, in 'n USB3-boks van Aliexpress geplaas, is met 'n draad aan die router gekoppel, nou is dit netjies teen die muur gemonteer;
  • op die voorgrond is 'n verlengkoord met onafhanklike ontkoppelde voetstukke, die draad daarvan gaan na 'n goedkoop UPS;
  • in die agtergrond is daar 'n bondel gedraaide paar kabels - in die stadium van die opknapping van die woonstel het ek dadelik RJ45-sokke beplan op die plekke waar die toerusting veronderstel was om geleë te wees, om nie afhanklik te wees van die WiFi wat bemors word nie.

Dus, ons het die toerusting, ons moet dit konfigureer:

Hosting van 'n webwerf op 'n tuisrouter

  • Die aanvanklike opstelling van die roeteerder neem ongeveer 2 minute, ons dui die verbindingsparameters aan die verskaffer aan (my optiese terminaal is oorgeskakel na brugmodus, die PPPoE-verbinding lig die roeteerder op), die naam van die WiFi-netwerk en die wagwoord - basies dit is dit , die router begin en werk.

Hosting van 'n webwerf op 'n tuisrouter

Ons stel die aanstuur van eksterne poorte na die poorte van die router self in die afdeling "Netwerkreëls - Aanstuur":

Hosting van 'n webwerf op 'n tuisrouter

Hosting van 'n webwerf op 'n tuisrouter

Nou kan ons voortgaan na die "gevorderde" deel, wat ek van die router wou hê:

  1. funksionaliteit van 'n klein NAS vir 'n tuisnetwerk;
  2. die uitvoering van webbedienerfunksies vir verskeie private bladsye;
  3. persoonlike wolk-funksie vir toegang tot persoonlike data vanaf enige plek in die wêreld.

Die eerste word geïmplementeer met behulp van ingeboude gereedskap, sonder dat dit veel moeite verg:

  • Ons neem 'n aandrywer wat vir hierdie rol bedoel is (flitsskyf, geheuekaart in 'n kaartleser, hardeskyf of SSD in 'n eksterne boks en formateer dit na Ext4 met behulp van MiniTool Partition Wizard Gratis uitgawe (Ek het nie 'n rekenaar met Linux byderhand nie, dit is moontlik met ingeboude gereedskap). Soos ek verstaan, skryf die stelsel tydens werking slegs logs na die flash drive, so as jy dit beperk nadat jy die stelsel opgestel het, kan jy ook geheuekaarte gebruik as jy van plan is om baie en dikwels na die skyf te skryf - 'n SSD of HDD is beter.

Hosting van 'n webwerf op 'n tuisrouter

Hierna koppel ons die aandrywer aan die router en sien dit op die stelselmonitorskerm

Hosting van 'n webwerf op 'n tuisrouter

Klik op "USB-aandrywers en drukkers" na die "Toepassings"-afdeling en stel die deel in die "Windows-netwerk"-afdeling op:

Hosting van 'n webwerf op 'n tuisrouter

En ons het 'n netwerkhulpbron wat vanaf Windows-rekenaars gebruik kan word, wat as 'n skyf verbind kan word indien nodig: netgebruik y: \192.168.1.1SSD /aanhoudend:ja

Die spoed van so 'n geïmproviseerde NAS is redelik voldoende vir tuisgebruik; oor 'n draad gebruik dit die hele gigabit, oor WiFi is die spoed ongeveer 400-500 megabit.

Hosting van 'n webwerf op 'n tuisrouter

Die opstel van berging is een van die nodige stappe om die bediener op te stel, dan benodig ons:
- koop 'n domein en 'n statiese IP-adres (jy kan daarsonder klaarkom deur dinamiese DNS te gebruik, maar ek het reeds 'n statiese IP gehad, so dit blyk makliker te wees om te gebruik gratis Yandex-dienste - deur die domein daarheen te delegeer, ons ontvang DNS-hosting en pos op ons domein);

Hosting van 'n webwerf op 'n tuisrouter

- stel DNS-bedieners op en voeg A-rekords by wat na jou IP verwys:

Hosting van 'n webwerf op 'n tuisrouter

Dit neem 'n paar uur vir die domein- en DNS-delegeringsinstellings om in werking te tree, so ons stel terselfdertyd die router op.

Eerstens moet ons die Entware-bewaarplek installeer, vanwaar ons die nodige pakkette op die router kan installeer. Ek het voordeel getrek met hierdie opdrag, het net nie die installasiepakket via FTP opgelaai nie, maar 'n gids direk op die voorheen gekoppelde netwerkaandrywer geskep en die lêer op die gewone manier daarheen gekopieer.

Nadat u toegang verkry het via SSH, verander die wagwoord met die passwd-opdrag en installeer al die nodige pakkette met die opkg install [pakketname]-opdrag:

Hosting van 'n webwerf op 'n tuisrouter

Tydens opstelling is die volgende pakkette op die router geïnstalleer (die uitvoer van die opkg lys-geïnstalleerde opdrag):

Lys van pakkette
bash - 5.0-3
busybox - 1.31.1-1
ca-bundel - 20190110-2
ca-sertifikate - 20190110-2
kernnutse - 8.31-1
coreutils-mktemp - 8.31-1
cron - 4.1-3
krul - 7.69.0-1
diffutile - 3.7-2
druppelbeer - 2019.78-3
entware-vrystelling - 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-vol - 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
libonesssl-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
biblioteek - 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
plekke - 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
armbox - 1.31.1-2
terminfo - 6.2-1
zlib - 1.2.11-3
zoneinfo-asië - 2019c-1
zoneinfo-europe - 2019c-1

Miskien was hier iets oorbodig, maar daar was baie spasie op die ry, so ek het nie die moeite gedoen om daarna te kyk nie.

Nadat ons die pakkette geïnstalleer het, konfigureer ons nginx, ek het dit met twee domeine probeer - die tweede een is opgestel met https, en vir nou is daar 'n stomp. Interne poorte 81 en 433 word gebruik in plaas van 80 en 443, aangesien die roeteerder-administrasiepaneel aan normale poorte hang.

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

Om die webwerf via https te laat werk, het ek die bekende gedehidreerde skrif gebruik en dit geïnstalleer met behulp van hierdie instruksie. Hierdie proses het geen probleme veroorsaak nie, ek het net gestruikel oor die feit dat in die teks van die skrif om aan my router te werk jy moet die reël in die lêer kommentaar lewer /opt/etc/ssl/openssl.cnf:

[openssl_conf]
#engines=engines

En ek neem kennis dat die generering van dhparams.pem met die opdrag “openssl dhparam -out dhparams.pem 2048” op my router meer as 2 uur neem, as nie vir die vorderingsaanwyser nie, sou ek geduld verloor het en herlaai het.

Nadat u die sertifikate ontvang het, herbegin nginx met die opdrag "/opt/etc/init.d/S80nginx restart". In beginsel is die opstelling voltooi, maar daar is nog geen webwerf nie - as ons die index.html lêer in die /share/nginx/html gids plaas, sal ons 'n stomp sien.

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>

Om inligting mooi te plaas, is dit makliker vir 'n nie-professionele persoon soos ek om klaargemaakte sjablone te gebruik; na 'n lang soektog deur verskeie katalogusse, het ek gevind templatemo.com - daar is 'n goeie keuse van gratis sjablone wat nie erkenning vereis nie (wat skaars is op die internet; meeste van die sjablone in die lisensie vereis dat jy 'n skakel stoor na die hulpbron waaruit dit verkry is).

Ons kies 'n geskikte sjabloon - daar is een vir 'n verskeidenheid gevalle, laai die argief af en pak dit uit in die /share/nginx/html gids, jy kan dit vanaf jou rekenaar doen en dan die sjabloon redigeer (hier sal jy minimale kennis benodig van HTML om nie die struktuur te breek nie) en vervang die grafika soos in die figuur hieronder getoon.

Hosting van 'n webwerf op 'n tuisrouter

Opsomming: die router is in beginsel baie geskik om 'n ligte webwerf daarop te huisves - as u nie 'n groot vrag verwag nie, kan u installeer en php, en eksperimenteer met meer komplekse projekte (ek kyk na nextcloud/owncloud, dit lyk of daar suksesvolle installasies op sulke hardeware is). Die vermoë om pakkette te installeer verhoog die bruikbaarheid daarvan - byvoorbeeld, wanneer dit nodig was om die RDP-poort van 'n rekenaar op 'n plaaslike netwerk te beskerm, het ek knockd op die router geïnstalleer - en poortaanstuur na die rekenaar is eers oopgemaak nadat die poort geklop het.

Hoekom 'n router en nie 'n gewone rekenaar nie? 'n Roeter is een van die min rekenaarstukke hardeware wat in baie woonstelle XNUMX uur per dag werk; 'n tuisroeteerder is gewoonlik absoluut stil en 'n ligte werf met minder as honderd besoeke per dag sal dit glad nie pla nie.

Bron: will.com

Voeg 'n opmerking