Tout a commencé avec le fait que le routeur TP-Link TL-WR1043ND, qui servait fidèlement, a cessé de répondre aux besoins du réseau domestique, je voulais une bande de 5 GHz et un accès rapide aux fichiers sur un lecteur connecté au routeur. Après avoir parcouru les forums spécialisés (w3bsit3-dns.com, ixbt), les sites avec des critiques et regardé la gamme de magasins locaux, j'ai décidé d'acheter Keenetic Ultra.
En faveur de cet appareil en particulier, les bonnes critiques des propriétaires ont fonctionné:
- pas de problème de surchauffe (ici nous avons dû abandonner les produits Asus);
- fiabilité dans le travail (ici j'ai barré TP-Link);
- facilité de configuration (j'avais peur de ne pas faire face et barré MikroTik).
J'ai dû accepter les inconvénients:
- pas de WiFi6, je voulais prendre du matériel avec une marge pour l'avenir;
- 4 ports LAN, j'en voulais plus, mais ce n'est plus une catégorie domestique.
En conséquence, nous avons ce "serveur":
- Ă gauche, le terminal optique de Rostelecom;
- à droite, notre routeur expérimental;
- un fil vers le routeur est connecté au SSD m.2 128 Go, placé dans une boîte USB3 d'aliexpress, maintenant il est parfaitement fixé au mur;
- au premier plan se trouve une rallonge avec déconnexion indépendante des prises, le fil qui en part va à un onduleur bon marché;
- en arrière-plan, il y a un paquet de paires torsadées - au stade de la rénovation de l'appartement, j'ai immédiatement prévu des prises RJ45 aux endroits où l'équipement était censé être situé, afin de ne pas dépendre de l'encombrement WiFi.
Donc, nous avons l'Ă©quipement, nous devons le configurer:
- la configuration initiale du routeur prend environ 2 minutes, nous indiquons les paramètres de connexion au fournisseur (mon terminal optique est commuté en mode pont, la connexion PPPoE est établie par le routeur), le nom du réseau WiFi et le mot de passe - en gros tout, le routeur démarre et fonctionne.
Nous avons proposé la redirection des ports externes vers les ports du routeur lui-même dans la section "Règles réseau - Transfert":
Vous pouvez maintenant passer à la partie "avancée", ce que je voulais du routeur:
- fonctionnalité d'un petit NAS pour un réseau domestique;
- agissant en tant que serveur Web pour plusieurs pages privées;
- fonctionnalité de cloud personnel pour accéder aux données personnelles de n'importe où dans le monde.
Le premier est implémenté dans des outils intégrés, nécessitant peu d'efforts:
- (, , SSD Ext4 MiniTool Partition Wizard Free Edition ( linux , ). , , , — , — SSD HDD.
Ensuite, nous connectons le lecteur au routeur et l'observons sur l'écran du moniteur système.
Cliquez sur "Disques et imprimantes USB" dans la section "Applications" et configurez un partage dans la section "RĂ©seau Windows":
Et nous avons une ressource réseau qui peut être utilisée avec ordinateurs sous Windows, connexion si nécessaire en tant que disque: net use y: \\ 192.168.1.1 \ SSD / persistent: oui
La vitesse d'un tel NAS improvisé est tout à fait suffisante pour un usage domestique, il utilise tout le gigabit sur le fil, sur WiFi la vitesse est d'environ 400-500 mégabits.
La configuration du stockage est l'une des étapes nécessaires pour configurer le serveur, alors nous devons:
- acheter un domaineet une adresse IP statique (vous pouvez vous en passer en utilisant le DNS dynamique, mais j'avais déjà une adresse IP statique, il s'est donc avéré plus facile d'utiliser les services Yandex gratuits - en déléguant un domaine là - bas , nous obtenons un hébergement DNS et du courrier sur notre domaine);
- configurer les serveurs DNS et ajouter des enregistrements A pointant vers votre adresse IP: il
faut plusieurs heures pour que les paramètres de domaine et de délégation DNS prennent effet, nous configurons donc simultanément le routeur.
Tout d'abord, vous devez installer le référentiel Entware, à partir duquel nous pouvons installer les packages nécessaires sur le routeur. J'ai suivi cette instruction, seulement n'a pas téléchargé le package d'installation via FTP, mais a créé un dossier directement sur le lecteur réseau précédemment connecté et y a copié le fichier de la manière habituelle.
Après avoir obtenu l'accès via SSH, nous changeons le mot de passe avec la commande passwd et installons tous les packages nécessaires avec la commande opkg install [noms de packages]:
Lors de la configuration, les packages suivants ont été installés sur le routeur (la sortie de la commande opkg list-installed):
Liste des paquets
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
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
Il y a peut-ĂŞtre quelque chose de superflu ici, mais il y a beaucoup d'espace sur le lecteur, donc je ne l'ai pas compris.
Après avoir installé les packages, nous configurons nginx, j'ai essayé avec deux domaines - le second est configuré avec https et pendant que le stub est suspendu. 81 et 433 ports internes au lieu de 80 et 443 sont utilisés, car les panneaux d'administration du routeur sont accrochés aux ports normaux.
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;
Pour que le site fonctionne sur https, j'ai utilisé le script déshydraté bien connu, en l'installant selon cette instruction . Ce processus n'a pas posé de difficultés, je suis seulement tombé sur le fait que dans le texte du script pour travailler sur mon routeur, vous devez commenter la ligne dans le fichier /opt/etc/ssl/openssl.cnf:
[openssl_conf]
#engines=engines
Et je note que la génération de dhparams.pem avec la commande "openssl dhparam -out dhparams.pem 2048" sur mon routeur prend plus de 2 heures, sans l'indicateur de progression, j'aurais perdu patience et redémarré.
Après avoir reçu les certificats, redémarrez nginx avec la commande "/opt/etc/init.d/S80nginx restart". En principe, cela termine la configuration, mais le site n'existe pas encore - si nous mettons le fichier index.html dans le répertoire / share / nginx / html, nous verrons un stub.
<!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>
Pour placer joliment les informations, il est plus facile pour un non-professionnel comme moi d'utiliser des modèles prêts à l'emploi, après une longue recherche dans divers répertoires, j'ai trouvé templatemo.com - il existe une bonne sélection de modèles gratuits qui ne nécessitent pas d'attribution obligatoire (ce qui est rare sur Internet, la plupart des modèles de la licence vous obligent à garder un lien vers la ressource d'où ils ont été obtenus).
Nous sélectionnons le modèle approprié - il existe pour une variété de cas, téléchargez l'archive et décompressez-la dans le répertoire / share / nginx / html, vous pouvez le faire à partir de votre ordinateur, puis éditer le modèle (ici, vous avez besoin de connaissances minimales en HTML afin de ne pas casser la structure) et remplacez les graphiques comme indiqué dans l'image ci-dessous.
Résumé: le routeur est tout à fait adapté pour héberger un site léger dessus, en principe - si une charge lourde n'est pas attendue, vous pouvez installer php et expérimenter des projets plus complexes (je regarde nextcloud / owncloud, il semble qu'il y ait des installations réussies sur un tel matériel). La possibilité d'installer des packages augmente son utilité - par exemple, lorsqu'il était nécessaire de protéger le port RDP du PC sur le réseau local, de mettre le routeur à la porte - et la redirection de port vers le PC n'a été ouverte qu'après coup de port.
Pourquoi un routeur et pas un PC ordinaire? Un routeur est l'un des rares matériels informatiques qui fonctionne 24 heures sur 24 dans de nombreux appartements, un routeur domestique est généralement absolument silencieux et un site léger avec moins d'une centaine de visites par jour ne le fatiguera pas du tout.