نحن نستضيف الموقع على جهاز توجيه منزلي

لطالما أردت "لمس" خدمات الإنترنت من خلال إعداد خادم ويب من الصفر وإطلاقه على الإنترنت. في هذه المقالة ، أود أن أشارك تجربتي في تحويل جهاز توجيه من جهاز ضيق الوظائف إلى خادم كامل تقريبًا.



بدأ كل شيء بحقيقة أن جهاز التوجيه TP-Link TL-WR1043ND ، الذي خدم بأمانة ، توقف عن تلبية احتياجات الشبكة المنزلية ، وأردت نطاق 5 غيغاهرتز ووصول سريع إلى الملفات الموجودة على محرك أقراص متصل بجهاز التوجيه. بعد النظر في المنتديات المتخصصة (w3bsit3-dns.com ، ixbt) ، والمواقع التي تمت مراجعتها والنظر في مجموعة المتاجر المحلية ، قررت شراء Keenetic Ultra.



لصالح هذا الجهاز بالذات ، عملت مراجعات جيدة من المالكين:



  • لا توجد مشاكل مع ارتفاع درجة الحرارة (هنا كان علينا التخلي عن منتجات Asus) ؛
  • الموثوقية في العمل (هنا قمت بشطب TP-Link) ؛
  • سهولة الإعداد (كنت أخشى عدم التأقلم وشطب MikroTik).


كان علي أن أتصالح مع السلبيات:



  • لا يوجد WiFi6 ، كنت أرغب في أخذ معدات بهامش للمستقبل ؛
  • 4 منافذ LAN ، أردت المزيد ، لكن هذه لم تعد فئة منزلية.


نتيجة لذلك ، حصلنا على هذا "الخادم":







  • على اليسار هو الطرف البصري لـ Rostelecom ؛
  • على اليمين هو جهاز التوجيه التجريبي الخاص بنا ؛
  • يتم توصيل سلك إلى جهاز التوجيه إلى الكذب حول m.2 SSD 128 GB ، الموضوعة في صندوق USB3 من aliexpress ، والآن يتم تثبيته بدقة على الحائط ؛
  • في المقدمة هو سلك تمديد مع فصل مستقل للمقابس ، يذهب السلك منه إلى UPS غير مكلفة ؛
  • في الخلفية توجد مجموعة من الزوج الملتوي - في مرحلة تجديد الشقة ، خططت على الفور لمآخذ RJ45 في الأماكن التي كان من المفترض أن توجد فيها المعدات ، حتى لا تعتمد على فوضى WiFi


لذلك ، لدينا المعدات ، نحتاج إلى تكوينها:







  • يستغرق التكوين الأولي للموجه حوالي دقيقتين ، ونشير إلى معلمات الاتصال بالمزود (يتم تحويل طرفي البصري إلى وضع الجسر ، ويتم رفع اتصال PPPoE بواسطة الموجه) ، واسم شبكة WiFi وكلمة المرور - بشكل أساسي كل شيء ، يبدأ الموجه ويعمل.






نضع إعادة توجيه المنافذ الخارجية إلى منافذ جهاز التوجيه نفسه في قسم "قواعد الشبكة - إعادة التوجيه":











الآن يمكنك الانتقال إلى الجزء "المتقدم" ، وهو ما أردت من جهاز التوجيه:



  1. وظائف NAS صغيرة لشبكة منزلية ؛
  2. يعمل كخادم ويب لعدة صفحات خاصة ؛
  3. وظائف السحابة الشخصية للوصول إلى البيانات الشخصية من أي مكان في العالم.


يتم تنفيذ الأول في أدوات مدمجة ، تتطلب القليل من الجهد:









بعد ذلك ، نقوم بتوصيل محرك الأقراص بجهاز التوجيه ونلاحظه على شاشة مراقبة النظام.







انقر فوق "أقراص USB والطابعات" في قسم "التطبيقات" وقم بإعداد مشاركة في قسم "شبكة Windows":







ولدينا مورد شبكة يمكن استخدامه مع أجهزة كمبيوتر تعمل بنظام Windows ، تتصل إذا لزم الأمر كقرص: صافي الاستخدام y: \\ 192.168.1.1 \ SSD / مستمر: نعم



سرعة مثل NAS المرتجلة كافية للاستخدام المنزلي ، فهي تستخدم كل جيجابت عبر السلك ، عبر WiFi ، السرعة حوالي 400-500 ميغابيت.







يعد تكوين التخزين أحد الخطوات اللازمة لتكوين الخادم ، ثم نحتاج إلى:

- شراء نطاقوعنوان IP ثابت (يمكنك الاستغناء عن ذلك باستخدام Dynamic DNS ، ولكن كان لدي بالفعل عنوان IP ثابت ، لذلك اتضح أنه من الأسهل استخدام خدمات Yandex المجانية - من خلال تفويض نطاق هناك ، نحصل على استضافة DNS والبريد على نطاقنا) ؛







- تكوين خوادم DNS وإضافة سجلات A تشير إلى IP الخاص بك:







يستغرق الأمر عدة ساعات حتى يتم تفعيل إعدادات تفويض النطاق و DNS ، لذلك نقوم في الوقت نفسه بتكوين جهاز التوجيه.



أولاً ، تحتاج إلى تثبيت مستودع Entware ، الذي يمكننا من خلاله تثبيت الحزم الضرورية على جهاز التوجيه. اتبعت هذه التعليمات، فقط لم تقم بتحميل حزمة التثبيت عبر FTP ، ولكن أنشأت مجلدًا مباشرةً على محرك أقراص الشبكة المتصل سابقًا ونسخ الملف هناك بالطريقة المعتادة.



بعد الوصول إلى SSH ، نقوم بتغيير كلمة المرور باستخدام الأمر passwd وتثبيت جميع الحزم الضرورية باستخدام الأمر opkg install [package names]:







أثناء التهيئة ، تم تثبيت الحزم التالية على جهاز التوجيه (إخراج الأمر opkg list-install 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

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



ربما هناك شيء غير ضروري هنا ، ولكن هناك مساحة كبيرة على محرك الأقراص ، لذلك لم أتمكن من معرفة ذلك.



بعد تثبيت الحزم ، قمنا بتكوين 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;
            }
        }
}




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 باستخدام الأمر "opensl dhparam -out dhparams.pem 2048" على جهاز التوجيه الخاص بي يستغرق أكثر من ساعتين ، إذا لم يكن لمؤشر التقدم ، كنت سأفقد الصبر وإعادة التشغيل.



بعد استلام الشهادات ، أعد تشغيل nginx باستخدام الأمر "/opt/etc/init.d/S80nginx إعادة التشغيل". من حيث المبدأ ، يكمل هذا الإعداد ، ولكن الموقع غير موجود بعد - إذا وضعنا ملف index.html في الدليل / share / nginx / 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 على جهاز التوجيه - ولم يتم فتح توجيه المنفذ إلى الكمبيوتر إلا بعد طرق المنفذ.



لماذا جهاز توجيه وليس جهاز كمبيوتر عادي؟ جهاز التوجيه هو أحد أجهزة الكمبيوتر القليلة التي تعمل على مدار الساعة في العديد من الشقق ، وعادة ما يكون جهاز التوجيه المنزلي صامتًا تمامًا ولن يؤدي موقع خفيف يحتوي على أقل من مائة زيارة في اليوم إلى إجهاده على الإطلاق.



All Articles