Үй маршрутизаторында веб-сайтты орналастыру

Мен көптен бері веб-серверді нөлден орнату және оны Интернетке шығару арқылы Интернет қызметтеріне «қолымды тигізгім келеді». Бұл мақалада мен үй маршрутизаторын жоғары функционалды құрылғыдан дерлік толыққанды серверге айналдыру тәжірибесімен бөліскім келеді.

Мұның бәрі адал қызмет еткен TP-Link TL-WR1043ND маршрутизаторы бұдан былай үй желісінің қажеттіліктерін қанағаттандырмауынан басталды; Мен 5 ГГц диапазонын және маршрутизаторға қосылған сақтау құрылғысындағы файлдарға жылдам қол жеткізуді қаладым. . Мамандандырылған форумдарды (4pda, ixbt), шолулары бар сайттарды және жергілікті дүкендердің ассортиментін қарап шыққаннан кейін мен Keenetic Ultra сатып алуды шештім.

Иелердің жақсы пікірлері осы құрылғының пайдасына жұмыс істеді:

  • қызып кету проблемалары жоқ (мұнда біз Asus өнімдерін тастауға тура келді);
  • операциялық сенімділік (мұнда мен TP-Link-ті сызып тастадым);
  • орнату оңай (мен оны көтере алмаймын деп қорықтым және Microtik-ті сызып тастадым).

Мен кемшіліктермен келісуге тура келді:

  • WiFi6 жоқ, мен болашаққа резерві бар жабдықты алғым келді;
  • 4 LAN порты, мен көбірек алғым келеді, бірақ бұл енді үй санаты емес.

Нәтижесінде біз бұл «серверді» алдық:

Үй маршрутизаторында веб-сайтты орналастыру

  • сол жақта Ростелекомның оптикалық терминалы;
  • оң жақта біздің эксперименттік маршрутизатор;
  • Aliexpress-тен USB2 қорапшасында орналасқан 128 ГБ м.3 SSD, маршрутизаторға сым арқылы қосылған, енді ол қабырғаға ұқыпты орнатылған;
  • алдыңғы қатарда дербес ажыратылған розеткалары бар ұзартқыш сым бар, одан сым қымбат емес UPS-ке өтеді;
  • фонда бұралған жұп кабельдер бар - пәтерді жөндеу кезеңінде мен WiFi-ның ластануына тәуелді болмас үшін бірден жабдықты орналастыру керек жерлерде RJ45 розеткаларын жоспарладым.

Сонымен, бізде жабдық бар, біз оны конфигурациялауымыз керек:

Үй маршрутизаторында веб-сайтты орналастыру

  • Маршрутизаторды бастапқы орнату шамамен 2 минутты алады, біз провайдерге қосылу параметрлерін көрсетеміз (менің оптикалық терминалым көпір режиміне ауыстырылды, PPPoE қосылымы маршрутизаторды көтереді), WiFi желісінің атауы және құпия сөз - негізінен бұл , маршрутизатор іске қосылады және жұмыс істейді.

Үй маршрутизаторында веб-сайтты орналастыру

Біз сыртқы порттарды маршрутизатордың порттарына бағыттауды «Желі ережелері - Forwarding» бөлімінде орнаттық:

Үй маршрутизаторында веб-сайтты орналастыру

Үй маршрутизаторында веб-сайтты орналастыру

Енді мен маршрутизатордан қалаған «қосымша» бөлікке көшуге болады:

  1. үй желісі үшін шағын NAS функционалдығы;
  2. бірнеше жеке беттер үшін веб-сервер функцияларын орындау;
  3. әлемнің кез келген жерінен жеке деректерге қол жеткізуге арналған жеке бұлт функционалдығы.

Біріншісі көп күш жұмсамай, кірістірілген құралдардың көмегімен жүзеге асырылады:

  • Біз осы рөлге арналған дискіні (флэш-диск, картаны оқу құралындағы жад картасы, сыртқы қораптағы қатты диск немесе SSD) алып, оны Ext4 форматында пішімдейміз. MiniTool Partition Wizard Тегін шығарылымы (Менде Linux жүйесі бар компьютер жоқ, бұл кірістірілген құралдармен мүмкін). Менің түсінуімше, жүйе жұмыс кезінде флэш-дискке журналдарды ғана жазады, сондықтан жүйені орнатқаннан кейін оларды шектейтін болсаңыз, дискіге көп және жиі жазуды жоспарласаңыз, жад карталарын да пайдалана аласыз - SSD немесе HDD жақсырақ.

