Olen pitkään halunnut "koskea käsiäni" Internet-palveluihin perustamalla web-palvelimen tyhjästä ja julkaisemalla sen Internetiin. Tässä artikkelissa haluan jakaa kokemukseni kotireitittimen muuttamisesta erittäin toimivasta laitteesta lähes täysimittaiseksi palvelimeksi.
Kaikki alkoi siitä, että uskollisesti palvellut TP-Link TL-WR1043ND -reititin ei enää vastannut kotiverkon tarpeita, halusin 5 GHz:n taajuuden ja nopean pääsyn reitittimeen liitetyn tallennuslaitteen tiedostoihin. . Tutkittuani erikoisfoorumeita (4pda, ixbt), arvosteluja sisältäviä sivustoja ja paikallisten myymälöiden valikoimaa, päätin ostaa Keenetic Ultran.
Omistajilta saadut hyvät arvostelut suosivat tätä laitetta:
- ei ongelmia ylikuumenemisen kanssa (tässä jouduimme luopumaan Asus-tuotteista);
- toimintavarmuus (tässä ylitin TP-Linkin);
- helppo asentaa (pelkäsin, etten pysty käsittelemään sitä ja ylitin Microtikin).
Minun piti hyväksyä haittoja:
- ei WiFi6, halusin ottaa laitteita varauksella tulevaisuutta varten;
- 4 LAN-porttia, halusin enemmän, mutta tämä ei ole enää kotiluokka.
Tuloksena saimme tämän "palvelimen":

- vasemmalla on Rostelecomin optinen pääte;
- oikealla on kokeellinen reitittimemme;
- 2 Gt:n m.128 SSD, joka on sijoitettu Aliexpressin USB3-laatikkoon, on kytketty reitittimeen johdolla, nyt se on asennettu siististi seinälle;
- etualalla on jatkojohto itsenäisesti irrotetuilla pistorasioilla, johto siitä menee edulliseen UPS:ään;
- taustalla on nippu kierrettyjä parikaapeleita - asunnon remontin vaiheessa suunnittelin heti RJ45-pistorasiat paikkoihin, joissa laitteiden oli tarkoitus sijaita, jotta ei riippuisi WiFin roskaamisesta.
Joten meillä on laitteet, meidän on määritettävä se:

- Reitittimen alkuasennus kestää noin 2 minuuttia, ilmoitamme yhteysparametrit palveluntarjoajalle (optinen päätelaitteeni on kytketty siltatilaan, PPPoE-yhteys nostaa reitittimen), WiFi-verkon nimi ja salasana - periaatteessa se , reititin käynnistyy ja toimii.

Asetamme ulkoisten porttien edelleenlähetyksen itse reitittimen portteihin "Verkkosäännöt - edelleenlähetys" -osiossa:


