ربما لم أكن أول من قام بذلك، ولكن كنت بحاجة إلى استخدام خدمة DNS الديناميكية الخاصة بـ NO-IP حتى أتمكن بسهولة من تكوين الأجهزة وأجهزة الكمبيوتر للوصول إلى الموارد الموجودة على شبكة LAN الخاصة بي عندما أكون بعيدًا. بالنسبة لأولئك الأقل دراية بـ NO-IP، فهي خدمة DNS ديناميكية مجانية. تحتوي معظم اتصالات المنازل والمكاتب الصغيرة بالإنترنت على عنوان IP ديناميكي، مما يعني أن عناوين IP تتغير كثيرًا في كل مرة يتم فيها إنشاء الاتصال من جهاز التوجيه. عادةً ما يتطلب اسم المجال عنوان IP ثابتًا حتى يعمل. يسمح DNS الديناميكي لاسم المجال (أي subdomain.example.com) باستخدام عنوان IP ديناميكي عن طريق تحديث NO-IP بعنوان IP جديد عندما يتغير عنوان IP. يقوم NO-IP بعد ذلك بربط عنوان IP هذا باسم المجال بحيث يمكن إعداد الخدمات مقابل المجال بدلاً من عنوان IP الذي يتغير. وهذا يجعل تكوين الأشياء أسهل.
تحتوي العديد من أجهزة التوجيه على عميل NO-IP مدمج، لكن جهاز التوجيه الخاص بي لا يدعم NO-IP، ولأي سبب كان، لم أتمكن أبدًا من تشغيل العميل الذي أوصى به NO-IP لمضيف Linux. لقد قمت بتنزيل المصدر وتجميعه باتباع التعليمات، ويبدو أنه قيد التشغيل، لكنه لم يحدث عنوان IP الخاص بي مطلقًا. لم يكن هناك أي إخراج إلى وحدة التحكم أو إلى ملف سجل سواء لتشخيص المشكلة التي يمكنني العثور عليها، لذلك قررت أن أبدأ في كتابة مشكلتي الخاصة، وهو الأمر الذي لم يكن من الصعب حقًا القيام به باستخدام برنامج نصي bash وبعض الأدوات المساعدة البسيطة على صندوق لينكس الخاص بي. فيما يلي دليلي الإرشادي والوثائق الخاصة بإعداد هذا. أنا أقوم بتشغيل خادم Ubuntu، لذا فأنا أستخدم apt وnano، ولكن هذا يجب أن يعمل على أي شيء يعتمد على POSIX مثل Mac OS X وBSD وأي نكهة من Linux - حتى Raspberry Pi.
يمكن تشغيل البرنامج النصي كمثيل واحد مع معلمات سطر الأوامر، أو كبرنامج خفي، باستخدام crontabs (أداة مساعدة لتشغيل البرامج وفقًا لجدول زمني) أو كخدمة Linux.
يحتوي هذا البرنامج النصي على تبعية واحدة، وهي wget. عادةً ما يتم تثبيت هذا افتراضيًا على معظم توزيعات Linux وBSD، ولكن إذا لم يكن الأمر كذلك، استخدم مدير الحزم لديك لتثبيته.
sudo apt-get install wget
-أو-
sudo yum install wget
no-ip.sh -u=username -p=password -h=host.sample.com -d=true -l=/path/to/logfile.log
حدود:
-u, --username
اسم المستخدم لتسجيل الدخول إلى no-ip.com.
-p, --password
كلمة المرور لتسجيل الدخول إلى no-ip.com.
-h, --hostname
اسم المجال المراد تحديثه.
-d, --detectip
يخبر البرنامج النصي بالكشف عن عنوان IP الخارجي الخاص بك. هذا له الأسبقية على -i.
-i, --ip
يقوم Maually بتعيين عنوان IP للتحديث. إذا لم يتم تحديد -d أو -i، فسيستخدم no-ip عنوان IP الذي يكتشفه.
-n, --interval
عند تشغيل البرنامج النصي كبرنامج خفي/خدمة (راجع التثبيت)، سيؤدي هذا إلى تحديث no-ip كل n دقيقة.
-l, --logfile
يضبط المسار إلى ملف السجل. يجب أن يكون هذا الملف قابلاً للكتابة.
-c, --config
يضبط المسار إلى ملف التكوين. يجب أن يكون هذا الملف قابلاً للقراءة. تتمتع معلمات ملف التكوين بالأولوية على معلمات سطر الأوامر.
no-ip.sh
يقوم بتشغيل البرنامج النصي باستخدام الإعدادات الموجودة في ملف التكوين في الموقع الافتراضي /etc/no-ip/no-ip.conf
no-ip.sh -u=username -p=password -h=host.sample.com -d=true -l=/path/to/logfile.log
يقوم بالتحديث لمرة واحدة، ويكشف عن UP ويسجل النتائج
no-ip.sh -c=/home/username/no-ip.conf
قم بتشغيل البرنامج النصي باستخدام الإعدادات الموجودة في ملف التكوين.
no-ip.sh /dev/null 2>&1 &
يقوم بتشغيل البرنامج النصي كبرنامج خفي باستخدام الإعدادات الموجودة في ملف التكوين في الموقع الافتراضي /etc/no-ip/no-ip.conf.
يستخدم ملف التكوين بناء جملة بسيطًا لتحديد المعلمات. يمكن أيضًا تحديد أي معلمة سطر أوامر (باستثناء --config) في ملف التكوين. تنطبق نفس القواعد على معلمات ملف التكوين كمعلمات سطر الأوامر (على سبيل المثال، "detectip" يتجاوز "ip" إذا تم تحديد كليهما).
مثال:
user=username
password=password
hostname=hostname.example.com
logfile=/var/log/no-ip.log
interval=10
detectip=true
قبل تثبيت البرنامج النصي، قم بتنزيل الملفات واستخراجها إلى جهازك المحلي. تفترض التعليمات أنك موجود في المجلد no-ip-master.
cd ~
wget https://github.com/theonemule/no-ip/archive/master.zip
unzip master.zip
cd no-ip-master
الطريقة الأولى: كرونتابس
يسمح لك Crontabs بتحديد جدول زمني لتشغيل البرنامج النصي وسيعمل أيضًا على تشغيل البرنامج النصي باعتباره المستخدم الذي تم تكوين crontab من أجله. تأكد من أن المستخدم لديه أذونات التنفيذ على البرنامج النصي، وأذونات القراءة في ملف التكوين، وأذونات الكتابة في ملف السجل. سيقوم Crontabs بتشغيل البرنامج النصي على أساس مجدول لذلك ليست هناك حاجة لتحديد فاصل زمني.
إليك كيفية تشغيل البرنامج النصي كجذر.
1.) إنشاء مجلد في الخ.
sudo mkdir /etc/no-ip
2.) إنشاء ملف التكوين.
sudo touch /etc/no-ip/no-ip.conf
3.) قم بتعيين المعلمات باستخدام المحرر المفضل لديك. أنا استخدم نانو. راجع قسم ملف التكوين أعلاه للحصول على التفاصيل.
sudo nano /etc/no-ip/no-ip.conf
user=username
password=password
hostname=hostname.example.com
logfile=/var/log/no-ip.log
detectip=true
4.) انسخ no-ip.sh إلى /usr/sbin
sudo cp no-ip.sh /usr/sbin/no-ip.sh
5.) اجعل البرنامج النصي قابلاً للتنفيذ
sudo chmod +x /usr/sbin/no-ip.sh
6.) تسجيل الدخول كجذر
sudo -i
7.) تحرير crontab للجذر
crontab -e
8.) أضف الإدخال إلى الأسفل. */10 يخبر crontab بتشغيل البرنامج النصي في كل مرة يتم فيها تقسيم الوقت الحالي على 10، أو كل 10 دقائق وحفظ crontab.
*/10 * * * * /usr/sbin/no-ip.sh
الطريقة الثانية: خدمة Linux (مكتوبة للتوزيعات المستندة إلى Debian. سيختلف هذا بالنسبة للتوزيعات الأخرى)
تأكد من أن الجذر لديه أذونات التنفيذ على البرنامج النصي، وأذونات القراءة في ملف التكوين، وأذونات الكتابة في ملف السجل.
1.) قم بإنشاء مجلد في /etc.
sudo mkdir /etc/no-ip
2.) إنشاء ملف التكوين.
sudo touch /etc/no-ip/no-ip.conf
3.) قم بتعيين المعلمات باستخدام المحرر المفضل لديك. أنا استخدم نانو. راجع قسم ملف التكوين أعلاه للحصول على التفاصيل.
sudo nano /etc/no-ip/no-ip.conf
user=username
password=password
hostname=hostname.example.com
logfile=/var/log/no-ip.log
interval=10
detectip=true
4.) انسخ no-ip.sh إلى /usr/sbin
sudo cp no-ip.sh /usr/sbin/no-ip.sh
5.) اجعل البرنامج النصي قابلاً للتنفيذ
sudo chmod +x /usr/sbin/no-ip.sh
6.) انسخ no-ip-service إلى init.d
sudo cp no-ip-service /etc/init.d/no-ip-service
7.) جعل خدمة no-ip قابلة للتنفيذ
sudo chmod +x /etc/init.d/no-ip-service
8.) ابدأ الخدمة
sudo service no-ip-service start
9.) أضف الخدمة للبدء عند التمهيد.
update-rc.d no-ip-service defaults