Hosting av et nettsted på en hjemmeruter

Jeg har lenge ønsket å "røre hendene mine" på Internett-tjenester ved å sette opp en webserver fra bunnen av og slippe den til Internett. I denne artikkelen vil jeg dele min erfaring med å transformere en hjemmeruter fra en svært funksjonell enhet til en nesten fullverdig server.

Det hele startet med det faktum at TP-Link TL-WR1043ND-ruteren, som hadde tjent trofast, ikke lenger oppfylte behovene til et hjemmenettverk; jeg ønsket et 5 GHz-bånd og rask tilgang til filer på en lagringsenhet koblet til ruteren . Etter å ha sett gjennom spesialiserte fora (4pda, ixbt), nettsteder med anmeldelser og sett på utvalget av lokale butikker, bestemte jeg meg for å kjøpe Keenetic Ultra.

Gode ​​anmeldelser fra eierne fungerte til fordel for denne spesielle enheten:

  • ingen problemer med overoppheting (her måtte vi forlate Asus-produkter);
  • driftssikkerhet (her strøk jeg over TP-Link);
  • enkel å sette opp (jeg var redd jeg ikke kunne håndtere det og strøk over Microtik).

Jeg måtte innse ulempene:

  • ingen WiFi6, jeg ønsket å ta utstyr med en reserve for fremtiden;
  • 4 LAN-porter, jeg ville ha flere, men dette er ikke lenger en hjemmekategori.

Som et resultat fikk vi denne "serveren":

Hosting av et nettsted på en hjemmeruter

  • til venstre er den optiske terminalen til Rostelecom;
  • til høyre er vår eksperimentelle ruter;
  • en 2 GB m.128 SSD liggende, plassert i en USB3-boks fra Aliexpress, kobles til ruteren med en ledning, nå er den pent montert på veggen;
  • i forgrunnen er en skjøteledning med uavhengig frakoblede stikkontakter, ledningen fra den går til en billig UPS;
  • i bakgrunnen er det en haug med tvunnet par kabler - på stadiet med oppussing av leiligheten planla jeg umiddelbart RJ45-stikkontakter på stedene der utstyret skulle være plassert, for ikke å være avhengig av at WiFi-en ble forsøplet.

Så vi har utstyret, vi må konfigurere det:

Hosting av et nettsted på en hjemmeruter

  • Det første oppsettet av ruteren tar ca. 2 minutter, vi angir tilkoblingsparametrene til leverandøren (min optiske terminal er byttet til bromodus, PPPoE-tilkoblingen løfter ruteren), navnet på WiFi-nettverket og passordet - i utgangspunktet er det det , ruteren starter opp og fungerer.

Hosting av et nettsted på en hjemmeruter

Vi setter videresending av eksterne porter til portene til selve ruteren i delen "Nettverksregler - Videresending":

Hosting av et nettsted på en hjemmeruter

Hosting av et nettsted på en hjemmeruter

Nå kan vi gå videre til den "avanserte" delen, det jeg ønsket fra ruteren:

  1. funksjonaliteten til en liten NAS for et hjemmenettverk;
  2. utføre webserverfunksjoner for flere private sider;
  3. personlig skyfunksjonalitet for tilgang til personlige data fra hvor som helst i verden.

