أحدث إصدار متاح دائمًا من Github في
https://github.com/troglobit/inadyn/release
نصيحة: دليل HTML UNIX في https://man.troglobit.com ، على سبيل المثال ، inadyn.conf (5)
Inadyn ، أو In-A-Dyn ، هو DNS ديناميكية صغيرة وبسيطة ، DDNs ، عميل مع دعم HTTPS. متاح بشكل شائع في العديد من توزيعات GNU/Linux ، وتستخدم في أجهزة التوجيه على الجرف وبوابات الإنترنت لأتمتة مهمة الحفاظ على اسم الإنترنت الخاص بك متزامنًا مع عنوان IP العام الخاص بك. يمكن استخدامه أيضًا في عمليات التثبيت مع اتصالات (النسخ الاحتياطي) المتكرر للإنترنت.
معظم الأشخاص غير مدركين أنهم يشاركونهم مجموعة من عناوين الإنترنت مع مستخدمين آخرين لمزود خدمة الإنترنت نفسه (ISP). تُستخدم بروتوكولات مثل DHCP أو PPPOE أو PPPOA لإعطائك عنوانًا وطريقة للاتصال بالإنترنت ، ولكن عادة لا يمثل وسيلة للآخرين للاتصال بك. إذا كنت ترغب في تشغيل خادم إنترنت على مثل هذا الاتصال ، فإنك تخاطر بفقدان عنوان IP الخاص بك في كل مرة تقوم فيها بإعادة الاتصال ، أو كما في حالة DHCP حتى عند إعادة التفاوض على عقد الإيجار.
باستخدام عميل DDNS مثل inadyn يمكنك تسجيل اسم الإنترنت مع مزود DDNS ، مثل FreedNs. يقوم عميل DDNS بتحديث سجل DNS بشكل دوري و/أو عند الطلب عند تغيير عنوان IP الخاص بك. يمكن لـ Inadyn الحفاظ على سجلات مضيف متعددة بنفس عنوان IP ، أو استخدام مجموعة من البرنامج النصي ، أو العنوان من واجهة تواجه الإنترنت ، أو افتراضيًا لاستخدام كاشف تغيير عنوان IP لمزود DDNS.
__
¹ عنوان IP العام هو الافتراضي ، ويمكن أيضًا استخدام العناوين الخاصة.
بعض هذه الخدمات مجانية بسبب الاستخدام غير التجاري ، بعضها يأخذ رسومًا رمزية ، ولكنه يوفر أيضًا المزيد من المجالات للاختيار من بينها.
لقد خصص مقدمو الخدمات التالية "مكونات" ، على الرغم من أن العديد منهم يشتركون في البرنامج المساعد الأصلي Dyndns. فيما يلي قائمة بمقدمي DDNS المعروفين ، التي طلبها المكون الإضافي الذي يدعمهم:
للاطلاع على القائمة الكاملة ، انظر inadyn -L ، لمخرجات JSON الصديقة للآلة ، استخدم inadyn -L -j .
يمكن تمكين مزودي DDNS غير مدعوم أصليًا باستخدام المكون الإضافي المخصص أو العام. انظر أدناه للحصول على أمثلة التكوين.
In-A-Dyn الافتراضيات لـ HTTPS ، ولكن ليس جميع مقدمي الخدمات قد يدعمون ذلك ، لذا حاول تعطيل SSL للتحديث ( ssl = false ) أو مرحلة cadcip ( checkip-ssl = false ) في قسم provider ، في حالة مواجهة المشكلات.
يتم تمكين HTTPS افتراضيًا لأنه يحمي بيانات اعتمادك من التطفل ويقلل من خطر اختطاف شخص ما.
يدعم In-A-Dyn تحديث العديد من خوادم DDNS ، والعديد من الحسابات حتى على مزودي DDNS المختلفين. يوضح مثال /etc/inadyn.conf التالي كيف يمكن القيام بذلك. للتحقق من التكوين الخاص بك ، دون البدء في الخفي ، استخدم:
inadyn --check-config
هذا يبحث عن ملف .conf الافتراضي ، للتحقق من أي ملف ، استخدم:
inadyn --check-config -f /path/to/file.conf
# In-A-Dyn v2.0 configuration file format
period = 300
user-agent = Mozilla/5.0
# The FreeDNS username must be in lower case
# The password (max 16 chars) is case sensitive
provider freedns {
username = lower-case-username
password = case-sensitive-pwd
hostname = some.example.com
}
# We override checkip server with the In-a-dyn built-in 'default',
# http://ifconfig.me/ip, for details on this, see below.
provider freemyip {
password = YOUR_TOKEN
hostname = YOUR_DOMAIN.freemyip.com
checkip-server = default
}
provider dyn {
ssl = false
username = charlie
password = snoopy
hostname = { peanuts, woodstock }
user-agent = Mozilla/4.0
}
provider duckdns.org {
username = YOUR_TOKEN
password = noPasswordForDuckdns
hostname = YOUR_DOMAIN.duckdns.org
}
# With multiple usernames at the same provider, index with :#
provider no-ip.com:1 {
username = ian
password = secret
hostname = flemming.no-ip.com
user-agent = inadyn/2.2
}
# With multiple usernames at the same provider, index with :#
provider no-ip.com:2 {
username = james
password = bond
hostname = spectre.no-ip.com
checkip-ssl = false
checkip-server = ifconfig.me
checkip-path = /ip
}
# With multiple usernames at the same provider, index with :#
provider no-ip.com:3 {
username = spaceman
password = bowie
hostname = spaceman.no-ip.com
checkip-command = "/sbin/ifconfig eth0 | grep 'inet6 addr'"
}
# Google Domains - notice use of '@' to update root entry
provider domains.google.com:1 {
hostname = @.mydomain.com
username = your_username
password = your_password
}
# Wildcard subdomains - notice the quotes (required!)
provider domains.google.com:2 {
hostname = "*.mydomain.com"
username = your_username
password = your_password
}
# Note: hostname == update-key from Advanced tab in the Web UI
provider tunnelbroker.net {
username = futurekid
password = dreoadsad/+dsad21321 # update-key-in-advanced-tab
hostname = 1234534245321 # tunnel-id
}
# dynv6.com update using a custom checkip-command, which works
# if you have access to an Internet-connected interface. Make
# sure to verify the command works on your system first
allow-ipv6 = true # required option for IPv6 atm.
provider dynv6.com {
username = your_token
password = not_used
hostname = { host1.dynv6.net, host2.dynv6.net }
checkip-command = "/sbin/ip -6 addr | grep inet6 | awk -F '[ t]+|/' '{print $3}' | grep -v ^::1 | grep -v ^fe80"
}
provider cloudxns.net {
username = your_api_key
password = your_secret_key
hostname = yourhost.example.com
}
provider dnspod.cn {
username = your_api_id
password = your_api_token
hostname = yourhost.example.com
}
# Create a unique custom API token with the following permissions:
# -> Zone.Zone - Read, Zone.DNS - Edit.
provider cloudflare.com {
username = zone.name
password = api_token_important_read_comment
hostname = hostname.zone.name
ttl = 1 # optional, value of 1 is 'automatic'.
proxied = false # optional.
}
provider goip.de {
username = user.name
password = user.password
hostname = hostname.zone.name
}
لاحظ كيف يحتوي التكوين على ثلاثة مستخدمين مختلفين لمزود NO-IP-يتم تحقيق ذلك عن طريق إلحاق A :ID إلى اسم المزود.
نقوم أيضًا بتحديد دليل ذاكرة التخزين المؤقت المخصص ، وهو الافتراضي هو استخدام /var/cache . في حالتنا /mnt هو متجر مستمر محدد للنظام لتخزين عنوان IP الخاص بك كما هو مذكور لكل مزود. inadyn استخدم هذا للتأكد من عدم إغلاقك من حسابك للحصول على تحديثات مفرطة ، والتي قد تحدث إذا تعثرت بوابة الإنترنت على الإنترنت في حلقة إعادة التشغيل ، أو ما شابه ذلك.
ومع ذلك ، لكي تكون آلية التخزين المؤقت بنسبة 100 ٪ ، يجب تعيين ساعة النظام بشكل صحيح-إذا كان لديك مشكلات مع عدم تعيين ساعة النظام بشكل صحيح في التمهيد ، على سبيل المثال استلام رسالة NTP ، استخدم خيار سطر الأوامر- --startup-delay=SEC . لإخبار inadyn لا بأس في المتابعة قبل مهلة SEC ، استخدم SIGUSR2 .
النظام الأخير المحدد هو خدمة IPv6 https://tunnelbroker.net التي توفرها Hurricane Electric. هنا يتم تعيين hostname على معرف النفق ويجب أن يكون كلمة المرور مفتاح التحديث الموجود في علامة التبويب التكوين المتقدم .
ملحوظة: إن
checkip-commandلـ Dynv6 ، أعلاه ، هو مجرد طريقة واحدة للقيام بذلك. إليك متغير آخر ، من البرنامج النصي الخاص بهم:ip -6 addr list scope global $device | grep -v " fd" | sed -n 's/.*inet6 ([0-9a-f:]+).*/1/p' | head -n 1
في بعض الأحيان ، يمكن أن يكون checkip-server الافتراضي لمزود DDNS بطيئًا في الاستجابة ، وحتى وقت الخروج. الدعم الداخلي للدين الذي يتجاوز افتراضي الموفر مع وضع مخصص ، أو أمر مخصص. أسهل طريقة لتغييرها هي تعيين checkip-server = default في تكوين مزودك ، مما يؤدي إلى استخدام d-dyn لاستخدام http://ifconfig.me/ip ، وهو أيضًا افتراضي لأي تكوين DDNS مخصص. راجع صفحات الرجل ، أو القسم أدناه ، لمزيد من المعلومات.
يحتاج بعض مقدمي الخدمات إلى استخدام متصفح معين لإرسال التحديثات ، ويمكن عمل هذا باستخدام user-agent = STRING ، كما هو موضح أعلاه. إنه متوفر على حد سواء على مستوى عالمي.
ملاحظة: في إعداد خادم متعدد المستخدمين ، تأكد من تحديد .conf إلى 600 (قراءة الكتابة فقط من قبل/الجذر) للحماية من المستخدمين الآخرين الذين يقرؤون بيانات اعتماد خادم DDNS.
بالإضافة إلى مزودي DDNS الافتراضية المدعومة من INADYN ، يمكن تعريف مزودي DDNS المخصصين في ملف التكوين. استخدم custom {} بدلاً من قسم provider {} المستخدم في أمثلة أعلاه.
In-A-Dyn استخدم المصادقة الأساسية HTTP (BASE64 المشفرة) لتوصيل اسم المستخدم وكلمة المرور إلى الخادم. إذا لم يكن لديك اسم مستخدم و/أو كلمة مرور ، فيمكنك ترك هذه الحقول خارجًا. المصادقة الأساسية ، لا يزال يتم استخدامها في الاتصال مع الخادم ، ولكن مع اسم المستخدم وكلمة المرور الفارغة.
يمكن إعداد مزود DDNS المخصص مثل هذا:
custom example {
username = myuser
password = mypass
checkip-server = checkip.example.com
checkip-path = /
ddns-server = update.example.com
ddns-path = "/update?hostname="
hostname = myhostname.example.net
}
يمكن استبدال المتغيرات التالية في التكوين:
%u - username
%p - password, if HTTP basic auth is not used
%h - hostname
%i - IP address
بالنسبة إلى https://www.namecheap.com ، يمكن أن تبدو على النحو التالي. لاحظ كيف يختلف بناء جملة اسم المضيف من أعلاه:
custom namecheap {
username = YOURDOMAIN.TLD
password = mypass
ddns-server = dynamicdns.park-your-domain.com
ddns-path = "/update?domain=%u&password=%p&host=%h&ip=%i"
hostname = { "@", "www", "test" }
ddns-response = "<ErrCount>0</ErrCount>"
}
هنا يتم تحديث ثلاثة أسماء مضيف ، واحد HTTP الحصول على طلب تحديث لكل اسم مضيف مدرج. يدعم بعض مقدمي الخدمات ، مثل FreedNs ، إعداد سجلات CNAME (الاسم المستعار) لتقليل كمية السجلات التي تحتاج إلى تحديثها. حتى Freedns افتراضيًا لربط سجلات متعددة بنفس التحديث ، والتي قد تكون مربكة للغاية إذا كنت تريد تحديث كل سجل DNS من عنوان IP فريد - تأكد من التحقق من إعداداتك في مزود DDNS !
يمكن أيضًا استخدام المكون الإضافي العام مع مقدمي الخدمات الذين يتطلبون عنوان IP الجديد للعميل في طلب التحديث. فيما يلي مثال على كيفية القيام بذلك إذا تظاهرنا أن http://dyn.com غير مدعوم من قبل Inadyn. يختلف ddns-path بين مقدمي الخدمات وهو شيء يجب عليك اكتشافه. تسرد صفحات الدعم أحيانًا هذا ضمن قسم API ، أو ما شابه.
# This emulates dyndns.org
custom dyn {
username = DYNUSERNAME
password = DYNPASSWORD
ddns-server = members.dyndns.org
ddns-path = "/nic/update?hostname=%h.dyndns.org&myip=%i"
hostname = { YOURHOST, alias }
}
هنا يتم استخدام ddns-path مخصص بالكامل مع محددات التنسيق ، راجع صفحة MAN inadyn.conf(5) للحصول على تفاصيل حول هذا الموضوع.
مثال آخر:
# Custom configuration for dnsmadeeasy
custom dyn {
username = DNSMADEEASYUSERNAME
password = DNSMADEEASYPASSWORDFORTHISHOST
ddns-server = cp.dnsmadeeasy.com
ddns-path = "/servlet/updateip?username=%u&password=%p&id=DNSMADEEASYHOSTID&ip=%i"
hostname = HOST
}
عند استخدام المكون الإضافي العام ، يجب عليك أولاً فحص الاستجابة من مزود DDNS. بشكل افتراضي ، يبحث Inadyn عن كود موافق 200 HTTP والسلاسل "good" أو "OK" أو "true" أو "success" أو "updated" في HTTP Response Body. إذا قام موفر DDNS بإرجاع شيء آخر ، فيمكنك إضافة قائمة من ddns-response = { Arrr, kilroy } ، أو مجرد ddns-response = Cool -إذا كان مزودك يعطي أي استجابة ، فاستخدم ddns-response = "" .
إذا لم يوفر لك مزود DDNS الخاص بك checkip-server ، فيمكنك استخدام خدمات أخرى ، مثل http://ifconfig.me/ip ، وهو الافتراضي إذا لم تحدد واحدة لتكوين الموفر المخصص:
checkip-server = ifconfig.me
checkip-path = /ip
checkip-ssl = false
أو حتى استخدام برنامج نصي أو أمر:
checkip-command = /sbin/ifconfig eth0 | grep 'inet addr'
يمكن أيضًا استخدام هذين الإعدادين في أقسام provider{} .
ملاحظة: مطلوب hostname ، حتى لو تم ترميز كل شيء في ddns-path ! يتم إلحاق اسم المضيف المحدد ddns-path المستخدم للتحديثات ، إلا إذا كنت تستخدم إعداد append-myip ، وفي هذه الحالة سيتم إلحاق عنوان IP الخاص بك بدلاً من ذلك. عند استخدام append-myip ، ربما تحتاج إلى تشفير اسم مضيف DNS الخاص بك في ddns-path بدلاً من ذلك ، كما هو الحال في المثال الأخير أعلاه.
هناك مشكلة شائعة تبدأ ، وهو أمر مفهوم لأن In-A-Dyn لديه الكثير من الخيارات المربكة.
بعد أن أنقذ /etc/inadyn.conf ، حاول أولاً بدء تشغيله في المقدمة مع سجلات التصحيح الكاملة:
inadyn -l debug --foreground --force
يجب أن تكون أي استجابات خاطئ أو استجابات خادم سيئة أسهل كثيرًا. تذكر أن تقوم بمراقبة السجلات الخاصة بك من أي كلمات مرور ومعلومات المجال إذا قمت بتقديم تقرير خطأ أو طرح سؤال في المنتدى/IRC!
حاول مسح ذاكرة التخزين المؤقت:
sudo systemctl stop inadyn.servicesudo rm -rf /var/cache/inadyn/*sudo systemctl restart inadyn.service لفترة طويلة ، حافظ المشروع على .deb . ومع ذلك ، فإن مستوى الميزات المتزايدة في Dyn ، وبالتالي مقدار التبعيات ، وكذلك متطلبات دعم المزيد من البنى والتوزيعات المختلفة ، تم إيقاف دعم .deb قبل الإصدار V2.9.1.
يحتوي مشروع Debian الآن على مشرف نشط لـ Inadyn ، وهو المنبع لأوبونتو وغيرهم. يرجى الإبلاغ عن المشكلات وطلبات التوزيع الخاص بك:
ملاحظة: تم نقل ملفات التغليف الخاصة بالمشروع إلى فرع Debian منفصل في مستودع GIT. لا يتم تحديثه أو دعمه بنشاط للإصدارات. لاستخدامه ، تحقق من الفرع وتحرير
debian/changelog) لإنشاء ملفات.debجديدة لنظامك.
الصور المصممة تلقائيا المتاحة هنا:
يتم توفير dockerfile لتبسيط المبنى وتشغيل inadyn .
docker build -t inadyn:latest .
docker run --rm -v "$PWD/inadyn.conf:/etc/inadyn.conf" inadyn:latest
إذا كنت لا ترغب في الركض في Dyn كخفي في الخلفية ، فيمكنك إعداد cronjob:
inadyn.conf الخاص بكcrontab -e * * * * * docker run --rm -v " path/to/inadyn.conf:/etc/inadyn.conf " -v " path/to/cache:/var/cache/inadyn " troglobit/inadyn:latest -1 --cache-dir=/var/cache/inadyn > /dev/null 2>&1لتشغيل أحدث إصدار مستقر على MacOS ، اكتب:
brew install inadyn
لتشغيل أحدث إصدار من الفرع الرئيسي ، قم بتثبيت GIT TAP بدلاً من ذلك:
brew install --HEAD troglobit/inadyn/inadyn
أي من هذه سوف تثبيت جميع التبعيات.
يمكنك أيضًا تثبيت In-A-Dyn على MacOS باستخدام Macports:
sudo port install inadyn
يمكنك العثور على مزيد من المعلومات في صفحة منافذ In-A-Dyn.
قم أولاً بتنزيل أحدث إصدار رسمي في Dyn من Github:
In-A-Dyn يتطلب بعض المكتبات للبناء. يبحث نظام البناء عنهم ، في الإصدارات المطلوبة ، باستخدام أداة pkg-config :
وهي متوفرة من معظم توزيعات UNIX كحزم تم إنشاؤها مسبقًا. تأكد من تثبيت حزمة -dev أو -devel من حزم التوزيع عند بناء Inadyn. على Debian/Ubuntu (المشتقات):
$ sudo apt install gnutls-dev libconfuse-dev
لبناءك ، تحتاج أيضًا إلى مترجم C ، أداة pkg-config ، وجعل:
$ sudo apt install build-essential pkg-config
عند البناء مع دعم HTTPS (SSL/TLS) ، تأكد أيضًا من تثبيت حزمة ca-certificates على نظامك ، وإلا فلن يتمكن Inadyn من التحقق من صحة شهادات HTTPS الخاصة بمزود DDNS.
استخدام نظام GNU وإنشاء نظام /usr/local كبادئة التثبيت الافتراضية. في كثير من الحالات ، يكون هذا مفيدًا ، ولكن هذا يعني أن ملفات التكوين وملفات ذاكرة التخزين المؤقت ستستخدم أيضًا البادئة نفسها. يتوقع معظم المستخدمين أن تتوقع هذه الملفات في /etc/ و /var/run/ وتكوين بعض الخيارات المفيدة التي يوصى باستخدامها:
$ ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
$ make -j5
$ sudo make install-strip
قد ترغب في إزالة خيار --prefix=/usr .
بشكل افتراضي ، يحاول Inadyn البناء باستخدام Gnutls لدعم HTTPS. GNUTLS هي مكتبة SSL الموصى بها لاستخدامها في توزيعات UNIX التي لا توفر OpenSSL/Libressl كمكتبة نظام. ومع ذلك ، عندما يكون OpenSSL أو Libressl متاحًا كمكتبة نظام ، على سبيل المثال في العديد من الأنظمة المضمنة:
./configure --enable-openssl
لتعطيل دعم Inadyn HTTPS تمامًا (غير موصى به!):
./configure --disable-ssl
لمزيد من التفاصيل حول إصدار ترخيص OpenSSL و GNU GPL ، راجع:
بعض الأشخاص يرغبون في الإنشاء بشكل ثابت ، للقيام بذلك باستخدام autoconf أضف LDFLAGS= بعد البرنامج النصي تكوين. قد تحتاج أيضًا إلى إضافة LIBS=... ، والتي تعتمد على نظامك الخاص:
./configure LDFLAGS="-static" ...
في بعض الأنظمة ، يتم تعطيل مسار التثبيت الافتراضي ، /usr/local ، ولا يتم البحث عنه بواسطة أدوات مثل ldconfig و pkg-config . لذلك إذا فشل التكوين في العثور على مكتبات libconfuse ، أو ملفات .pc ، قم بإنشاء ملف /etc/ld.so.conf.d/local.conf مع هذا المحتوى:
/usr/local/lib
قم بتحديث ذاكرة التخزين المؤقت Linker:
sudo ldconfig -v |egrep libconfuse
وقم بتشغيل برنامج Inadyn تكوين البرنامج النصي مثل هذا:
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure
بالنسبة لتكامل SystemD ، تحتاج إلى تثبيت pkg-config ، مما يساعد نظام بناء Inadyn على اكتشاف مسارات النظام. عند تثبيته ، قم ببساطة بالاتصال systemctl لتمكين وبدء inadyn :
$ sudo systemctl enable inadyn.service
$ sudo systemctl start inadyn.service
تأكد من أنها بدأت بشكل صحيح عن طريق فحص سجل النظام ، أو:
$ sudo systemctl status inadyn.service
لوقف الخدمة:
$ sudo systemctl stop inadyn.service
عندما يتم دمجها في جهاز توجيه ، لا يتم استخدام بعض الميزات عادةً ويمكن تعطيلها لتوفير المساحة. سيؤدي خيار التكوين --enable-reduced إلى بناء مثل هذا الثنائي المنخفض. حاليًا ، يعطل هذا رسائل السجل المطول وسلاسل الأخطاء ويزيل فحص ملفات التكوين وبعض التوافق المتخلف.
إذا كنت ترغب في المساهمة ، أو ببساطة جرب أحدث الميزات ولكن لم يتم إصدارها ، فأنت بحاجة إلى معرفة بعض الأشياء عن نظام بناء GNU:
configure.ac و Per-Directory Makefile.am هي الملفات الرئيسيةconfigure و Makefile.in من autogen.sh ، لا يتم تخزينها في GIT ولكن تم إنشاؤها تلقائيًا لكرات القطرانMakefile عن طريق configure البرنامج النصي للبناء من git. استنساخ المستودع وقم بتشغيل البرنامج النصي autogen.sh . يتطلب ذلك تثبيت أدوات GNU automake و autoconf و libtool على نظامك. لا تتطلب كرات القطران هذه هذه الأدوات.
$ sudo apt install git automake autoconf
ثم يمكنك استنساخ المستودع وإنشاء البرنامج النصي configure ، وهو ليس جزءًا من ريبو GIT:
git clone https://github.com/troglobit/inadyn.git
cd inadyn/
./autogen.sh
./configure && make
يتطلب البناء من GIT ، على الأقل ، تبعيات المكتبة المذكورة سابقًا. تعد مصادر GIT هدفًا متحركًا ولا ينصح بها لأنظمة الإنتاج ، إلا إذا كنت تعرف ما تفعله!
هذا هو استمرار Inadyn Narcis Ilisei الأصلي. الآن يحتفظ بها يواكيم ويبرغ. يرجى تقديم تقارير الأخطاء ، أو إرسال طلبات السحب لإصلاحات الأخطاء والإضافات المقترحة في GitHub.
شخصية شكرا لك! يخرج إلى روبرت هوغبيرج ، الذي رعى جهاز توجيه صغير D-Link Dir-645 حتى أتمكن من العودة إلى interwebs :-)