Wir hosten die Site auf einem Heimrouter

Ich wollte schon lange Internetdienste „berĂŒhren“, indem ich einen Webserver von Grund auf neu einrichtete und im Internet veröffentlichte. In diesem Artikel möchte ich meine Erfahrungen mit der Umwandlung eines Heimrouters von einem eng funktionierenden GerĂ€t in einen fast vollwertigen Server teilen.



Alles begann mit der Tatsache, dass der TP-Link TL-WR1043ND-Router, der zuverlĂ€ssig funktionierte, nicht mehr den Anforderungen des Heimnetzwerks entsprach. Ich wollte ein 5-GHz-Band und einen schnellen Zugriff auf Dateien auf einem an den Router angeschlossenen Laufwerk. Nachdem ich die Fachforen (w3bsit3-dns.com, ixbt), Websites mit Bewertungen und die Auswahl der lokalen GeschĂ€fte durchgesehen hatte, entschied ich mich fĂŒr Keenetic Ultra.



FĂŒr dieses spezielle GerĂ€t haben gute Bewertungen der Besitzer funktioniert:



  • keine Probleme mit Überhitzung (hier mussten wir auf Asus-Produkte verzichten);
  • ZuverlĂ€ssigkeit bei der Arbeit (hier habe ich TP-Link durchgestrichen);
  • einfache Einrichtung (ich hatte Angst, MikroTik nicht zu bewĂ€ltigen und durchgestrichen).


Ich musste mich mit den Nachteilen auseinandersetzen:



  • kein WiFi6, ich wollte GerĂ€te mit einem Vorsprung fĂŒr die Zukunft mitnehmen;
  • 4 LAN-Ports, ich wollte mehr, aber dies ist keine Home-Kategorie mehr.


Als Ergebnis haben wir diesen "Server":







  • links ist der optische Anschluss von Rostelecom;
  • rechts ist unser experimenteller Router;
  • Ein Kabel zum Router ist mit der um m.2 herumliegenden SSD 128 GB verbunden, die in einer USB3-Box von aliexpress untergebracht ist. Jetzt ist sie sauber an der Wand befestigt.
  • Im Vordergrund befindet sich ein VerlĂ€ngerungskabel mit unabhĂ€ngiger Trennung der Steckdosen. Das Kabel von dieser Leitung fĂŒhrt zu einer kostengĂŒnstigen USV.
  • Im Hintergrund befindet sich ein BĂŒndel Twisted Pair. Bei der Renovierung der Wohnung plante ich sofort RJ45-Steckdosen an den Stellen, an denen sich die GerĂ€te befinden sollten, um nicht von WLAN-Unordnung abhĂ€ngig zu sein.


Also, wir haben die AusrĂŒstung, wir mĂŒssen sie konfigurieren:







  • Die Erstkonfiguration des Routers dauert ca. 2 Minuten. Wir geben die Parameter fĂŒr die Verbindung zum Anbieter an (mein optisches Terminal wird in den Bridge-Modus geschaltet, die PPPoE-Verbindung wird vom Router hergestellt), den Namen des WLAN-Netzwerks und das Passwort - im Prinzip alles, der Router startet und funktioniert.






Wir leiten die Weiterleitung externer Ports an die Ports des Routers selbst im Abschnitt "Netzwerkregeln - Weiterleitung" weiter:











Jetzt können Sie zum Teil "Erweitert" gehen, den ich vom Router wollte:



  1. FunktionalitĂ€t eines kleinen NAS fĂŒr ein Heimnetzwerk;
  2. fungiert als Webserver fĂŒr mehrere private Seiten;
  3. Personal Cloud-FunktionalitĂ€t fĂŒr den Zugriff auf personenbezogene Daten von ĂŒberall auf der Welt.


Die erste ist in integrierten Tools implementiert und erfordert wenig Aufwand:









Danach schließen wir das Laufwerk an den Router an und beobachten es auf dem Systemmonitorbildschirm.







Klicken Sie im Abschnitt "Anwendungen" auf "USB-Festplatten und -Drucker" und richten Sie im Abschnitt "Windows-Netzwerk" eine Freigabe ein:







Und wir haben eine Netzwerkressource, mit der verwendet werden kann Computer unter Windows, die bei Bedarf eine Verbindung als Laufwerk herstellen: net use y: \\ 192.168.1.1 \ SSD / persistent: yes



Die Geschwindigkeit eines solchen improvisierten NAS ist fĂŒr den Heimgebrauch völlig ausreichend, es werden alle Gigabit ĂŒber das Kabel verwendet, ĂŒber WLAN betrĂ€gt die Geschwindigkeit etwa 400-500 Megabits.







Das Konfigurieren des Speichers ist einer der notwendigen Schritte zum Konfigurieren des Servers. Dann mĂŒssen wir:

- eine Domain kaufenund eine statische IP - Adresse (Sie können ohne diese mit Dynamic DNS zu tun, aber ich hatte schon eine statische IP, so dass es stellte sich heraus, einfacher zu bedienen kostenlos Yandex Dienste - durch eine Domain dort zu delegieren , wir DNS - Hosting und E - Mails auf unserer Domain erhalten);







