Uy routeringizda veb-saytni joylashtirish

Men uzoq vaqtdan beri veb-serverni noldan o'rnatish va uni Internetga chiqarish orqali Internet xizmatlariga "qo'llarimni tegizishni" xohlardim. Ushbu maqolada men uy routerini yuqori funktsional qurilmadan deyarli to'liq serverga aylantirish bo'yicha tajribam bilan o'rtoqlashmoqchiman.

Hammasi sodiq xizmat qilgan TP-Link TL-WR1043ND routeri endi uy tarmog'ining ehtiyojlariga javob bermasligidan boshlandi; Men 5 gigagertsli diapazonni va routerga ulangan saqlash qurilmasidagi fayllarga tezkor kirishni xohlardim. . Ixtisoslashgan forumlarni (4pda, ixbt), sharhlar bilan saytlarni ko'rib chiqqach va mahalliy do'konlar assortimentini ko'rib chiqib, Keenetic Ultra-ni sotib olishga qaror qildim.

Egalarining yaxshi sharhlari ushbu qurilma foydasiga ishladi:

  • haddan tashqari issiqlik bilan bog'liq muammolar yo'q (bu erda biz Asus mahsulotlaridan voz kechishimiz kerak edi);
  • operatsion ishonchliligi (bu erda men TP-Linkni kesib tashladim);
  • o'rnatish oson (men buni uddalay olmasligimdan qo'rqdim va Microtikni kesib tashladim).

Kamchiliklar bilan kelishib olishim kerak edi:

  • WiFi6 yo'q, men kelajak uchun zaxira bilan jihoz olishni xohlardim;
  • 4 LAN portlari, men ko'proq narsani xohlardim, lekin bu endi uy toifasi emas.

Natijada biz ushbu "server" ni oldik:

Uy routeringizda veb-saytni joylashtirish

  • chapda Rostelekomning optik terminali;
  • o'ng tomonda bizning eksperimental routerimiz;
  • Aliexpress-dan USB2 qutisiga joylashtirilgan 128 GB m.3 SSD yotgan, routerga sim bilan ulangan, endi u devorga chiroyli tarzda o'rnatilgan;
  • oldingi o'rinda - mustaqil ravishda uzilgan rozetkalari bo'lgan uzatma kabeli, undan sim arzon UPSga o'tadi;
  • fonda bir nechta o'ralgan kabellar mavjud - kvartirani ta'mirlash bosqichida men Wi-Fi-ning ifloslanishiga bog'liq bo'lmaslik uchun darhol jihozlar joylashishi kerak bo'lgan joylarda RJ45 rozetkalarini rejalashtirdim.

Shunday qilib, bizda uskunalar bor, biz uni sozlashimiz kerak:

Uy routeringizda veb-saytni joylashtirish

  • Routerni dastlabki sozlash taxminan 2 daqiqa davom etadi, biz provayderga ulanish parametrlarini ko'rsatamiz (mening optik terminalim ko'prik rejimiga o'tgan, PPPoE ulanishi routerni ko'taradi), WiFi tarmog'ining nomi va parol - asosan shunday. , router ishga tushadi va ishlaydi.

Uy routeringizda veb-saytni joylashtirish

Biz tashqi portlarni yo'riqnoma portlariga yo'naltirishni "Tarmoq qoidalari - Yo'naltirish" bo'limida o'rnatamiz:

Uy routeringizda veb-saytni joylashtirish

Uy routeringizda veb-saytni joylashtirish

Endi biz marshrutizatordan xohlaganimning "ilg'or" qismiga o'tishimiz mumkin:

  1. uy tarmog'i uchun kichik NAS funksionalligi;
  2. bir nechta shaxsiy sahifalar uchun veb-server funktsiyalarini bajarish;
  3. shaxsiy ma'lumotlarga dunyoning istalgan nuqtasidan kirish uchun shaxsiy bulut funksiyasi.

