Jag har lÀnge velat "anvÀnda" internet-tjÀnster genom att sÀtta upp en webbserver frÄn grunden och göra den tillgÀnglig pÄ Internet. I den hÀr artikeln vill jag dela med mig av min erfarenhet av att omvandla en hemrouter frÄn en begrÀnsad enhet till en fullt fungerande server.
Allt började med att den pÄlitliga routern TP-Link TL-WR1043ND slutade uppfylla behoven i vÄrt hemmanÀtverk; jag ville ha 5 GHz-bandet och snabb Ätkomst till filer pÄ en enhet ansluten till routern. Efter att ha kikat pÄ specialforum (4pda, ixbt), recensionssidor och tittat pÄ utbudet i lokala butiker, bestÀmde jag mig för att köpa Keenetic Ultra.
Fördelen med just denna enhet var de positiva recensionerna frÄn Àgarna:
- inga problem med överhettning (hÀr blev jag tvungen att avstÄ frÄn Asus-produkter);
- pÄlitlighet i drift (hÀr strök jag TP-Link);
- enkelt att stÀlla in (jag var rÀdd för att misslyckas och strök Microtik).
Jag var tvungen att försonas med nackdelar:
- ingen WiFi6, jag ville ha utrustning med framtida kapacitet;
- 4 LAN-portar, jag ville ha fler, men det Àr inte riktigt kategorin för hemmanÀtverk.
Slutresultatet blev sÄ hÀr "serverlik":

- till vÀnster Àr optisk terminering frÄn Rostelekom;
- till höger Àr vÄr testrouter;
- en gammal m.2 SSD pÄ 128 GB, placerad i ett USB3-hölje frÄn AliExpress, Àr nu sÀkert fÀst pÄ vÀggen;
- framme finns en förlÀngningssladd med oberoende avstÀngning av uttagen, en kabel gÄr frÄn den till en prisvÀrd UPS;
- bakom finns ett knippe tvinnade par â vid renoveringen av lĂ€genheten planerade jag redan RJ45-uttag pĂ„ platser dĂ€r jag förvĂ€ntade mig att placera utrustning, för att inte vara beroende av trĂ„dlös överbelastning.
SÄ, vi har utrustningen, det Àr dags att stÀlla in den:

- den initiala installationen av routern tar cirka 2 minuter, vi anger instĂ€llningarna för anslutning till leverantören (min optiska terminal Ă€r omstĂ€lld till brygglĂ€ge, PPPoE-anslutningen hanteras av routern), WiFi-nĂ€tverksnamn och lösenord â i princip Ă€r allt klart, routern startar och fungerar.

Vi stĂ€ller in vidarebefordran av externa portar till routerns portar i avsnittet "NĂ€tverksregler â Vidarebefordran":


Nu kan vi gÄ vidare till den "avancerade" delen, det jag ville ha frÄn routern:
- funktioner av en liten NAS för hemmanÀtverket;
- utföra webbserverfunktioner för flera egna sidor;
- funktionaliteten hos den personliga molnlösningen för att fÄ Ätkomst till personliga data frÄn vilken plats som helst i vÀrlden.
Det första genomförs med inbyggda verktyg, utan att krÀva sÀrskilt mycket anstrÀngning:
- vi tar lagringsenheten avsedd för denna roll (ett USB-minne, ett minneskort i en kortlĂ€sare, en hĂ„rddisk eller SSD i ett externt chassi) och formaterar den i Ext4 med hjĂ€lp av (jag har ingen dator med linux till hands, dĂ€r kan man anvĂ€nda inbyggda verktyg). FrĂ„n vad jag förstĂ„r skriver systemet endast loggar till USB-minnet under drift, sĂ„ om man begrĂ€nsar dem efter systeminstĂ€llningen â kan man anvĂ€nda minneskort, men planerar man att skriva mycket och ofta pĂ„ enheten â Ă€r det bĂ€ttre med SSD eller HDD.

DÀrefter ansluter vi lagringsenheten till routern och observerar den pÄ skÀrmen av systemövervakaren.

Vi gÄr vidare genom att klicka pÄ "USB-enheter och skrivare" i avsnittet "Applikationer" och konfigurerar delad resurs i avsnittet "Windows-nÀtverk":

Och vi har en nÀtverksresurs som kan anvÀndas med Windows-datorer, ansluten vid behov som en disk: net use y: \\192.168.1.1SSD /persistent:yes
Hastigheten pÄ denna improviserade NAS Àr helt tillrÀcklig för hushÄllsbehov, via kabel anvÀnder den hela gigabiten, över WiFi Àr hastigheten omkring 400-500 megabit.

InstÀllningen av lagringsutrymmet Àr ett av nödvÀndiga stegen för att konfigurera servern, sedan behöver vi:
â och en statisk IP-adress (man kan klara sig utan detta genom att anvĂ€nda Dynamic DNS, men jag hade redan en statisk IP, sĂ„ det blev enklare att utnyttja â fĂ„r vi DNS-hosting och e-post pĂ„ vĂ„r domĂ€n);