- Konfigurieren Sie DNS-Server und fĂŒgen Sie A-EintrĂ€ge hinzu, die auf Ihre IP verweisen: Es







dauert mehrere Stunden, bis die Einstellungen fĂŒr die DomĂ€nen- und DNS-Delegierung wirksam werden. Daher konfigurieren wir gleichzeitig den Router.



ZunĂ€chst mĂŒssen Sie das Entware-Repository installieren, von dem aus wir die erforderlichen Pakete auf dem Router installieren können. Ich habe diese Anweisung befolgthat das Installationspaket nur nicht ĂŒber FTP hochgeladen, sondern einen Ordner direkt auf dem zuvor verbundenen Netzlaufwerk erstellt und die Datei dort wie gewohnt kopiert.



Nachdem wir ĂŒber SSH Zugriff erhalten haben, Ă€ndern wir das Kennwort mit dem Befehl passwd und installieren alle erforderlichen Pakete mit dem Befehl opkg install [Paketnamen]:







WĂ€hrend der Konfiguration wurden die folgenden Pakete auf dem Router installiert (die Ausgabe des Befehls opkg list- install ):



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



Vielleicht ist hier etwas ĂŒberflĂŒssig, aber auf dem Laufwerk ist viel Platz, also habe ich es nicht herausgefunden.



Nach der Installation der Pakete konfigurieren wir nginx, ich habe es mit zwei DomÀnen versucht - die zweite ist mit https konfiguriert und wÀhrend der Stub hÀngt. Es werden 81 und 433 interne Ports anstelle von 80 und 443 verwendet, da die Admin-Panels des Routers an den normalen Ports hÀngen.



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;
            }
        }
}




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;






Damit die Site unter https funktioniert, habe ich das bekannte dehydrierte Skript verwendet und es gemĂ€ĂŸ dieser Anweisung installiert . Dieser Vorgang verursachte keine Schwierigkeiten. Ich bin nur auf die Tatsache gestoßen, dass Sie im Text des Skripts, um auf meinem Router zu arbeiten , die Zeile in der Datei /opt/etc/ssl/openssl.cnf auskommentieren mĂŒssen:



[openssl_conf]
#engines=engines


Und ich stelle fest, dass die Generierung von dhparams.pem mit dem Befehl "openssl dhparam -out dhparams.pem 2048" auf meinem Router mehr als 2 Stunden dauert. Ohne die Fortschrittsanzeige hĂ€tte ich die Geduld verloren und einen Neustart durchgefĂŒhrt.



Starten Sie nginx nach Erhalt der Zertifikate mit dem Befehl "/opt/etc/init.d/S80nginx restart" neu. Im Prinzip ist das Setup damit abgeschlossen, aber die Site existiert noch nicht. Wenn wir die Datei index.html im Verzeichnis / share / nginx / html ablegen, wird ein Stub angezeigt.



<!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>




Um Informationen schön zu platzieren, ist es fĂŒr einen Laien wie mich einfacher, vorgefertigte Vorlagen zu verwenden. Nach einer langen Suche in verschiedenen Verzeichnissen habe ich templatemo.com gefunden. Es gibt eine gute Auswahl an kostenlosen Vorlagen, fĂŒr die keine obligatorische Zuordnung erforderlich ist (was im Internet selten vorkommt, da die meisten Vorlagen in der Lizenz einen Link zur Ressource erfordern woher sie stammen).



Wir wĂ€hlen die entsprechende Vorlage aus - fĂŒr verschiedene FĂ€lle laden Sie das Archiv herunter und entpacken es in das Verzeichnis / share / nginx / html. Sie können dies von Ihrem Computer aus tun und dann die Vorlage bearbeiten (hier benötigen Sie nur minimale HTML-Kenntnisse, um die Struktur nicht zu beschĂ€digen) und Ersetzen Sie die Grafiken wie in der Abbildung unten gezeigt.







Zusammenfassung: Der Router eignet sich im Prinzip sehr gut fĂŒr das Hosten einer leichten Site. Wenn keine hohe Last erwartet wird, können Sie PHP installieren und mit komplexeren Projekten experimentieren (ich sehe nextcloud / owncloud, es scheint, dass es erfolgreiche Installationen auf solcher Hardware gibt). Die Möglichkeit, Pakete zu installieren, erhöht seine NĂŒtzlichkeit - zum Beispiel, wenn es notwendig war, den RDP-Port des PCs im lokalen Netzwerk zu schĂŒtzen, Knockd auf den Router zu setzen - und die Portweiterleitung an den PC erst nach dem Klopfen des Ports geöffnet wurde.



Warum ein Router und kein normaler PC? Ein Router ist eine der wenigen Computerhardware, die in vielen Wohnungen rund um die Uhr funktioniert. Ein Heimrouter ist normalerweise absolut gerĂ€uschlos, und ein leichter Standort mit weniger als hundert Besuchen pro Tag wird ihn ĂŒberhaupt nicht belasten.



All Articles