Хостинг на уебсайт на домашен рутер

Отдавна исках да „докосна ръцете си“ в интернет услугите, като настроя уеб сървър от нулата и го пусна в интернет. В тази статия искам да споделя моя опит в превръщането на домашен рутер от високофункционално устройство в почти пълноценен сървър.

Всичко започна с факта, че рутерът TP-Link TL-WR1043ND, който служеше вярно, вече не отговаряше на нуждите на домашната мрежа; исках честотна лента от 5 GHz и бърз достъп до файлове на устройство за съхранение, свързано към рутера . След като разгледах специализирани форуми (4pda, ixbt), сайтове с рецензии и разгледах асортимента на местните магазини, реших да закупя Keenetic Ultra.

Добрите отзиви от собствениците работят в полза на това конкретно устройство:

  • няма проблеми с прегряването (тук трябваше да изоставим продуктите на Asus);
  • оперативна надеждност (тук зачеркнах TP-Link);
  • лесен за настройка (уплаших се, че не мога да се справя и зачеркнах Microtik).

Трябваше да се примиря с недостатъците:

  • няма WiFi6, исках да взема оборудване с резерв за бъдещето;
  • 4 LAN порта, исках повече, но това вече не е домашна категория.

В резултат на това получихме този „сървър“:

Хостинг на уебсайт на домашен рутер

  • отляво е оптичният терминал на Ростелеком;
  • вдясно е нашият експериментален рутер;
  • 2 GB m.128 SSD, разположен наоколо, поставен в USB3 кутия от Aliexpress, е свързан към рутера с кабел, сега е спретнато монтиран на стената;
  • на преден план е удължителен кабел с независимо изключени гнезда, проводникът от него отива към евтин UPS;
  • на заден план има куп кабели с усукана двойка - на етапа на обновяване на апартамента веднага планирах гнезда RJ45 на местата, където трябваше да се намира оборудването, за да не зависи от разхвърлянето на WiFi.

И така, имаме оборудването, трябва да го конфигурираме:

Хостинг на уебсайт на домашен рутер

  • Първоначалната настройка на рутера отнема около 2 минути, посочваме параметрите на връзката към доставчика (моят оптичен терминал е превключен в режим на мост, PPPoE връзката повдига рутера), името на WiFi мрежата и паролата - общо взето това е , рутерът стартира и работи.

Хостинг на уебсайт на домашен рутер

Задаваме пренасочване на външни портове към портовете на самия рутер в раздела „Мрежови правила - Пренасочване“:

Хостинг на уебсайт на домашен рутер

Хостинг на уебсайт на домашен рутер

Сега можем да преминем към „разширената“ част, това, което исках от рутера:

  1. функционалност на малък NAS за домашна мрежа;
  2. изпълнява функции на уеб сървър за няколко частни страници;
  3. персонална облачна функционалност за достъп до лични данни от всяка точка на света.