â och lĂ€gga till A-poster som pekar pĂ„ din IP:

Det tar nÄgra timmar för delegationsinstÀllningarna för domÀnen och DNS att trÀda i kraft, sÄ vi arbetar parallellt med att konfigurera routern.
Först mÄste vi installera Entware-repositoriet, frÄn vilket vi kan installera nödvÀndiga paket pÄ routern. Jag anvÀnde , jag laddade inte upp installationspaketet via FTP, utan skapade en mapp direkt pÄ den tidigare anslutna nÀtverksdisken och kopierade filen dÀr pÄ vanligt sÀtt.
Efter att ha fÄtt Ätkomst via SSH, Àndrar vi lösenordet med kommandot passwd och installerar med kommandot opkg install [paketnamn] alla nödvÀndiga paket:

Under konfigurationen pÄ routern fanns följande paket installerade (resultatet av kommandot opkg list-installed):
Paketlista
bash â 5.0-3
busybox â 1.31.1-1
ca-bundle â 20190110-2
ca-certificates â 20190110-2
coreutils â 8.31-1
coreutils-mktemp â 8.31-1
cron â 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-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
libuuid â 2.35.1-1
libxml2 â 2.9.10-1
locales â 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
Det kan ha smugit sig in nÄgot överflödigt hÀr, men det finns mycket utrymme pÄ lagringsenheten, sÄ jag brydde mig inte om att undersöka det.
Efter installation av paketen konfigurerar vi nginx; jag har testat med tvĂ„ domĂ€ner â den andra har https instĂ€llt, och för tillfĂ€llet har jag endast en placeholder. Inre portarna 81 och 433 anvĂ€nds istĂ€llet för 80 och 443, eftersom admin-grĂ€nssnitten för routern körs pĂ„ de normala portarna.
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;
}
}
}
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;För att fÄ webbplatsen att fungera via https anvÀnde jag det kÀnda skriptet dehydrated, som jag installerade enligt . Denna process orsakade inga svÄrigheter, jag fastnade bara pÄ att i skripttexten för att fungera pÄ min router /opt/etc/ssl/openssl.cnf:
[openssl_conf]
#engines=enginesOch jag noterar att genereringen av dhparams.pem med kommandot "openssl dhparam -out dhparams.pem 2048" pÄ min router tar mer Àn 2 timmar; om det inte vore för progressindikatorn skulle jag ha tappat tÄlamodet och startat om.
Efter att ha fĂ„tt certifikaten startar vi om nginx med kommandot "\/opt\/etc\/init.d\/S80nginx restart". I princip Ă€r instĂ€llningen klar, men webbplatsen finns inte Ă€n â om vi lĂ€gger en fil index.html i katalogen \/share\/nginx\/html, ser vi en hĂ„llningssida.
index.html
<!DOCTYPE html>
<html>
<head>
<title>Test Sida!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Test Sida!</h1>
<p>Detta är en enkel statisk testsida, absolut ingenting intressant.</p>
</body>
</html>För att presentera informationen snyggt Ă€r det enklare för en icke-professionell som mig att anvĂ€nda fĂ€rdiga mallar; efter en lĂ„ng genomgĂ„ng av olika kataloger hittade jag â dĂ€r finns ett bra urval av gratis mallar, som inte krĂ€ver att upphovsmannens namn anges (vilket Ă€r ovanligt pĂ„ internet, eftersom de flesta mallarna i licensen krĂ€ver att man behĂ„ller en lĂ€nk till kĂ€llan dĂ€r de hĂ€mtades).
Vi vĂ€ljer en lĂ€mplig mall â det finns för mĂ„nga olika Ă€ndamĂ„l, vi laddar ner arkivet och packar upp det i katalogen /share/nginx/html, vilket kan göras direkt frĂ„n sin dator, sedan redigerar vi mallen (hĂ€r krĂ€vs minimala kunskaper i HTML för att inte störa strukturen) och byter ut grafiken, som visas i bilden nedan.

Sammanfattning: routern Ă€r helt adekvat för att hosta en lĂ€tt webbplats, i princip â om en stor belastning inte förvĂ€ntas kan man , och experimentera med mer komplexa projekt (jag ser pĂ„ nextcloud/owncloud, det verkar finnas framgĂ„ngsrika installationer pĂ„ sĂ„dan hĂ„rdvara). Möjligheten att installera paket ökar dess anvĂ€ndbarhet â till exempel, nĂ€r jag behövde skydda RDP-porten pĂ„ en PC i det lokala nĂ€tverket, installerade jag knockd pĂ„ routern â och port vidarebefordringen till PC:n öppnades först efter port knocking.
Varför just en router, och inte en vanlig PC? Routern Àr en av fÄ datorkomponenter som fungerar dygnet runt i mÄnga lÀgenheter, en hemrouter Àr oftast helt ljudlös och en lÀtt webbplats med mindre Àn hundra besök per dag kommer inte att belasta den alls.
KĂ€lla: habr.com