Den første er implementert ved hjelp av innebygde verktøy, uten å kreve mye innsats:

  • Vi tar en stasjon beregnet for denne rollen (flash-stasjon, minnekort i en kortleser, harddisk eller SSD i en ekstern boks og formaterer den til Ext4 vha. MiniTool Partition Wizard Free Edition (Jeg har ikke en datamaskin med Linux for hånden, det er mulig med innebygde verktøy). Slik jeg forstår det, skriver systemet under drift kun logger til flash-stasjonen, så hvis du begrenser dem etter å ha satt opp systemet, kan du også bruke minnekort hvis du planlegger å skrive mye og ofte til stasjonen - en SSD eller HDD er bedre.

Hosting av et nettsted på en hjemmeruter

Etter dette kobler vi stasjonen til ruteren og observerer den på systemskjermen

Hosting av et nettsted på en hjemmeruter

Klikk på "USB-stasjoner og skrivere" til "Applikasjoner"-delen og konfigurer delingen i "Windows-nettverk"-delen:

Hosting av et nettsted på en hjemmeruter

Og vi har en nettverksressurs som kan brukes fra Windows-datamaskiner, koble til som en disk om nødvendig: nettbruk y: \192.168.1.1SSD /persistent:yes

Hastigheten til en slik improvisert NAS er ganske tilstrekkelig for hjemmebruk; over en ledning bruker den hele gigabiten, over WiFi er hastigheten omtrent 400-500 megabit.

Hosting av et nettsted på en hjemmeruter

Å sette opp lagring er et av de nødvendige trinnene for å konfigurere serveren, da trenger vi:
- kjøpe et domene og en statisk IP-adresse (du kan klare deg uten denne ved å bruke dynamisk DNS, men jeg hadde allerede en statisk IP, så det viste seg å være enklere å bruke gratis Yandex-tjenester - ved å delegere domenet dit, vi mottar DNS-hosting og e-post på vårt domene);

Hosting av et nettsted på en hjemmeruter

- konfigurere DNS-servere og legg til A-poster som peker til IP-en din:

Hosting av et nettsted på en hjemmeruter

Det tar flere timer før domene- og DNS-delegeringsinnstillingene trer i kraft, så vi setter opp ruteren samtidig.

Først må vi installere Entware-depotet, hvorfra vi kan installere de nødvendige pakkene på ruteren. Jeg utnyttet denne instruksjonen, lastet bare ikke opp installasjonspakken via FTP, men opprettet en mappe direkte på den tidligere tilkoblede nettverksstasjonen og kopierte filen dit på vanlig måte.

Etter å ha fått tilgang via SSH, endre passordet med passwd-kommandoen og installer alle nødvendige pakker med opkg install [pakkenavn]-kommandoen:

Hosting av et nettsted på en hjemmeruter

Under oppsettet ble følgende pakker installert på ruteren (utgangen fra kommandoen opkg list-installed):

Liste over pakker
bash - 5.0-3
busybox - 1.31.1-1
ca-bundle - 20190110-2
ca-sertifikater - 20190110-2
coreutils - 8.31-1
coreutils-mktemp - 8.31-1
cron - 4.1-3
krøll - 7.69.0-1
diffutiler - 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
lokaliteter - 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

Kanskje det var noe overflødig her, men det var mye plass på stasjonen, så jeg gadd ikke se nærmere på det.

Etter å ha installert pakkene, konfigurerte vi nginx, jeg prøvde det med to domener - det andre er konfigurert med https, og for nå er det en stubb. Interne porter 81 og 433 brukes i stedet for 80 og 443, siden ruterens adminpanel henger på vanlige porter.

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;

For at siden skulle fungere via https, brukte jeg det velkjente dehydrerte skriptet, og installerte det ved hjelp av denne håndboken. Denne prosessen forårsaket ingen problemer, jeg snublet bare over det faktum at i teksten til skriptet for å jobbe med ruteren min du må kommentere linjen i filen /opt/etc/ssl/openssl.cnf:

[openssl_conf]
#engines=engines

Og jeg legger merke til at å generere dhparams.pem med kommandoen "openssl dhparam -out dhparams.pem 2048" på ruteren min tar mer enn 2 timer, hvis ikke for fremdriftsindikatoren, ville jeg ha mistet tålmodigheten og startet på nytt.

Etter å ha mottatt sertifikatene, start nginx på nytt med kommandoen "/opt/etc/init.d/S80nginx restart". I prinsippet er oppsettet fullført, men det er ingen nettside ennå - hvis vi legger filen index.html i /share/nginx/html-katalogen, vil vi se en stubb.

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>

For å plassere informasjon vakkert, er det lettere for en ikke-profesjonell som meg å bruke ferdige maler; etter et langt søk gjennom forskjellige kataloger fant jeg templatemo.com - det er et godt utvalg av gratis maler som ikke krever attribusjon (noe som er sjeldent på Internett; de fleste malene i lisensen krever at du lagrer en lenke til ressursen de ble hentet fra).

Vi velger en passende mal - det finnes en for en rekke tilfeller, last ned arkivet og pakk det ut i /share/nginx/html-katalogen, du kan gjøre dette fra datamaskinen din, og deretter redigere malen (her trenger du minimal kunnskap av HTML for ikke å bryte strukturen) og erstatte grafikken som vist i figuren nedenfor.

Hosting av et nettsted på en hjemmeruter

Sammendrag: ruteren er ganske egnet for å være vert for et lett nettsted på den, i prinsippet - hvis du ikke forventer stor belastning, kan du installer og php, og eksperimentere med mer komplekse prosjekter (jeg ser på nextcloud/owncloud, det ser ut til å være vellykkede installasjoner på slik maskinvare). Muligheten til å installere pakker øker nytten - for eksempel når det var nødvendig å beskytte RDP-porten til en PC på et lokalt nettverk, installerte jeg knockd på ruteren - og portvideresending til PC-en ble åpnet først etter portbanking.

Hvorfor en ruter og ikke en vanlig PC? En ruter er en av de få maskinvarene som fungerer døgnet rundt i mange leiligheter; en hjemmeruter er vanligvis helt stille og en lett side med mindre enn hundre besøk per dag vil ikke plage det i det hele tatt.

Kilde: www.habr.com

Legg til en kommentar