Първият се изпълнява с помощта на вградени инструменти, без да изисква много усилия:

  • Взимаме устройство, предназначено за тази роля (флашка, карта с памет в четец на карти, твърд диск или SSD във външна кутия и го форматираме в Ext4 с помощта на MiniTool Partition Wizard Безплатно издание (Нямам компютър с Linux под ръка, възможно е с вградени инструменти). Доколкото разбирам, по време на работа системата пише само логове на флашката, така че ако ги ограничите след настройка на системата, можете да използвате и карти с памет, ако смятате да пишете много и често на устройството - SSD или HDD е по-добър.

Хостинг на уебсайт на домашен рутер

След това свързваме устройството към рутера и го наблюдаваме на екрана на системния монитор

Хостинг на уебсайт на домашен рутер

Кликнете върху „USB устройства и принтери“ в секцията „Приложения“ и конфигурирайте споделянето в секцията „Мрежа на Windows“:

Хостинг на уебсайт на домашен рутер

И имаме мрежов ресурс, който може да се използва от компютри с Windows, свързвайки се като диск, ако е необходимо: ​​net use y: \192.168.1.1SSD /persistent:yes

Скоростта на такъв импровизиран NAS е напълно достатъчна за домашна употреба, по кабел използва целия гигабит, през WiFi скоростта е около 400-500 мегабита.

Хостинг на уебсайт на домашен рутер

Настройването на хранилище е една от необходимите стъпки за конфигуриране на сървъра, след което се нуждаем от:
- купете домейн и статичен IP адрес (можете да направите и без това, като използвате Dynamic DNS, но аз вече имах статичен IP, така че се оказа по-лесно за използване безплатни услуги на Yandex - като делегирате домейна там, получаваме DNS хостинг и поща на нашия домейн);

Хостинг на уебсайт на домашен рутер

- конфигуриране на DNS сървъри и добавете A записи, сочещи към вашия IP:

Хостинг на уебсайт на домашен рутер

Отнема няколко часа, докато настройките за делегиране на домейн и DNS влязат в сила, така че едновременно настройваме рутера.

Първо, трябва да инсталираме хранилището на Entware, от което да инсталираме необходимите пакети на рутера. Аз се възползвах тази инструкция, просто не е качил инсталационния пакет чрез FTP, а е създал папка директно на свързаното преди това мрежово устройство и копира файла там по обичайния начин.

След като получите достъп чрез SSH, променете паролата с командата passwd и инсталирайте всички необходими пакети с командата opkg install [имена на пакети]:

Хостинг на уебсайт на домашен рутер

По време на настройката следните пакети бяха инсталирани на рутера (изход от командата opkg list-installed):

Списък с пакети
баш - 5.0-3
busybox - 1.31.1-1
ca-пакет - 20190110-2
ca-сертификати - 20190110-2
coreutils - 8.31-1
coreutils-mktemp - 8.31-1
cron - 4.1-3
къдря - 7.69.0-1
дифутили - 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-пълен - 1.11.1-4
libintl-пълен - 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
либуид - 2.35.1-1
libxml2 - 2.9.10-1
локали - 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
бедняшка - 1.31.1-2
терминфо - 6.2-1
zlib - 1.2.11-3
zoneinfo-asia - 2019c-1
zoneinfo-europe - 2019c-1

Може би тук имаше нещо излишно, но на устройството имаше много място, така че не си направих труда да го разглеждам.

След като инсталираме пакетите, конфигурираме nginx, пробвах го с два домейна - втория е конфигуриран с https, и за сега има пънче. Използват се вътрешни портове 81 и 433 вместо 80 и 443, тъй като административният панел на рутера виси на нормалните портове.

и т.н./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 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;

За да може сайтът да работи през https, използвах добре познатия дехидратиран скрипт, като го инсталирах с тази инструкция. Този процес не създаде никакви затруднения, само се натъкнах на факта, че в текста на скрипта за работа на моя рутер трябва да коментирате реда във файла /opt/etc/ssl/openssl.cnf:

[openssl_conf]
#engines=engines

И отбелязвам, че генерирането на dhparams.pem с командата „openssl dhparam -out dhparams.pem 2048“ на моя рутер отнема повече от 2 часа, ако не беше индикаторът за напредък, щях да изгубя търпение и да рестартирам.

След като получите сертификатите, рестартирайте nginx с командата „/opt/etc/init.d/S80nginx restart“. По принцип настройката е завършена, но все още няма уебсайт - ако поставим файла index.html в директорията /share/nginx/html, ще видим мъниче.

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>

За да постави информация красиво, за непрофесионалист като мен е по-лесно да използва готови шаблони; след дълго търсене в различни каталози открих templatemo.com - има добра селекция от безплатни шаблони, които не изискват приписване (което е рядкост в интернет; повечето от шаблоните в лиценза изискват да запазите връзка към ресурса, от който са получени).

Избираме подходящ шаблон - има такива за различни случаи, изтеглете архива и го разопаковайте в директорията /share/nginx/html, можете да направите това от вашия компютър, след което редактирайте шаблона (тук ще ви трябват минимални познания на HTML, за да не нарушите структурата) и заменете графиките, както е показано на фигурата по-долу.

Хостинг на уебсайт на домашен рутер

Резюме: рутерът е доста подходящ за хостване на лек уебсайт на него, по принцип - ако не се очаква голямо натоварване, можете инсталирайте и php, и експериментирайте с по-сложни проекти (гледам nextcloud/owncloud, май има успешни инсталации на такъв хардуер). Възможността за инсталиране на пакети увеличава неговата полезност - например, когато беше необходимо да защитя RDP порта на компютър в локална мрежа, инсталирах knockd на рутера - и препращането на порт към компютъра беше отворено само след почукване на порта.

Защо рутер, а не обикновен компютър? Рутерът е един от малкото компютърни хардуерни части, които работят денонощно в много апартаменти; домашният рутер обикновено е абсолютно безшумен и лек сайт с по-малко от сто посещения на ден изобщо няма да го притеснява.

Източник: www.habr.com

Добавяне на нов коментар