النقاط الرئيسية
يمكنك الحصول على عنوان IP الخارجي الخاص بك من موقع ويب باستخدام أمر curl مثل “curl -s ifconfig.me”. ومع ذلك، يمكن أن تتغير مواقع الويب. للحصول على إجابة أكثر موثوقية، استخدم أمر dig بدلاً من ذلك مثل “dig @resolver1.opendns.com myip.opendns.com +short” للحصول على عنوان IP الخاص بك من خادم DNS.
ستحتاج إلى عنوان IP الخارجي الخاص بك إذا كنت تريد الاتصال بجهاز الكمبيوتر الخاص بك عن بُعد. من السهل العثور عليه يدويًا، ولكن إليك كيفية العثور عليه من داخل برنامج نصي يعمل بنظام Linux.
عناوين IP الداخلية والخارجية
تُستخدم عناوين بروتوكول الإنترنت لتحديد الأجهزة الموجودة على الشبكة. وهي عبارة عن تسمية فريدة على الشبكة، يتم تعيينها لجهاز واحد. إذا أراد جهاز آخر إرسال بيانات إلى هذا الجهاز، فيمكنه القيام بذلك باستخدام عنوان IP الخاص به.
يحتوي مودم النطاق العريض لديك على موجه شبكة مدمج يوجه حركة المرور عبر الشبكة من جهاز إلى آخر. وهو أيضًا السلطة المحلية التي تخصص عناوين IP للأجهزة عند انضمامها إلى الشبكة. كما يحتفظ بجدول بأسماء الشبكة وعناوين IP. يتيح لك هذا إعطاء أسماء ذات معنى لأجهزة الكمبيوتر الموجودة على شبكتك، لأن الأسماء أسهل في التعامل معها بالنسبة للبشر من قوائم الأرقام.
الأجهزة المتصلة بالإنترنت لها أيضًا عنوان IP. وبعضها له أسماء أيضًا، مثل مواقع الويب. خدمة اسم النطاق يقوم مقدمو الخدمة بالبحث عن أسماء نطاقات مواقع الويب واستبدالها بعناوين IP تلقائيًا.
يتم منح مودم النطاق العريض الخاص بك عنوان IP خاص به مواجهًا للإنترنت أو خارجيًا من خلال مزود خدمة الانترنت (ISP). بغض النظر عن عدد الأجهزة التي قد تكون لديك في منزلك والمتصلة بالإنترنت، فإن حركة المرور المجمعة الخاصة بها كلها تمر عبر عنوان IP واحد.
إذا كنت خارج المدينة وترغب في الاتصال بخدمة تعمل على أحد أجهزة الكمبيوتر في منزلك، فستحتاج إلى استخدام عنوان IP الخارجي الخاص بك للقيام بذلك. بالطبع، ستحتاج إلى إعداد جهاز التوجيه الخاص بك لتوجيه طلب الاتصال إلى الجهاز المناسب داخل منزلك.
ما لم تدفع مبلغًا إضافيًا بسيطًا لمزود خدمة الإنترنت الخاص بك كل شهر مقابل عنوان IP ثابت، فقد يتغير عنوان IP الخارجي الخاص بك من وقت لآخر. قد يؤدي إعادة تشغيل مودم النطاق العريض الخاص بك إلى حصولك على عنوان IP خارجي مختلف. لذا، إذا كنت بحاجة إلى معرفة عنوان IP الخارجي الخاص بك، فلا يمكنك التحقق منه مرة واحدة وتخزينه. ستحتاج إلى تحديده بشكل دوري.
العثور على عنوان IP الخارجي الخاص بك
إن اكتشاف عنوان IP الخارجي الخاص بك يعني التحدث إلى شيء خارج شبكتك. بعبارة أخرى، الوصول إلى شيء على الإنترنت يمكنه أن يزودنا بالمعلومات التي نريدها. نحتاج إلى النظر إلى الفراغ ورؤية ما ينظر إلينا. ثم نطلب منه عنواننا الخارجي.
هناك طريقتان يمكننا من خلالهما القيام بذلك. الطريقة الأولى تتضمن مواقع الويب. هناك الكثير من مواقع الويب التي تعرض لك عنوان IP الخارجي الخاص بك، ومجموعة من المعلومات الأخرى أيضًا. يمكنك الوصول إلى هذه المعلومات في متصفحك، أو استخدام أداة سطر أوامر مثل curl التي يمكن أن تجعل HTTPS الطلبات.
الطريقة الأخرى هي استخدام أمر مخصص مثل dig. ال dig يقوم الأمر باستجواب خوادم DNS لاسترجاع المعلومات.
استخدام المتصفح
بالطبع، استخدام متصفح ليس طريقة مناسبة للنصوص البرمجية للحصول على عنوان IP الخارجي الخاص بك. ولكن إلقاء نظرة على موقع ويب يقدم هذه الخدمة يمكن أن يمنحنا معلومات مفيدة. اعتدنا أن نوصي ip4.me لكن الموقع لم يتم تحديثه إلى HTTPS. لا يزال يستخدم الإصدار الأقدم غير الآمن HTTPلا يزال الموقع يعمل، ولكن هناك بدائل أفضل الآن.
ال إذا كان هذا هو ملف ifconfig.me يوفر الموقع مجموعة جيدة من المعلومات.
يقوم هذا التقرير بإظهار عنوان IP الخارجي الخاص بنا على أنه 178.238.11.140. عند التمرير لأسفل عبر صفحة الويب، ستجد قائمة بالأوامر التي يمكنك استخدامها لاسترداد المعلومات من الموقع.
الأمثلة التي يقدمونها كلها مفيدة curl لاستجواب الموقع. لذا دعنا نلقي نظرة على استخدام curl.
استخدام التجعيد
على أجهزة الاختبار الخاصة بنا، كان لدى Fedora 37 بالفعل curl تم تثبيته. كنا بحاجة إلى تثبيته على أجهزة الكمبيوتر التي تعمل بنظامي التشغيل Ubuntu وManjaro.
لتثبيته على أوبنتو اكتب:
sudo apt install curl
الأمر الموجود على Manjaro هو:
sudo pacman -S curl
يمكننا تجربة ذلك باستخدام الأمر الأول المدرج في ifconfig.me صفحة على الإنترنت.
curl ifconfig.me
يتم استرداد عنوان IP الخارجي الخاص بنا وعرضه في نافذة المحطة الطرفية. والنتيجة بسيطة للغاية. ولا يتم حتى طباعة حرف سطر جديد بعد السلسلة. ويتم وضع موجه الأوامر مباشرة مقابل عنوان IP.
يعمل هذا الأمر لأن إرجاع عنوان IP هو الإجراء الافتراضي للموقع الإلكتروني. إذا تغير الإجراء الافتراضي، فقد نحصل على نتيجة مختلفة. لتلبية هذا، يمكننا تحديد أننا نطلب عنوان IP الخاص بنا عن طريق إضافة معرف “ip” إلى عنوان URL.
curl ifconfig.me/ip
يؤدي هذا إلى إرجاع عنوان IP كما كان من قبل.
يوضح هذا المشكلة التي تنشأ عند استخدام موقع ويب كمصدر لعنوان IP الخاص بك. فقد تغلق مواقع الويب أبوابها أو قد تغير طريقة عملها أو تنسيق المعلومات المسترجعة. وستؤدي هذه التغييرات إلى فشل البرامج النصية التي تعتمد على هذه المواقع أو تصرفها بشكل غير متوقع.
إن استخدام مصدر موثوق به مثل خادم DNS يعد طريقة أكثر قوة للحصول على عنوان IP الخارجي الخاص بك. للاستعلام عن خادم DNS، نحتاج إلى استخدام أمر dig.
استخدام الأمر dig
هذه المرة، dig تم تثبيته على Fedora و Ubuntu، وكان علينا فقط تثبيته على Manjaro.
الأمر هو المعتاد pacman الأمر، لذا لا توجد مفاجآت هنا، ولكن اسم الحزمة ليس ما قد تتوقعه.
sudo pacman -S bind-tools
للإستخدام dig لاكتشاف عنوان IP الخارجي الخاص بنا، نحتاج إلى توجيهه إلى خادم DNS. نحن نستخدم خادم OpenDNS، الذي توفره شركة Cisco.
نحتاج إلى تحديد اسم خادم DNS الذي نريد استخدامه، مسبوقًا بعلامة “@”. نحتاج أيضًا إلى تسمية نوع السجل الذي نريد استرداده. في هذه الحالة يكون “myip”. +short يضمن الخيار أن نحصل على استجابة مختصرة، وليس مطولة.
dig @resolver1.opendns.com myip.opendns.com +short
هذه المرة، يحتوي عنوان IP الخاص بنا على حرف سطر جديد مطبوع بعده. وكما سنرى، يتم طباعة هذا الحرف بعد سلسلة عنوان IP، وهو ليس جزءًا لا يتجزأ من السلسلة نفسها.
استخدام هذه في البرنامج النصي
هناك العديد من الأسباب التي قد تجعلك ترغب في معرفة عنوان IP الخارجي الخاص بك من داخل البرنامج النصي. ربما لديك برنامج نصي يراقب ما إذا كان عنوان IP الخارجي الخاص بك قد تغير، ويخطرك عندما يحدث ذلك. أو ربما يقوم الخادم بإخطار عملائه عندما يتغير عنوانه. أياً كانت أسبابك، يمكننا تنفيذ الأوامر التي استخدمناها على سطر الأوامر داخل البرنامج النصي بسهولة تامة.
لاسترداد عنوان IP الخارجي الخاص بنا وتعيينه إلى متغير، نحتاج فقط إلى تغليف الأمر داخل استبدال الأمر، $(...) ، وقم بتعيينه إلى متغير، مثل هذا:
variable=$(...)
يتم تنفيذ الأمر الموجود بين الأقواس ويتم استبدال قيمة الإرجاع بالتعبير. في هذا المثال، يتم تبسيط الأمر إلى “المتغير=قيمة الإرجاع”.
ها هو في البرنامج النصي. لقد أضفنا -s (الصامت) الخيار ل curl أمر لمنعه من الإبلاغ عن تقدم استرجاع البيانات.
#!/bin/bashextaddr=$(curl -s ifconfig.me)
echo "The external IP address is $extaddr (from cURL)"
انسخ هذا البرنامج النصي إلى محرر، واحفظه باسم “getex1.sh”، واجعله قابلاً للتنفيذ باستخدام chmod يأمر.
chmod +x getex1.sh
دعونا ننفذ السيناريو ونرى ما نحصل عليه.
./getex1.sh
للقيام بنفس الشيء مع الخيار الأكثر قوة المتمثل في استخدام خادم DNS بدلاً من موقع ويب، كل ما نحتاج إلى فعله هو استبدال curl الأمر مع dig واحد.
#!/bin/bashextaddr=$(dig @resolver1.opendns.com myip.opendns.com +short)
echo "The external IP address is $extaddr (from dig)"
احفظ هذا النص باسم “getex2.sh” واجعله قابلاً للتنفيذ باستخدام chmod.
chmod +x getex2.sh
دعونا ننفذ هذا السيناريو.
./getex2.sh
يمكننا أن نرى من مخرجات البرنامجين النصيين أنه على الرغم من الأمر dig طباعة حرف سطر جديد على سطر الأوامر، في البرنامج النصي لا يتم إضافة سطر جديد إلى extaddr عامل.
اذهب إلى الاعتمادية
من الأفضل دائمًا استخدام خدمة معترف بها تتمتع بسمعة طيبة وتتمتع بتنسيق إخراج يمكن التنبؤ به بدلاً من استخدام موقع ويب “غير رسمي”. وكما هو الحال مع كل شيء آخر على الإنترنت، ألق نظرة جيدة على من تحصل منه على معلوماتك.