Kami meng-host situs di router rumah

Saya sudah lama ingin "menyentuh" ​​layanan Internet dengan mengatur server web dari awal dan merilisnya di Internet. Pada artikel ini, saya ingin berbagi pengalaman saya mengubah router rumah dari perangkat fungsional sempit menjadi server yang hampir penuh.



Semuanya dimulai dengan fakta bahwa router TP-Link TL-WR1043ND, yang berfungsi dengan setia, tidak lagi memenuhi kebutuhan jaringan rumah, saya menginginkan pita 5 GHz dan akses cepat ke file pada drive yang terhubung ke router. Setelah melihat melalui forum khusus (w3bsit3-dns.com, ixbt), situs dengan ulasan dan melihat berbagai toko lokal, saya memutuskan untuk membeli Keenetic Ultra.



Untuk perangkat khusus ini, ulasan bagus dari pemilik bekerja:



  • tidak ada masalah dengan overheating (di sini kami harus meninggalkan produk Asus);
  • keandalan dalam pekerjaan (di sini saya mencoret TP-Link);
  • kemudahan pengaturan (saya takut tidak mengatasi dan mencoret MikroTik).


Saya harus berdamai dengan yang kontra:



  • tidak ada WiFi6, saya ingin mengambil peralatan dengan margin untuk masa depan;
  • 4 port LAN, saya ingin lebih, tetapi ini bukan lagi kategori rumah.


Akibatnya, kami mendapat "server" ini:







  • di sebelah kiri adalah terminal optik Rostelecom;
  • di sebelah kanan adalah router eksperimental kami;
  • kawat ke router terhubung ke berbaring di sekitar m.2 SSD 128 GB, ditempatkan di kotak USB3 dari aliexpress, sekarang sudah diperbaiki rapi di dinding;
  • di latar depan adalah kabel ekstensi dengan pemutusan soket independen, kawat dari itu pergi ke UPS yang murah;
  • di latar belakang ada bundel twisted pair - pada tahap renovasi apartemen, saya segera merencanakan soket RJ45 di tempat-tempat di mana peralatan seharusnya berada, agar tidak bergantung pada kekacauan WiFi.


Jadi, kita memiliki peralatannya, kita perlu mengkonfigurasinya:







  • konfigurasi awal router memakan waktu sekitar 2 menit, kami menunjukkan parameter koneksi ke penyedia (terminal optik saya beralih ke mode jembatan, koneksi PPPoE dinaikkan oleh router), nama jaringan WiFi dan kata sandi - pada dasarnya semuanya, router mulai dan bekerja.






Kami menempatkan penerusan port eksternal ke port router itu sendiri di bagian "Aturan jaringan - Penerusan":











Sekarang Anda dapat pergi ke bagian "lanjutan", yang saya inginkan dari router:



  1. fungsi NAS kecil untuk jaringan rumah;
  2. bertindak sebagai server web untuk beberapa halaman pribadi;
  3. fungsionalitas cloud pribadi untuk mengakses data pribadi dari mana saja di dunia.


Yang pertama diimplementasikan dalam alat bawaan, membutuhkan sedikit usaha:









Setelah itu, kami menghubungkan drive ke router dan mengamatinya pada layar monitor sistem.







Klik "drive USB dan printer" di bagian "Aplikasi" dan mengatur bagian di bagian "Jaringan Windows":







Dan kami memiliki sumber daya jaringan yang dapat digunakan dengan komputer di bawah Windows, menghubungkan, jika perlu, sebagai drive: net use y: \\ 192.168.1.1 \ SSD / persistent: yes



Kecepatan NAS improvisasi tersebut cukup memadai untuk digunakan di rumah, ia menggunakan semua gigabit melalui kabel, melalui WiFi kecepatannya sekitar 400-500 megabit.







Mengkonfigurasi penyimpanan adalah salah satu langkah yang diperlukan untuk mengkonfigurasi server, maka kita perlu:

- membeli domaindan alamat IP statis (Anda dapat melakukannya tanpa menggunakan Dynamic DNS, tetapi saya sudah memiliki IP statis, jadi ternyata lebih mudah menggunakan layanan Yandex gratis - dengan mendelegasikan domain di sana , kami mendapatkan hosting DNS dan mengirimkan email ke domain kami);