Nyt voimme siirtyä "edistyneeseen" osaan, mitä halusin reitittimeltä:
- pienen NAS:n toimivuus kotiverkkoon;
- web-palvelintoimintojen suorittaminen useille yksityisille sivuille;
- henkilökohtainen pilvitoiminto, jolla pääset käsiksi henkilökohtaisiin tietoihin mistä päin maailmaa tahansa.
Ensimmäinen toteutetaan sisäänrakennetuilla työkaluilla ilman paljon vaivaa:
- Otamme tähän rooliin tarkoitetun aseman (flash-asema, muistikortti kortinlukijassa, kovalevy tai SSD ulkoiseen laatikkoon ja alustamme sen Ext4:ksi (Minulla ei ole Linux-tietokonetta käsillä, se on mahdollista sisäänrakennetuilla työkaluilla). Ymmärtääkseni järjestelmä kirjoittaa käytön aikana vain lokeja muistitikulle, joten jos rajoitat niitä järjestelmän asennuksen jälkeen, voit käyttää myös muistikortteja, jos aiot kirjoittaa paljon ja usein asemaan - SSD-levylle tai HDD on parempi.

Tämän jälkeen yhdistämme aseman reitittimeen ja tarkkailemme sitä järjestelmän näytön näytöllä

Napsauta "USB-asemat ja tulostimet" siirtyäksesi "Sovellukset"-osioon ja määritä jaettu resurssi "Verkko"-osiossa. Windows»:

Ja meillä on verkkoresurssi, jota voidaan käyttää tietokoneista, jotka ovat Windows, liittämällä sen tarvittaessa levynä: net use y: \192.168.1.1SSD /persistent:yes
Tällaisen improvisoidun NAS:n nopeus on varsin riittävä kotikäyttöön, langalla se käyttää koko gigabitin, WiFin yli nopeus on noin 400-500 megabittiä.

Tallennustilan määrittäminen on yksi palvelimen määrittämiseen tarvittavista vaiheista, jolloin tarvitsemme:
- ja staattinen IP-osoite (voit tehdä ilman tätä käyttämällä dynaamista DNS-osoitetta, mutta minulla oli jo staattinen IP, joten se osoittautui helpommaksi käyttää - , vastaanotamme DNS-isännöinnin ja postia verkkotunnuksessamme);

- ja lisää IP-osoitteeseesi osoittavat A-tietueet:

Kestää useita tunteja, ennen kuin verkkotunnuksen ja DNS:n delegointiasetukset tulevat voimaan, joten määritämme reitittimen samanaikaisesti.
Ensin meidän on asennettava Entware-arkisto, josta voimme asentaa tarvittavat paketit reitittimeen. käytin hyväkseni , ei vain ladannut asennuspakettia FTP:n kautta, vaan loi kansion suoraan aiemmin yhdistetylle verkkoasemalle ja kopioi tiedoston sinne tavalliseen tapaan.
Kun olet saanut pääsyn SSH:n kautta, vaihda salasana passwd-komennolla ja asenna kaikki tarvittavat paketit opkg install [pakettien nimet] -komennolla:

Asennuksen aikana reitittimeen asennettiin seuraavat paketit (opkg list-installed -komennon tulos):
Lista paketeista
bash - 5.0-3
varattu - 1.31.1-1
ca-paketti - 20190110-2
ca-todistukset - 20190110-2
coreutils - 8.31-1
coreutils-mktemp - 8.31-1
cron - 4.1-3
kihara - 7.69.0-1
diffutils - 3.7-2
dropbear - 2019.78-3
entware-julkaisu - 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
ilmainen rivi - 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
alueet - 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
huonolaatikko - 1.31.1-2
terminfo - 6.2-1
zlib - 1.2.11-3
zoneinfo-asia - 2019c-1
zoneinfo-europe - 2019c-1
Ehkä tässä oli jotain tarpeetonta, mutta asemalla oli paljon tilaa, joten en vaivautunut tutkimaan sitä.
Pakettien asennuksen jälkeen määritämme nginxin, kokeilin sitä kahdella verkkotunnuksella - toinen on määritetty https:llä, ja toistaiseksi siellä on tynkä. Sisäisiä portteja 81 ja 433 käytetään 80 ja 443 sijasta, koska reitittimen hallintapaneeli roikkuu normaaleissa porteissa.
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 data-gt-translate-attributes='["title"]' 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;Jotta sivusto toimisi https:n kautta, käytin hyvin tunnettua dehydratoitua komentosarjaa ja asensin sen käyttämällä . Tämä prosessi ei aiheuttanut vaikeuksia, törmäsin vain siihen tosiasiaan, että reitittimeni työskentelyn käsikirjoituksen tekstissä /opt/etc/ssl/openssl.cnf:
[openssl_conf]
#engines=enginesJa huomautan, että dhparams.pem-tiedoston luominen komennolla "openssl dhparam -out dhparams.pem 2048" reitittimessäni kestää yli 2 tuntia, ellei edistymisen ilmaisin olisi ollut, olisin menettänyt kärsivällisyytensä ja käynnistänyt uudelleen.
Kun olet saanut varmenteet, käynnistä nginx uudelleen komennolla “/opt/etc/init.d/S80nginx restart”. Periaatteessa asennus on valmis, mutta verkkosivustoa ei vielä ole - jos laitamme index.html-tiedoston hakemistoon /share/nginx/html, näemme tynkän.
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>Sijoittaakseen tiedot kauniisti, minun kaltaiseni ei-ammattilaisen on helpompi käyttää valmiita malleja; pitkän eri luetteloiden etsimisen jälkeen löysin - olemassa on hyvä valikoima ilmaisia malleja, jotka eivät vaadi nimeämistä (mikä on harvinaista Internetissä; useimmat lisenssin mallit edellyttävät, että tallennat linkin resurssiin, josta ne on hankittu).
Valitsemme sopivan mallin - niitä on monenlaisiin tapauksiin, lataa arkisto ja pura se /share/nginx/html-hakemistoon, voit tehdä tämän tietokoneeltasi ja muokata mallia (tässä tarvitset vain vähän tietoa HTML:stä, jotta rakenne ei riko) ja vaihda grafiikka alla olevan kuvan mukaisesti.

Yhteenveto: reititin sopii periaatteessa varsin kevyen verkkosivuston isännöimiseen - jos et odota suurta kuormaa, voit ja kokeile monimutkaisempia projekteja (katsoin nextcloud/owncloudia, näyttää siltä, että sellaisille laitteille on tehty onnistuneita asennuksia). Mahdollisuus asentaa paketteja lisää sen hyödyllisyyttä - esimerkiksi kun oli tarpeen suojata PC:n RDP-portti paikallisessa verkossa, asensin knockd:n reitittimeen - ja portin edelleenlähetys PC:lle avattiin vasta portin koputuksen jälkeen.
Miksi reititin eikä tavallinen tietokone? Reititin on yksi harvoista ympäri vuorokauden toimivista tietokonelaitteistoista monissa asunnoissa, kodin reititin on yleensä täysin äänetön ja kevyt sivusto, jossa on alle sata käyntiä päivässä, ei häiritse sitä ollenkaan.
Lähde: will.com