Birinchisi, ko'p kuch talab qilmasdan o'rnatilgan vositalar yordamida amalga oshiriladi:

  • Biz ushbu rol uchun mo'ljallangan drayverni olamiz (flesh-disk, kartani o'quvchidagi xotira kartasi, tashqi qutidagi qattiq disk yoki SSD va uni Ext4 formatida formatlaymiz. MiniTool Part Wizard Free Edition (Menda Linux o'rnatilgan kompyuter yo'q, bu o'rnatilgan vositalar bilan mumkin). Men tushunganimdek, ish paytida tizim faqat flesh-diskga jurnallarni yozadi, shuning uchun agar siz tizimni o'rnatganingizdan so'ng ularni cheklasangiz, xotira kartalaridan ham foydalanishingiz mumkin, agar siz haydovchiga ko'p va tez-tez yozishni rejalashtirmoqchi bo'lsangiz - SSD yoki HDD yaxshiroq.

Uy routeringizda veb-saytni joylashtirish

Shundan so'ng, biz drayverni routerga ulaymiz va uni tizim monitor ekranida kuzatamiz

Uy routeringizda veb-saytni joylashtirish

"Ilovalar" bo'limida "USB drayvlar va printerlar" ni bosing va "Windows tarmog'i" bo'limida ulushni sozlang:

Uy routeringizda veb-saytni joylashtirish

Va bizda Windows kompyuterlaridan foydalanish mumkin bo'lgan tarmoq resursiga egamiz, agar kerak bo'lsa disk sifatida ulanadi: net use y: \192.168.1.1SSD /persistent:ha

Bunday improvizatsiyalangan NAS tezligi uyda foydalanish uchun etarli; sim orqali u butun gigabitni ishlatadi, WiFi orqali tezligi taxminan 400-500 megabitni tashkil qiladi.

Uy routeringizda veb-saytni joylashtirish

Xotirani sozlash serverni sozlash uchun zarur qadamlardan biridir, keyin bizga kerak:
- domen sotib oling va statik IP-manzil (siz Dynamic DNS-dan foydalanib buni amalga oshirishingiz mumkin, lekin menda allaqachon statik IP bor edi, shuning uchun undan foydalanish osonroq bo'ldi. bepul Yandex xizmatlari - domenni u yerga topshirish orqali, biz domenimizda DNS hosting va pochtani olamiz);

Uy routeringizda veb-saytni joylashtirish

- DNS serverlarini sozlash va IP-ga ishora qiluvchi A yozuvlarini qo'shing:

Uy routeringizda veb-saytni joylashtirish

Domen va DNS delegatsiyasi sozlamalari kuchga kirishi uchun bir necha soat kerak bo'ladi, shuning uchun biz bir vaqtning o'zida routerni o'rnatamiz.

Birinchidan, biz Entware omborini o'rnatishimiz kerak, undan biz routerga kerakli paketlarni o'rnatishimiz mumkin. Foyda oldim ushbu ko'rsatma bilan, faqat o'rnatish paketini FTP orqali yuklamadi, lekin to'g'ridan-to'g'ri oldindan ulangan tarmoq drayverida papka yaratdi va u erda faylni odatdagi tarzda nusxa ko'chirdi.

SSH orqali kirish huquqiga ega bo'lgach, parolni passwd buyrug'i bilan o'zgartiring va barcha kerakli paketlarni opkg install [paket nomlari] buyrug'i bilan o'rnating:

Uy routeringizda veb-saytni joylashtirish

O'rnatish vaqtida marshrutizatorga quyidagi paketlar o'rnatildi (opkg ro'yxatida o'rnatilgan buyruqning chiqishi):

Paketlar ro'yxati
bash - 5.0-3
band bo'lmagan quti - 1.31.1-1
ca-to'plami - 20190110-2
ca-sertifikatlar - 20190110-2
coreutils - 8.31-1
coreutils-mktemp - 8.31-1
cron - 4.1-3
jingalak - 7.69.0-1
diffutillar - 3.7-2
dropbear - 2019.78
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-to'liq - 1.11.1-4
libintl-to'liq - 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
libuid - 2.35.1-1
libxml2 - 2.9.10-1
mahalliy tillar - 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
kambag'al quti - 1.31.1-2
termin - 6.2-1
zlib - 1.2.11-3
zonainfo-asia - 2019c-1
zonainfo-europe - 2019c-1

Ehtimol, bu erda ortiqcha narsa bor edi, lekin haydovchida juda ko'p bo'sh joy bor edi, shuning uchun men unga qarashni bezovta qilmadim.

Paketlarni o'rnatgandan so'ng, biz nginx-ni sozlaymiz, men uni ikkita domen bilan sinab ko'rdim - ikkinchisi https bilan sozlangan va hozircha stub mavjud. 81 va 433 o'rniga ichki portlar 80 va 443 ishlatiladi, chunki yo'riqnoma boshqaruv paneli oddiy portlarga osilgan.

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

Sayt https orqali ishlashi uchun men taniqli suvsizlangan skriptni ishlatib, uni o'rnatdim ushbu ko'rsatma. Bu jarayon hech qanday qiyinchilik tug'dirmadi, men faqat skript matnida routerimda ishlashga qoqilib qoldim. fayldagi qatorni izohlashingiz kerak /opt/etc/ssl/openssl.cnf:

[openssl_conf]
#engines=engines

Va shuni ta'kidlaymanki, mening yo'riqnomamda "openssl dhparam -out dhparams.pem 2048" buyrug'i bilan dhparams.pem ni yaratish 2 soatdan ko'proq vaqtni oladi, agar progress indikatori bo'lmasa, men sabrimni yo'qotib, qayta ishga tushirgan bo'lardim.

Sertifikatlarni olgandan so'ng, "/opt/etc/init.d/S80nginx restart" buyrug'i bilan nginx-ni qayta ishga tushiring. Printsipial jihatdan sozlash tugallandi, lekin hali veb-sayt yo'q - agar biz index.html faylini /share/nginx/html katalogiga joylashtirsak, biz stubni ko'ramiz.

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>

Ma'lumotni chiroyli joylashtirish uchun men kabi professional bo'lmaganlar uchun tayyor shablonlardan foydalanish osonroq; turli kataloglarni uzoq vaqt qidirib topdim. templatemo.com - atributni talab qilmaydigan bepul shablonlarning yaxshi tanlovi mavjud (bu Internetda kam uchraydi; litsenziyadagi shablonlarning aksariyati sizdan ular olingan manbaga havolani saqlashingizni talab qiladi).

Biz mos shablonni tanlaymiz - har xil holatlar uchun shablonlar mavjud, arxivni yuklab oling va uni /share/nginx/html katalogiga oching, siz buni kompyuteringizdan qilishingiz mumkin, keyin shablonni tahrirlashingiz mumkin (bu erda sizga minimal bilim kerak bo'ladi. strukturani buzmaslik uchun HTML ni o'rnating) va grafiklarni quyidagi rasmda ko'rsatilgandek almashtiring.

Uy routeringizda veb-saytni joylashtirish

Xulosa: yo'riqnoma unda engil veb-saytni joylashtirish uchun juda mos keladi, printsipial jihatdan - agar katta yuk kutilmasa, siz mumkin o'rnatish va php, va yanada murakkab loyihalar bilan tajriba (men nextcloud/o'z bulutiga qarayman, bunday uskunada muvaffaqiyatli o'rnatishlar mavjud ko'rinadi). Paketlarni o'rnatish qobiliyati uning foydaliligini oshiradi - masalan, mahalliy tarmoqdagi shaxsiy kompyuterning RDP portini himoya qilish kerak bo'lganda, men routerga knockd o'rnatdim - va portni kompyuterga yo'naltirish faqat port taqillatgandan keyin ochildi.

Nima uchun oddiy kompyuter emas, balki router? Router - bu ko'plab xonadonlarda kechayu kunduz ishlaydigan bir nechta kompyuter qismlaridan biri; uy routeri odatda mutlaqo jim va kuniga yuzdan kam tashrif buyuradigan engil sayt uni umuman bezovta qilmaydi.

Manba: www.habr.com

a Izoh qo'shish