اپنے گھر کے روٹر پر ویب سائٹ کی میزبانی کرنا

Мне давно хотелось «потрогать руками» интернет-сервисы, настроив веб-сервер с нуля и выпустив его в Интернет. В этой статье хочу поделиться полученным опытом превращения домашнего роутера из узкофункционального устройства в практически полноценный сервер.

Началось всё с того, что служивший верой и правдой роутер TP-Link TL-WR1043ND перестал удовлетворять потребности домашней сети, захотелось 5ГГц диапазона и быстрого доступа к файлам на накопителе, подключенном к роутеру. Просмотрев профильные форумы (4pda, ixbt), сайты с отзывами и посмотрев на ассортимент местных магазинов — решил приобрести Keenetic Ultra.

В пользу именно этого устройства сработали хорошие отзывы владельцев:

  • отсутствие проблем с перегревом (тут пришлось отказаться от продукции Asus);
  • آپریشنل وشوسنییتا (یہاں میں نے TP-Link کو عبور کیا)؛
  • سیٹ اپ کرنا آسان ہے (مجھے ڈر تھا کہ میں اسے سنبھال نہیں سکا اور مائیکروٹک کو پار کر گیا)۔

مجھے نقصانات کے ساتھ شرائط پر آنا پڑا:

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

نتیجے کے طور پر، ہمیں یہ "سرور" ملا:

اپنے گھر کے روٹر پر ویب سائٹ کی میزبانی کرنا

  • بائیں طرف Rostelecom کا آپٹیکل ٹرمینل ہے۔
  • دائیں طرف ہمارا تجرباتی راؤٹر ہے۔
  • проводом к роутеру подсоединен завалявшийся m.2 SSD на 128 ГБ, помещенный в коробку USB3 с алиэкспресса, сейчас он аккуратно закреплен на стенке;
  • на переднем плане удлинитель с независимым отключением розеток, провод от него идет к недорогому UPS;
  • پس منظر میں بٹی ہوئی جوڑی کیبلز کا ایک گچھا ہے - اپارٹمنٹ کی تزئین و آرائش کے مرحلے پر، میں نے فوری طور پر ان جگہوں پر RJ45 ساکٹ کا منصوبہ بنایا جہاں آلات کو ہونا چاہیے تھا، تاکہ وائی فائی کے گندے ہونے پر انحصار نہ کیا جائے۔

لہذا، ہمارے پاس سامان ہے، ہمیں اسے ترتیب دینے کی ضرورت ہے:

اپنے گھر کے روٹر پر ویب سائٹ کی میزبانی کرنا

  • первичная настройка роутера занимает около 2 минут, указываем параметры подключения к провайдеру (у меня оптический терминал переключен в режим бриджа, PPPoE соединение поднимает роутер), название WiFi сети и пароль — в принципе всё, роутер запускается и работает.

اپنے گھر کے روٹر پر ویب سائٹ کی میزبانی کرنا

ہم نے "نیٹ ورک کے قوانین - فارورڈنگ" سیکشن میں بیرونی بندرگاہوں کو خود روٹر کی بندرگاہوں پر فارورڈنگ سیٹ کیا ہے:

اپنے گھر کے روٹر پر ویب سائٹ کی میزبانی کرنا

اپنے گھر کے روٹر پر ویب سائٹ کی میزبانی کرنا

Теперь можно перейти к «продвинутой» части, чего я хотел от роутера:

  1. گھریلو نیٹ ورک کے لیے چھوٹے NAS کی فعالیت؛
  2. выполнение функций веб-сервера для нескольких частных страничек;
  3. دنیا میں کہیں سے بھی ذاتی ڈیٹا تک رسائی کے لیے ذاتی کلاؤڈ کی فعالیت۔

