4 فرمان لینوکس برای دریافت آدرس IP سرور

فهرست مطالب

 

چرا دانستن آدرس IP عمومی سرور مهم است؟

آدرس IP عمومی پل ارتباطی سرور شما با اینترنت است؛ با آن می‌توانید به سرور دسترسی داشته باشید، پورت‌ها را باز کنید یا اجازه دسترسی ریموت بدهید. بدون این IP، تنظیم DNS، راه‌اندازی VPN، یا SSH عملاً غیرممکن است.

تفاوت بین IP عمومی و IP خصوصی

  • IP خصوصی برای ارتباط داخلی در شبکه‌ها استفاده می‌شود (مثل 192.168.x.x).
  • IP عمومی همان IPی است که ارائه‌دهنده اینترنت به شما می‌دهد و در اینترنت قابل مشاهده است؛ از آن استفاده می‌شود برای پایش، دسترسی و پیکربندی ریموت.

ابزارهای خط فرمان اصلی برای مشاهده IP

dig + OpenDNS

یکی از سریع‌ترین و دقیق‌ترین روش‌ها:

نصب ابزار dig

bashCopyEdit# دبیان/اوبونتو:
sudo apt install dnsutils  
# RHEL/CentOS:
sudo dnf install bind-utils

نحوه اجرا و تفسیر خروجی

bashCopyEditdig +short myip.opendns.com @resolver1.opendns.com

اینجا:

  • +short خروجی ساده می‌دهد
  • @resolver1.opendns.com از DNS سرور OpenDNS استفاده می‌کند
  • myip.opendns.com دامنه‌ای خاص است که OpenDNS برای این کار تعریف کرده است—در پاسخ، IP شما نمایش داده می‌شود.

این روش سریع (زیر ۱۰ میلی‌ثانیه) و قابل اعتماد است .


host (یا nslookup)

روش مشابه dig، با ابزار DNS پیش‌فرض:

نصب و استفاده

bashCopyEdit# دبیان/اوبونتو:
sudo apt install bind-utils
# اجرا:
host myip.opendns.com resolver1.opendns.com

استخراج دقیق IPv4 با grep و awk

bashCopyEdithost myip.opendns.com resolver1.opendns.com | grep "has address" | awk '{print $4}'

یا نسخه کوتاه‌تر:

bashCopyEdithost -4 myip.opendns.com resolver1.opendns.com | awk '/has / {print $4}'

با این روش می‌توانید IP دقیق IPv4 را بگیرید.


wget + سرویس‌های وب

شیوه‌ای کاربردی و بدون DNS:

مثال‌های پرکاربرد

bashCopyEditwget -qO- http://ipecho.net/plain | xargs echo  
wget -qO- icanhazip.com

همان‌طور که نشان داده شده است، این ابزارها IP عمومی را سریع نمایش می‌دهند.

نکات امنیتی و سرعت
وابسته به سرویس‌های خارجی هستند و ممکن است زمان پاسخ به دلیل HTTP اندکی کندتر باشد، اما اغلب سریع و کافی هستند.


curl + سرویس‌های وب

متداول‌ترین گزینه کاربران لینوکس:

مثال‌ها و مزایا

bashCopyEditcurl ifconfig.co  
curl ifconfig.me  
curl icanhazip.com

ابزار curl سبک، سریع و معمولاً از پیش نصب‌شده است .

نصب curl در صورت نیاز

bashCopyEditsudo apt install curl  # دبیان/اوبونتو
sudo dnf install curl  # RHEL/CentOS

مقایسه روش‌ها

معیار dig + OpenDNS host/nslookup wget + HTTP curl + HTTP
دقت و سرعت ⭐⭐⭐⭐⭐ (DNS سبک، سریع) ⭐⭐⭐⭐ (مشابه DNS) ⭐⭐⭐ (وابسته HTTP) ⭐⭐⭐⭐ (HTTP سبک)
نیاز به نصب دارد دارد اغلب از قبل نصب شده اغلب از قبل نصب شده
وابستگی به سرویس خارجی کم کم بالا بالا
مناسب اسکریپت‌نویسی عالی عالی مناسب ممتاز

اسکریپت نمونه برای تشخیص IP

bashCopyEdit#!/bin/bash
# script: get_public_ip.sh
if command -v dig &> /dev/null; then
  dig +short myip.opendns.com @resolver1.opendns.com
elif command -v curl &> /dev/null; then
  curl -s icanhazip.com
elif command -v wget &> /dev/null; then
  wget -qO- ipecho.net/plain
else
  echo "هیچ ابزار پشتیبانی شده، لطفاً dig/curl/wget رو نصب کن."
fi

نکات امنیتی و حریم خصوصی

  • مراقب باشید از ابزارهای مشکوک استفاده نکنید.
  • انتخاب ابزار DNS (مثل dig) حریم خصوصی بیشتری نسبت به ارسال HTTP دارد.
  • از https برای ارتباط با سرویس‌های وب استفاده کنید (مثلاً curl https://...).

جمع‌بندی

در این مقاله، چهار روش ساده، سریع و قابل اتکا برای شناسایی آدرس IP عمومی سرور معرفی شدند:

  1. dig + OpenDNS – سریع‌ترین و دقیق‌ترین گزینه،
  2. host / nslookup – جایگزین DNS مناسب،
  3. wget – روش HTTP ساده،
  4. curl – محبوب‌ترین ابزار کاربران لینوکس.

شما با توجه به شرایط، خواسته یا سطح دسترسی خود، می‌توانید بهترین روش را انتخاب کنید.


سؤالات متداول (FAQs)

1. چه‌وقت باید از dig به‌جای curl استفاده کنم؟
وقتی دنبال سرعت، دقت و کمتر بودن وابستگی به اینترنت هستید—dig با DNS پاسخ می‌دهد بدون نیاز به HTTP.

2. آیا ممکن است IP نمایش‌داده‌شده، IP خصوصی باشد؟
خیر—تمام این روش‌ها، IP عمومی که از ISP گرفته شده است را نشان می‌دهند، نه آدرس خصوصی.

3. اگر ابزار curl یا wget نصب نباشد چه؟
می‌توانید از dig یا host یا حتی nslookup (اگر فقط بسته‌ی DNS نصب شده باشد) استفاده کنید.

4. آیا این IP همیشه تغییر می‌کند؟
بله، اگر ISP شما IP دینامیک دهد، ممکن است بعد از ری‌استارت مودم یا پس از دوره خاصی تغییر کند.

5. چگونه IP را در اسکریپت Bash ذخیره کنم؟
بسیار ساده است؛ به‌عنوان مثال:

bashCopyEditMYIP=$(dig +short myip.opendns.com @resolver1.opendns.com)
echo "IP سرور من: $MYIP"