Үй маршрутизаторында веб-сайтты орналастыру

Осыдан кейін біз дискіні маршрутизаторға қосып, оны жүйелік монитор экранында бақылаймыз

Үй маршрутизаторында веб-сайтты орналастыру

«Қолданбалар» бөліміне «USB дискілері мен принтерлері» түймесін басып, «Windows желісі» бөлімінде бөлісуді конфигурациялаңыз:

Үй маршрутизаторында веб-сайтты орналастыру

Бізде Windows компьютерлерінен пайдалануға болатын желілік ресурс бар, қажет болған жағдайда диск ретінде қосылатын: таза пайдалану y: \192.168.1.1SSD / тұрақты: иә

Мұндай импровизацияланған NAS жылдамдығы үйде пайдалану үшін жеткілікті; сым арқылы ол бүкіл гигабитті пайдаланады, WiFi арқылы жылдамдығы шамамен 400-500 мегабитті құрайды.

Үй маршрутизаторында веб-сайтты орналастыру

Жадты орнату серверді конфигурациялау үшін қажетті қадамдардың бірі болып табылады, содан кейін бізге қажет:
- домен сатып алыңыз және статикалық IP мекенжайы (сіз Dynamic DNS арқылы онсыз жасай аласыз, бірақ менде статикалық IP болды, сондықтан оны пайдалану оңайырақ болды. тегін Яндекс қызметтері - сол жерде доменді беру арқылы, біз DNS хостингін және біздің домендегі поштаны аламыз);

Үй маршрутизаторында веб-сайтты орналастыру

- DNS серверлерін конфигурациялаңыз және IP мекенжайыңызды көрсететін A жазбаларын қосыңыз:

Үй маршрутизаторында веб-сайтты орналастыру

Домен және DNS өкілдігі параметрлерінің күшіне енуі үшін бірнеше сағат қажет, сондықтан біз бір уақытта маршрутизаторды реттеп жатырмыз.

Біріншіден, Entware репозиторийін орнату керек, одан маршрутизаторға қажетті пакеттерді орнатуға болады. Мен пайдаланып қалдым осы нұсқаулықпен, жай ғана орнату бумасын FTP арқылы жүктеп салмады, бірақ тікелей бұрын қосылған желілік дискіде қалтаны жасап, файлды кәдімгі жолмен көшірді.

SSH арқылы рұқсат алғаннан кейін, passwd пәрменімен құпия сөзді өзгертіңіз және opkg install [пакет атаулары] пәрменімен барлық қажетті бумаларды орнатыңыз:

Үй маршрутизаторында веб-сайтты орналастыру

Орнату кезінде маршрутизаторға келесі пакеттер орнатылды (opkg тізімінде орнатылған пәрменнің шығысы):

Пакеттердің тізімі
bash - 5.0-3
бос емес жәшік - 1.31.1-1
ca-бума - 20190110-2
ca-сертификаттары - 20190110-2
coreutils - 8.31-1
coreutils-mktemp - 8.31-1
крон - 4.1-3
бұйралау - 7.69.0-1
диффутилдер - 3.7-2
dropbear - 2019.78
entware-релиз - 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
libuid - 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 арқылы конфигурацияланған, ал әзірге stub бар. Ішкі порттар 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 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

Маршрутизаторымда “openssl dhparam -out dhparams.pem 2048” пәрменімен dhparams.pem генерациясына 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/өз бұлтына қараймын, мұндай жабдықта сәтті орнатулар бар сияқты). Пакеттерді орнату мүмкіндігі оның пайдалылығын арттырады - мысалы, жергілікті желіде ДК-нің RDP портын қорғау қажет болғанда, мен маршрутизаторға knockd орнаттым - және портты компьютерге қайта бағыттау портты тықылдатқаннан кейін ғана ашылды.

Неліктен қарапайым компьютер емес, маршрутизатор? Маршрутизатор - көптеген пәтерлерде тәулік бойы жұмыс істейтін бірнеше компьютерлік жабдықтың бірі; үй маршрутизаторы әдетте мүлдем үнсіз және күніне жүзден аз кіретін жеңіл сайт оны мүлдем мазаламайды.

Ақпарат көзі: www.habr.com

пікір қалдыру