Ich wollte schon lange die Internetdienste âmit eigenen HĂ€ndenâ erleben, indem ich einen Webserver von Grund auf neu einrichte und ihn ins Internet bringe. In diesem Artikel möchte ich meine Erfahrungen teilen, wie ich den Heimrouter von einem funktionsarmen GerĂ€t in einen nahezu vollwertigen Server umgewandelt habe.
Es begann damit, dass der treue TP-Link TL-WR1043ND Router nicht mehr den Anforderungen meines Heimnetzes genĂŒgte. Ich wollte das 5-GHz-Band und schnellen Zugriff auf Dateien auf einem an den Router angeschlossenen Speicher. Nachdem ich fachliche Foren (4pda, ixbt) durchgesehen, Rezensionen gelesen und das Angebot lokaler GeschĂ€fte betrachtet hatte, entschied ich mich, den Keenetic Ultra zu kaufen.
FĂŒr genau dieses GerĂ€t sprachen die positiven Bewertungen der Nutzer:
- keine Ăberhitzungsprobleme (hier musste ich auf die Produkte von Asus verzichten);
- ZuverlÀssigkeit im Betrieb (TP-Link wurde hier ausgeschlossen);
- Einfache Einrichtung (ich hatte Bedenken, es nicht zu schaffen, und schloss MikroTik aus).
Ich musste mich mit den Nachteilen anfreunden:
- kein WiFi6, ich wollte GerÀte mit einem gewissen zukunftssicheren Potential;
- 4 LAN-Ports, ich hÀtte gerne mehr gehabt, aber das gehört nicht mehr zur Heimkategorie.
Am Ende ergab sich folgendes âServer-Setupâ:

- links der optische Terminator von Rostelekom;
- rechts unser Testrouter;
- Ein m.2 SSD mit 128 GB, der in einem USB3-GehÀuse von AliExpress verstaut ist, wurde per Kabel mit dem Router verbunden und ist jetzt sicher an der Wand befestigt;
- im Vordergrund eine Steckdosenleiste mit unabhĂ€ngiger Steckdosenabschaltung, das Kabel von ihr geht zu einem gĂŒnstigen UPS;
- im Hintergrund ein BĂŒndel Twisted Pair-Kabel â wĂ€hrend der Renovation der Wohnung habe ich gleich RJ45-Steckdosen an Stellen eingeplant, an denen ich die Technik unterbringen wollte, um nicht von einer ĂŒberfĂŒllten Wifi-Verbindung abhĂ€ngig zu sein.
So haben wir die Hardware, nun muss sie konfiguriert werden:

- Die Erstkonfiguration des Routers dauert etwa 2 Minuten; wir geben die Verbindungsparameter zum Anbieter an (bei mir ist der optische Terminator im Bridge-Modus, die PPPoE-Verbindung wird vom Router hergestellt), den Namen des Wifi-Netzwerks und das Passwort â das war's, der Router startet und funktioniert.

Wir richten die Portweiterleitung von den externen Ports auf die Ports des Routers im Abschnitt âNetzwerkregeln â Portweiterleitungâ ein:


Jetzt können wir zum âfortgeschrittenenâ Teil ĂŒbergehen, was ich vom Router wollte:
- die FunktionalitĂ€t eines kleinen NAS fĂŒr das Heimnetz;
- die AusfĂŒhrung von Funktionen als Webserver fĂŒr mehrere private Seiten;
- Die FunktionalitĂ€t der persönlichen Cloud ermöglicht den Zugriff auf persönliche Daten von ĂŒberall auf der Welt.
Das erste wird durch integrierte Mittel umgesetzt, ohne besondere Anstrengungen zu erfordern:
- Wir nehmen ein fĂŒr diese Rolle vorgesehenes Speichermedium (USB-Stick, Speicherkarte im Kartenleser, externe Festplatte oder SSD in einem externen GehĂ€use) und formatieren es in Ext4 mit Hilfe von (ich habe keinen Computer mit Linux zur Hand, dort kann man integrierte Mittel verwenden). Soweit ich verstehe, schreibt das System bei der Arbeit nur Protokolle auf den USB-Stick, daher kann man, wenn man diese nach der Systemkonfiguration einschrĂ€nkt, auch Speicherkarten verwenden. Wenn man plant, viel und hĂ€ufig auf das Speichermedium zu schreiben, ist es besser, eine SSD oder HDD zu nehmen.

Danach schlieĂen wir das Speichermedium an den Router an und beobachten es auf dem Bildschirm des Systemmonitors.

Wir gehen mit einem Klick auf "USB-Laufwerke und Drucker" in den Abschnitt "Anwendungen" und richten die gemeinsame Ressource im Abschnitt "Windows-Netzwerk" ein:

Und wir haben eine Netzwerkressource, die von Windows-Computern aus verwendet werden kann, indem wir sie bei Bedarf als Laufwerk anschlieĂen: net use y: \192.168.1.1SSD /persistent:yes
Die Geschwindigkeit dieses improvisierten NAS ist fĂŒr den Heimgebrauch ausreichend, ĂŒber Kabel nutzt es die gesamte Gigabit-Bandbreite, ĂŒber WiFi betrĂ€gt die Geschwindigkeit etwa 400-500 Megabit.

