پیدا کردن آدرس IP در لینوکس (Linux)

در لینوکس معمولاً پشت ترمینال هستید و گاهی روی سروری که اصلاً صفحه‌نمایش ندارد، و سؤال «آی‌پی من چیست؟» دو جواب دارد: آی‌پی محلی که دستگاه شما داخل شبکه دارد و آی‌پی عمومی که اینترنت می‌بیند. این راهنما دستورهای هر دو را برای اوبونتو، دبیان، فدورا، آرچ و بقیه توزیع‌ها می‌دهد، نشان می‌دهد خروجی را چطور بخوانید و می‌گوید وقتی آدرس نیست، اشتباه است یا مدام عوض می‌شود چه باید کرد.

پیدا کردن آی‌پی عمومی

اگر دسکتاپ دارید، صفحه اصلی Show-IP.ir را در مرورگر باز کنید. روی سرور بدون رابط گرافیکی یا داخل SSH، همین سایت به درخواست خط فرمان فقط خود آدرس را برمی‌گرداند:

curl show-ip.ir
curl show-ip.ir/ip
wget -qO- show-ip.ir

وقتی روی یک سرور اجرا شود، آدرس عمومی خود سرور را می‌دهد که معمولاً همان چیزی است که می‌خواهید. اگر به VPN، پروکسی یا تونل وصل باشید، آدرس نقطه خروج همان را نشان می‌دهد؛ برای همین یک ابزار سریع برای بررسی VPN هم هست (تست نشت VPN).

پیدا کردن آی‌پی محلی

ابزار مدرن، دستور ip از بسته iproute2 است که تقریباً روی همه توزیع‌ها نصب است:

ip addr show                 # every interface with all of its addresses
ip -4 -brief addr            # compact, IPv4 only, one line per interface
ip -4 addr show wlan0        # only one interface
hostname -I                  # just the addresses, space-separated

در خروجی بلند، خطی که با inet شروع می‌شود آدرس IPv4 را همراه طول پیشوند دارد، مثلاً inet 192.168.1.23/24. عدد /24 همان ساب‌نت‌ماسک به شکل CIDR است. خط‌هایی که با inet6 شروع می‌شوند آدرس IPv6 هستند.

روی دسکتاپ‌هایی که NetworkManager دارند با nmcli device show هم می‌توانید خط‌های IP4.ADDRESS، IP4.GATEWAY و IP4.DNS را یک‌جا ببینید.

روش قدیمی: ifconfig

دستور ifconfig از بسته قدیمی‌تر net-tools می‌آید. اگر نصب باشد هنوز کار می‌کند و خیلی از آموزش‌ها از آن استفاده می‌کنند، اما سیستم‌های جدید آن را پیش‌فرض ندارند. اگر «command not found» دیدید، به جایش ip addr بزنید یا بسته را نصب کنید (در دبیان/اوبونتو sudo apt install net-tools).

کاردستور مدرندستور قدیمی
نمایش آدرس‌هاip addrifconfig
جدول مسیریابی / گیت‌ویip routeroute -n
همسایه‌ها (ARP)ip neigharp -a
سوکت‌های بازss -tulpnnetstat -tulpn

خواندن نام اینترفیس‌ها

  • lo — اینترفیس loopback که همیشه 127.0.0.1 است. آدرس شبکه شما نیست.
  • eth0، enp3s0، eno1 — اترنت سیمی. نام‌های جدید systemd محل سخت‌افزار را در خود دارند.
  • wlan0، wlp2s0 — وای‌فای.
  • docker0، br-...، virbr0 — پل‌های مجازی داکر یا مجازی‌سازی؛ آدرسشان آدرس LAN شما نیست.
  • tun0، wg0 — تونل VPN (OpenVPN، WireGuard).

اینترفیسی را انتخاب کنید که UP است و مسیر پیش‌فرض را دارد. گیت‌وی — معمولاً مودم — با ip route | grep default نشان داده می‌شود؛ آدرس بعد از via همان است که برای باز کردن صفحه مودم تایپ می‌کنید (راهنمای ورود به مودم).

رفع مشکلات رایج

اینترفیس آدرس IPv4 ندارد

اول ببینید لینک بالا است (ip link)، بعد اجاره جدید بخواهید. با NetworkManager: nmcli connection down "NAME" && nmcli connection up "NAME" (نام را از nmcli connection show بگیرید). روی سرور با systemd-networkd: networkctl renew eth0. روی تنظیمات خیلی قدیمی: sudo dhclient -r && sudo dhclient.

آدرس با 169.254 شروع می‌شود

این یک آدرس جایگزین لینک-لوکال است: دستگاه آدرس خواسته و هیچ سرور DHCP جواب نداده. کابل یا رمز وای‌فای را بررسی کنید، مودم را ری‌استارت کنید و مطمئن شوید DHCP آن روشن است. تا آن موقع دستگاه فقط با همسایه‌های همان بخش شبکه حرف می‌زند و اینترنت ندارد.

آی‌پی مدام عوض می‌شود

اجاره DHCP ممکن است بعد از ری‌بوت یا پایان مدت عوض شود. برای سرور، آدرس ثابت را در NetworkManager (nmcli)، netplan یا /etc/network/interfaces تنظیم کنید؛ یا ساده‌تر و ایمن‌تر، در مودم برای دستگاه یک رزرو DHCP بسازید تا همیشه همان آدرس را بگیرد. رزرو بر اساس مک آدرس کار می‌کند؛ آی‌پی و مک آدرس را ببینید. اگر آی‌پی عمومی عوض می‌شود، از ارائه‌دهنده است: آی‌پی ثابت و متغیر.

آی‌پی محلی و عمومی فرق دارند و از بیرون وصل نمی‌شوم

سرور شما پشت NAT یا حتی CGNAT است. پورت فوروارد روی مودم فقط وقتی جواب می‌دهد که اتصال شما آدرس عمومی واقعی داشته باشد؛ مقایسه دو آدرس در مقاله CGNAT توضیح داده شده است.

سؤال‌های پرتکرار

چرا hostname -I چند آدرس چاپ می‌کند؟

به‌ازای هر آدرس هر اینترفیس یکی: وای‌فای، اترنت، پل‌های داکر، تونل‌های VPN و IPv6 همه می‌آیند. با ip -4 -brief addr می‌بینید هر آدرس مال کدام اینترفیس است.

کدام دستور روی همه توزیع‌ها کار می‌کند؟

روی هر سیستم مدرن ip addr و روی بیشتر آن‌ها hostname -I؛ ifconfig فقط جایی که net-tools نصب است.

نکات کلیدی

  • آی‌پی عمومی: curl show-ip.ir (یا صفحه اصلی در مرورگر). آی‌پی محلی: ip addr show، ip -4 -brief addr یا hostname -I.
  • ifconfig قدیمی است و ip جایگزین آن شده.
  • برای آدرس LAN، اینترفیس lo (127.0.0.1) و پل‌های مجازی را نادیده بگیرید.
  • 169.254.x.x یعنی DHCP شکست خورده؛ رزرو DHCP در مودم تمیزترین راه برای آی‌پی محلی پایدار است.
Show-IP.ir
آی‌پی عمومی (Public IP) خود را همراه با کشور، شهر، اپراتور، ISP، منطقه زمانی و موقعیت روی نقشه ببینید. شامل بررسی امنیتی VPN/پروکسی/Tor و محاسبه‌گر رایگان زیرشبکه (Subnet).
امتحان کنید
بازگشت به مقالات