Первое реализуется встроенными средствами, не требуя особых усилий:

  • ہم اس کردار کے لیے ایک ڈرائیو لیتے ہیں (فلیش ڈرائیو، کارڈ ریڈر میں میموری کارڈ، ہارڈ ڈرائیو یا ایس ایس ڈی ایک بیرونی باکس میں اور اسے Ext4 میں فارمیٹ کرتے ہیں۔ مینی ٹول پارٹیشن مددگار مفت ایڈیشن (میرے پاس ہاتھ میں لینکس والا کمپیوٹر نہیں ہے، یہ بلٹ ان ٹولز سے ممکن ہے)۔ جیسا کہ میں اسے سمجھتا ہوں، آپریشن کے دوران سسٹم فلیش ڈرائیو پر صرف لاگ لکھتا ہے، لہذا اگر آپ سسٹم کو ترتیب دینے کے بعد انہیں محدود کر دیتے ہیں، تو آپ میموری کارڈز بھی استعمال کر سکتے ہیں اگر آپ ڈرائیو پر بہت کچھ لکھنے کا ارادہ رکھتے ہیں - ایک SSD یا HDD بہتر ہے۔

اپنے گھر کے روٹر پر ویب سائٹ کی میزبانی کرنا

اس کے بعد، ہم ڈرائیو کو روٹر سے جوڑتے ہیں اور اسے سسٹم مانیٹر اسکرین پر دیکھتے ہیں۔

اپنے گھر کے روٹر پر ویب سائٹ کی میزبانی کرنا

Переходим щелчком по «USB-диски и принтеры» в раздел «Приложения» и настраиваем общий ресурс в разделе «Сеть Windows»:

اپنے گھر کے روٹر پر ویب سائٹ کی میزبانی کرنا

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

اس طرح کے این اے ایس کی رفتار گھریلو استعمال کے لیے کافی ہے؛ ایک تار پر یہ پوری گیگابٹ استعمال کرتی ہے، وائی فائی پر اس کی رفتار تقریباً 400-500 میگا بٹ ہے۔

اپنے گھر کے روٹر پر ویب سائٹ کی میزبانی کرنا

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

اپنے گھر کے روٹر پر ویب سائٹ کی میزبانی کرنا

- DNS سرورز کو ترتیب دیں۔ и добавить A-записи, указывающие на ваш IP:

اپنے گھر کے روٹر پر ویب سائٹ کی میزبانی کرنا

ڈومین اور ڈی این ایس ڈیلیگیشن سیٹنگز کو اثر انداز ہونے میں کئی گھنٹے لگتے ہیں، اس لیے ہم بیک وقت روٹر سیٹ اپ کر رہے ہیں۔

سب سے پہلے، ہمیں Entware ریپوزٹری کو انسٹال کرنے کی ضرورت ہے، جہاں سے ہم راؤٹر پر ضروری پیکجز انسٹال کر سکتے ہیں۔ میں نے فائدہ اٹھایا этой инструкцией, только не заливал установочный пакет по FTP, а создал папку прямо на подключенном ранее сетевом диске и скопировал туда файл обычным способом.

Получив доступ по SSH, меняем пароль командой passwd и ставим командой opkg install [имена пакетов] все нужные пакеты:

اپنے گھر کے روٹر پر ویب سائٹ کی میزبانی کرنا

سیٹ اپ کے دوران، راؤٹر پر درج ذیل پیکیجز انسٹال کیے گئے تھے (opkg list-installed کمانڈ کا آؤٹ پٹ):

پیکیجز کی فہرست
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
ڈراپ بیئر - 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
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
terminfo - 6.2-1
zlib — 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 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". В принципе на этом настройка закончена, но сайта еще нет — если положим в каталог /share/nginx/html файл index.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 на роутер — и проброс порта к ПК открывался только после port knocking.

ایک راؤٹر اور باقاعدہ پی سی کیوں نہیں؟ ایک راؤٹر ہارڈ ویئر کے ان چند کمپیوٹر ٹکڑوں میں سے ایک ہے جو بہت سے اپارٹمنٹس میں چوبیس گھنٹے کام کرتا ہے؛ ایک ہوم راؤٹر عام طور پر بالکل خاموش ہوتا ہے اور ایک ہلکی سائٹ جس میں روزانہ سو سے کم وزٹ ہوتے ہیں اسے بالکل پریشان نہیں کرتے ہیں۔

ماخذ: www.habr.com

نیا تبصرہ شامل کریں