Die Konfiguration des Speichers ist einer der notwendigen Schritte zur Einrichtung des Servers, danach mĂŒssen wir:
â und eine statische IP-Adresse (man kann auch ohne auskommen, indem man Dynamic DNS verwendet, aber ich hatte bereits eine statische IP, daher war es einfacher, die â , erhalten wir DNS-Hosting und E-Mail auf unserer Domain);

â und A-Records hinzufĂŒgen, die auf Ihre IP verweisen:

Die Aktivierung der Einstellungen zur Delegierung von Domain und DNS dauert einige Stunden, daher beschÀftigen wir uns parallel mit der Router-Konfiguration.
ZunĂ€chst mĂŒssen wir das Entware-Repository installieren, aus dem wir die erforderlichen Pakete auf den Router installieren können. Ich habe mich an gehalten, nur dass ich das Installationspaket nicht ĂŒber FTP hochgeladen habe, sondern direkt auf die zuvor angeschlossene Netzlaufwerk einen Ordner erstellt und die Datei dort auf herkömmliche Weise kopiert habe.
Nachdem ich Zugriff ĂŒber SSH erhalten habe, Ă€ndere ich das Passwort mit dem Befehl passwd und installiere mit dem Befehl opkg install [Paketnamen] alle benötigten Pakete:

Bei der Konfiguration waren auf dem Router folgende Pakete installiert (Ergebnis der Ausgabe des Befehls opkg list-installed):
Paketliste
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
Möglicherweise hat sich hier etwas Unnötiges eingeschlichen, aber es ist genug Speicherplatz vorhanden, daher habe ich nicht nachgeschaut.
Nach der Installation der Pakete konfigurieren wir nginx. Ich habe es mit zwei Domains versucht - die zweite hat https aktiviert, und momentan ist nur ein Platzhalter aktiv. Die internen Ports 81 und 433 ersetzen 80 und 443, da auf den normalen Ports die Routeradministrationsseiten laufen.
etc/nginx/nginx.conf
Benutzer niemand;
Arbeiterprozesse 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-UnterstĂŒtzung
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;Um die Website ĂŒber https zum Laufen zu bringen, habe ich das bekannte Skript dehydrated verwendet und es gemÀà installiert. Schwierigkeiten bereitete mir der Prozess nicht, ich bin nur daran gescheitert, dass ich in dem Skripttext fĂŒr die Arbeit an meinem Router /opt/etc/ssl/openssl.cnf:
[openssl_conf]
#engines=enginesIch möchte anmerken, dass die Generierung von dhparams.pem mit dem Befehl âopenssl dhparam -out dhparams.pem 2048â auf meinem Router mehr als 2 Stunden dauert. Ohne den Fortschrittsindikator hĂ€tte ich die Geduld verloren und ihn neu gestartet.
Nach Erhalt der Zertifikate starten wir nginx mit dem Befehl "/opt/etc/init.d/S80nginx restart" neu. Im Grunde genommen ist die Konfiguration damit abgeschlossen, aber die Website ist noch nicht vorhanden â wenn wir eine index.html-Datei in das Verzeichnis /share/nginx/html legen, sehen wir die Platzhalter-Seite.
index.html
<!DOCTYPE html>
<html>
<head>
<title>Testseite!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Testseite!</h1>
<p>Dies ist eine einfache statische Testseite, absolut nichts Interessantes.</p>
</body>
</html>Um Informationen schön zu prĂ€sentieren, ist es fĂŒr einen Nicht-Professionellen wie mich einfacher, auf fertige Vorlagen zurĂŒckzugreifen. Nach langer Durchsuchung verschiedener Kataloge habe ich gefunden, â es gibt eine gute Auswahl an kostenlosen Vorlagen, die keine verpflichtende Angabe der Urheberschaft erfordern (was im Internet selten ist; die meisten Vorlagen erfordern in ihren Lizenzen, den Link zur Quelle beizubehalten).
WĂ€hlen Sie die passende Vorlage aus â es gibt sie fĂŒr die unterschiedlichsten AnlĂ€sse, laden Sie das Archiv herunter und entpacken Sie es in das Verzeichnis /share/nginx/html. Das können Sie bereits von Ihrem Computer aus tun. AnschlieĂend bearbeiten Sie die Vorlage (hier sind minimale HTML-Kenntnisse erforderlich, um die Struktur nicht zu verletzen) und ersetzen die Grafiken, wie im Bild unten gezeigt.

Zusammenfassung: Der Router ist durchaus geeignet, um darauf eine einfache Website zu hosten; im Grunde genommen â wenn keine hohe Belastung zu erwarten ist, kann man , und mit komplexeren Projekten experimentieren (ich schaue mir nextcloud/owncloud an; es scheint erfolgreiche Installationen auf dieser Hardware zu geben). Die Möglichkeit, Pakete zu installieren, erhöht seinen Nutzen â zum Beispiel, als ich den RDP-Port des PCs im lokalen Netzwerk schĂŒtzen musste, habe ich knockd auf dem Router installiert â und der Port-Forwarding zum PC wurde nur nach Port-Knocking geöffnet.
Warum gerade ein Router und kein gewöhnlicher PC? Ein Router ist eines der wenigen ComputergerÀte, die rund um die Uhr in vielen Wohnungen laufen. Ein Heimrouter ist normalerweise völlig gerÀuschlos, und eine einfache Website mit weniger als hundert Besuchern pro Tag wird ihn nicht belasten.
Quelle: habr.com
