Магия терминала: Как узнать IP-адрес в Linux консоли — полное руководство

Магия терминала: Как узнать IP-адрес в Linux консоли — полное руководство

В мире Linux консоль — это ваш швейцарский армейский нож, а знание своего IP-адреса — базовый навык, открывающий двери к управлению сетью, диагностике проблем и пониманию того, как ваша система общается с внешним миром. Давайте отбросим графические интерфейсы и погрузимся в мощь командной строки, чтобы мастерски определять все виды IP-адресов.

Зачем это нужно?

IP-адрес — это цифровой отпечаток вашего устройства в сети. Без него невозможны подключение к интернету, настройка сервера, удалённое управление или диагностика сетевых сбоев. В Linux, где серверы и многие рабочие станции работают без графической оболочки, умение быстро получить эту информацию из консоли — обязательный навык для любого пользователя, от новичка до системного администратора.

Основные команды: ваш сетевой арсенал

Вот ключевые инструменты, которые должны быть у вас под рукой.

1. `ip` — современный стандарт

Команда `ip` из пакета iproute2 заменила устаревший `ifconfig`. Она мощнее и гибче.

  • Показать все интерфейсы: ip addr show или просто ip a
  • Краткая информация: ip -br addr show (выводит таблицу в удобном формате)
  • Конкретный интерфейс: ip addr show dev eth0 (замените eth0 на имя вашего интерфейса, например, wlan0 для Wi-Fi)

Ищите строку, начинающуюся с inet для IPv4 (например, 192.168.1.10) или inet6 для IPv6. Адрес с scope global — ваш основной внешний адрес на этом интерфейсе.

2. `hostname` — быстрый способ для основного адреса

Просто и эффективно для получения основного IP, привязанного к имени хоста.

  • Внутренний IP: hostname -I (обратите внимание на заглавную i) — выведет все IP-адреса, разделённые пробелами.
  • Все адреса: hostname -i (строчная i) — может показать loopback (127.0.0.1).

3. `curl` или `wget` — узнаём внешний IP

Эти команды помогут узнать, какой IP-адрес видят сайты в интернете (ваш публичный IP).

  • curl ifconfig.me
  • curl icanhazip.com
  • wget -qO- ifconfig.co

Публичный IP может быть одинаковым для всех устройств в вашей домашней сети (из-за NAT у роутера). Адреса, полученные через `ip a`, — это ваши локальные адреса внутри сети.

Практические сценарии и детали

Определение активного сетевого интерфейса

Часто нужно понять, через какой интерфейс идёт трафик. Используйте:

  1. ip route show default — покажет маршрут по умолчанию и интерфейс для выхода в интернет (например, default via 192.168.1.1 dev wlan0).
  2. nmcli device status — если используете NetworkManager, покажет состояние всех интерфейсов.

Фильтрация вывода с `grep`

Для чистого результата комбинируйте команды:

  • ip a | grep 'inet ' — покажет только строки с IPv4, отфильтровав IPv6.
  • hostname -I | awk '{print $1}' — выведет только первый IP-адрес из списка.

Скрипт для быстрой проверки

Создайте файл, например, ~/bin/myip, с содержимым:

#!/bin/bash
echo "=== Локальные адреса ==="
ip -br addr show | grep -v LOOPBACK
echo "\n=== Публичный IPv4 ==="
curl -s ifconfig.me
echo

Затем сделайте его исполняемым: chmod +x ~/bin/myip. Теперь команда myip даст вам полную картину.

FAQ: Часто задаваемые вопросы

В чём разница между `ip addr` и `ifconfig`?

ifconfig — устаревшая команда из пакета net-tools. ip — её современная и более функциональная замена. Рекомендуется использовать именно ip.

Почему я вижу несколько IP-адресов на одном интерфейсе?

Это нормально. Может быть назначен основной адрес, дополнительный (alias), а также адреса IPv6 (inet6). Также вы всегда увидите loopback-адрес (127.0.0.1) на интерфейсе lo.

Как узнать IP-адрес другого компьютера в моей сети?

Используйте сканеры типа `nmap` (например, nmap -sn 192.168.1.0/24) или просмотрите таблицу ARP вашего роутера командой ip neigh show (покажет IP и MAC-адреса соседних устройств).

Команда не работает: «Command not found». Что делать?

Установите необходимый пакет. Для `ip` — он почти всегда предустановлен. Для `curl` — sudo apt install curl (Debian/Ubuntu) или sudo yum install curl (RHEL/CentOS).

Какой IP важнее: внутренний или внешний?

Оба важны. Внутренний (локальный, например, 192.168.x.x) используется для связи внутри вашей сети. Внешний (публичный) — это «лицо» вашей сети для интернета. Для настройки доступа к внутренним сервисам (веб-сервер, SSH) извне нужно работать с настройками портов на роутере (проброс портов).