- mengkonfigurasi server DNS dan menambahkan catatan-A yang menunjuk ke IP Anda: Diperlukan







beberapa jam untuk pengaturan domain dan delegasi DNS untuk berlaku, jadi kami secara bersamaan mengkonfigurasi router.



Pertama, Anda perlu menginstal repositori Entware, dari mana kita dapat menginstal paket yang diperlukan pada router. Saya mengikuti instruksi ini, hanya tidak mengunggah paket instalasi melalui FTP, tetapi membuat folder langsung pada drive jaringan yang sebelumnya terhubung dan menyalin file di sana dengan cara biasa.



Setelah mendapatkan akses melalui SSH, kami mengubah kata sandi dengan perintah passwd dan menginstal semua paket yang diperlukan dengan perintah opkg install [nama paket]:







Selama konfigurasi, paket-paket berikut ini diinstal pada router (output dari perintah yang diinstal dengan daftar opkg):



Daftar Paket
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



Mungkin ada sesuatu yang berlebihan di sini, tetapi ada banyak ruang di drive, jadi saya tidak mengetahuinya.



Setelah menginstal paket, kami mengkonfigurasi nginx, saya mencoba dengan dua domain - yang kedua dikonfigurasi dengan https, dan ketika stub sedang hang. 81 dan 433 port internal bukannya 80 dan 443 digunakan, karena panel admin router menggantung di port normal.



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;






Agar situs dapat berfungsi di https, saya menggunakan skrip terdehidrasi yang terkenal, menginstalnya sesuai dengan instruksi ini . Proses ini tidak menimbulkan kesulitan, saya hanya menemukan fakta bahwa dalam teks skrip untuk bekerja pada router saya, Anda perlu mengomentari baris dalam file /opt/etc/ssl/openssl.cnf:



[openssl_conf]
#engines=engines


Dan saya perhatikan bahwa menghasilkan dhparams.pem dengan perintah "openssl dhparam -out dhparams.pem 2048" pada router saya membutuhkan lebih dari 2 jam, jika bukan karena indikator kemajuan, saya akan kehilangan kesabaran dan reboot.



Setelah menerima sertifikat, restart nginx dengan perintah "/opt/etc/init.d/S80nginx restart". Pada prinsipnya, ini menyelesaikan pengaturan, tetapi situs tersebut belum ada - jika kita meletakkan file index.html di direktori / share / nginx / html, kita akan melihat sebuah rintisan.



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




Untuk menempatkan informasi dengan indah, lebih mudah bagi non-profesional seperti saya untuk menggunakan templat yang sudah jadi, setelah pencarian panjang dari berbagai direktori saya menemukan templatemo.com - ada pilihan templat gratis yang bagus yang tidak memerlukan atribusi wajib (yang jarang ada di Internet, sebagian besar templat dalam lisensi mengharuskan Anda menyimpan tautan ke sumber daya dari mana mereka diperoleh).



Kami memilih templat yang sesuai - ada berbagai kasus, mengunduh arsip, dan membukanya di direktori / share / nginx / html, Anda dapat melakukan ini dari komputer Anda, kemudian mengedit templat (di sini Anda memerlukan pengetahuan minimal HTML agar tidak merusak struktur) dan ganti gambar seperti yang ditunjukkan pada gambar di bawah ini.







Rangkuman: router ini sangat cocok untuk hosting situs ringan di dalamnya, pada prinsipnya - jika beban berat tidak diharapkan, Anda dapat menginstal php dan bereksperimen dengan proyek yang lebih kompleks (saya melihat nextcloud / owncloud, sepertinya ada instalasi yang sukses pada perangkat keras tersebut). Kemampuan untuk menginstal paket meningkatkan kegunaannya - misalnya, ketika itu diperlukan untuk melindungi port RDP PC di jaringan lokal, meletakkan knockd pada router - dan port forwarding ke PC dibuka hanya setelah port knocking.



Mengapa router dan bukan PC biasa? Router adalah salah satu dari sedikit perangkat keras komputer yang bekerja sepanjang waktu di banyak apartemen, router rumah biasanya benar-benar diam dan sebuah situs ringan dengan kurang dari seratus kunjungan per hari tidak akan menyaringnya sama sekali.



All Articles