Долго време сакав да ги „допрам рацете“ на услугите на Интернет со поставување на веб-сервер од нула и пуштање на Интернет. Во оваа статија сакам да го споделам моето искуство за трансформирање на домашен рутер од високо функционален уред во речиси полноправен сервер.
Сè започна со фактот дека рутерот 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 и лозинката - во основа тоа е тоа , рутерот се вклучува и работи.

Поставивме препраќање на надворешни порти до пристаништата на самиот рутер во делот „Мрежни правила - Препраќање“:


Сега можеме да преминеме на „напредниот“ дел, што сакав од рутерот:
- функционалност на мал NAS за домашна мрежа;
- извршување на функции на веб сервер за неколку приватни страници;
- функционалност на лична облак за пристап до лични податоци од каде било во светот.
Првиот се спроведува со помош на вградени алатки, без да бара многу напор:
- Земаме диск наменет за оваа улога (флеш-уред, мемориска картичка во читач на картички, хард диск или SSD во надворешна кутија и го форматираме во Ext4 користејќи (Немам при рака компјутер со Linux, тоа е можно со вградени алатки). Како што разбрав, за време на работата системот запишува само дневници на флеш-уредот, па ако ги ограничите по поставувањето на системот, можете да користите и мемориски картички ако планирате да пишувате многу и често на уредот - SSD или HDD е подобар.

По ова, го поврзуваме погонот со рутерот и го набљудуваме на екранот на системскиот монитор

Кликнете на „USB дискови и печатачи“ за да отидете во делот „Апликации“ и да поставите споделен ресурс во делот „Мрежа“. Windows"

И имаме мрежен ресурс што може да се користи од компјутери под Windows, поврзувајќи го како диск доколку е потребно: net use y: \192.168.1.1SSD /persistent:yes
Брзината на таков импровизиран NAS е сосема доволна за домашна употреба преку жица што го користи целиот гигабит, преку WiFi брзината е околу 400-500 мегабити.

Поставувањето складирање е еден од неопходните чекори за конфигурирање на серверот, тогаш ни треба:
- и статична IP адреса (можете без ова со користење на Dynamic DNS, но јас веќе имав статична IP адреса, па се покажа дека е полесна за користење - , добиваме DNS хостинг и пошта на нашиот домен);

- и додадете записи А што укажуваат на вашата IP адреса:

Потребни се неколку часа за да стапат на сила поставките за делегирање на доменот и DNS, така што истовремено го поставуваме рутерот.
Прво, треба да го инсталираме складиштето Entware, од кое можеме да ги инсталираме потребните пакети на рутерот. Ја искористив , едноставно не го подигна инсталациониот пакет преку FTP, туку креираше папка директно на претходно поврзаниот мрежен диск и ја копираше датотеката таму на вообичаен начин.
Откако сте добиле пристап преку SSH, сменете ја лозинката со командата passwd и инсталирајте ги сите потребни пакети со командата opkg install [package names]:

За време на поставувањето, следните пакети беа инсталирани на рутерот (излезот од командата инсталирана од списокот opkg):
Список на пакети
баш - 5.0-3
busybox - 1.31.1-1
ка-пакет - 20190110-2
ка-сертификати - 20190110-2
coreutils - 8.31-1
coreutils-mktemp - 8.31-1
крон - 4.1-3
навивам - 7.69.0-1
дифутили - 3.7-2
dropbear - 2019.78-3
entware-release - 1.0-2
откритија - 4.7.0-1
glib2 - 2.58.3-5
греп - 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
либлуа - 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
злиб - 1.2.11-3
зонаинфо-азија - 2019c-1
zoneinfo-europe - 2019c-1
Можеби имаше нешто излишно овде, но имаше многу простор на погонот, па не се трудев да го разгледам.
По инсталирањето на пакетите конфигурираме nginx, пробав со два домени - вториот е конфигуриран со https, а засега има никулец. Внатрешните порти 81 и 433 се користат наместо 80 и 443, бидејќи административниот панел на рутерот виси на нормални порти.
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;
}
}
}
</spoiler>
<spoiler data-gt-translate-attributes='["title"]' 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 рестартирајте“. Во принцип, поставувањето е завршено, но сè уште нема веб-локација - ако ја ставиме датотеката 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>За убаво да ги поставите информациите, на непрофесионалец како мене му е полесно да користи готови шаблони по долго пребарување низ разни каталози - има добар избор на бесплатни шаблони кои не бараат наведување (што е ретко на Интернет; повеќето од шаблоните во лиценцата бараат да зачувате врска до ресурсот од кој се добиени).
Избираме соодветен шаблон - има такви за различни случаи, преземете ја архивата и отпакувајте ја во директориумот /share/nginx/html, можете да го направите тоа од вашиот компјутер, а потоа уредете го шаблонот (тука ќе ви треба минимално знаење на HTML за да не се скрши структурата) и заменете ја графиката како што е прикажано на сликата подолу.

Резиме: рутерот е сосема погоден за хостирање на лесна веб-страница на него, во принцип - ако не очекувате големо оптоварување, можете , и експериментирајте со посложени проекти (гледам на nextcloud/owncloud, се чини дека има успешни инсталации на таков хардвер). Способноста за инсталирање пакети ја зголемува нејзината корисност - на пример, кога беше неопходно да се заштити RDP-портата на компјутер на локална мрежа, инсталирав knockd на рутерот - а препраќањето на портата до компјутерот се отвори само по тропањето на портата.
Зошто рутер, а не обичен компјутер? Рутерот е еден од ретките компјутерски парчиња хардвер што работи деноноќно во многу станови, домашниот рутер обично е апсолутно тивок и лесен сајт со помалку од сто посети на ден воопшто нема да му пречи.
Извор: www.habr.com
