← Назад к вопросам

Какой командой посмотреть IP-адрес на Linux-сервере?

1.2 Junior🔥 252 комментариев
#Linux и администрирование

Комментарии (2)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Получение IP–адреса в Linux

В Linux существует множество способов просмотра IP–адресов системы, различающихся по детализации, удобству и поддержке различных типов интерфейсов. Вот основные команды и подходы, которые я использую в повседневной работе как DevOps Engineer.

1. Основные команды с помощью ip и ifconfig

Современный стандарт: команда ip

Стандартный и наиболее рекомендуемый инструмент в современных дистрибутивах (после устаревания ifconfig из пакета net-tools).

ip addr show

или сокращённый вариант:

ip a

Эта команда показывает все сетевые интерфейсы с их IP–адресами (IPv4 и IPv6), масками, MAC–адресами и состоянием.

Для просмотра конкретного интерфейса:

ip addr show eth0

"Легендарный" ifconfig

Хотя команда считается устаревшей в многих дистрибутивах, она часто присутствует по привычке или в минимальных установках.

ifconfig

Для получения только активных интерфейсов с IP:

ifconfig -a

2. Специализированные команды для отдельных задач

Просмотр только IPv4 адресов

Иногда нужно быстро получить только основной IPv4 адрес. Можно использовать фильтрацию:

hostname -I

Эта команда выводит все IPv4 адреса системы (кроме loopback), разделённые пробелами.

Через ip с фильтрацией по семейству адресов:

ip -4 addr show

Просмотр только IPv6 адресов

ip -6 addr show

Узнать IP–адрес по имени интерфейса

ip addr show dev eth0 | grep 'inet ' | awk '{print $2}' | cut -d/ -f1

Эта однострочная команда извлекает чистый IPv4 адрес интерфейса eth0.

3. Использование системных файлов

Информация о сетевых интерфейсах хранится в специальных файлах, которые можно читать напрямую. Это полезно в скриптах или когда сетевые команды недоступны.

Через /proc/net/fib_trie (для IPv4)

grep -E '([0-9]{1,3}\.){3}[0-9]{1,3}' /proc/net/fib_trie | grep -v '127.0.0.1' | head -1

Через /sys/class/net/

Можно просмотреть информацию для каждого интерфейса:

ls /sys/class/net/

А затем, например, узнать MAC–адрес конкретного интерфейса.

4. Дополнительные инструменты и утилиты

Команда nmcli (для систем с NetworkManager)

В системах, где управление сетью осуществляется через NetworkManager (часто в графических или некоторых серверных дистрибутивах):

nmcli device show eth0 | grep IP4.ADDRESS

Утилита netstat (устаревшая, но информативная)

netstat -ie

Показывает информацию аналогичную ifconfig -a.

5. Практический пример скрипта для автоматизации

В DevOps часто требуется автоматически получать IP–адреса в скриптах Ansible, Bash или мониторинга. Вот пример надежного Bash–скрипта:

#!/bin/bash

# Функция для получения основного IPv4 адреса (первого не loopback)
get_main_ip() {
    local ip_output=$(ip -4 addr show | grep -v '127.0.0.1' | grep 'inet ' | head -1)
    if [ -n "$ip_output" ]; then
        echo "$ip_output" | awk '{print $2}' | cut -d/ -f1
    else
        echo "No IPv4 address found"
    fi
}

# Функция для получения всех IPv4 адресов
get_all_ips() {
    ip -4 addr show | grep 'inet ' | awk '{print $2}' | cut -d/ -f1
}

MAIN_IP=$(get_main_ip)
ALL_IPS=$(get_all_ips)

echo "Main IP: $MAIN_IP"
echo "All IPs:"
echo "$ALL_IPS"

6. Ключевые различия и рекомендации

  • ip vs ifconfig: всегда предпочитаю ip из пакета iproute2. Он более функциональный, поддерживает современные сетевые функции (VLAN, VXLAN, маршрутизация) и является стандартом в новых дистрибутивах.
  • Для скриптов: использую hostname -I или парсинг вывода ip -4 addr show — они дают стабильный результат.
  • При диагностике: ip addr show даёт полную картину — состояние интерфейса (UP/DOWN), все адреса, MAC.
  • В контейнерах и минимальных системах: иногда доступен только минимальный набор. В таких случаях проверяю наличие файлов в /proc/net/ или использую hostname -I.

7. Важный нюанс: публичный и приватные адреса

Команды выше показывают все назначенные адреса. В облачных окружениях (AWS, GCP, Azure) часто важно отличать внутренний (private) IP от внешнего (public). Public IP может быть назначен через NAT или быть эластичным (elastic IP). Его часто нужно получать через метаданные облака:

# Пример для AWS EC2
curl http://169.254.169.254/latest/meta-data/public-ipv4

# Пример для GCP
curl http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/0/access-configs/0/external-ip -H "Metadata-Flavor: Google"

Таким образом, выбор команды зависит от контекста: быстрая проверка на рабочем сервере, написание скрипта для автоматизации, диагностика сетевых проблем или работа в специфическом облачном окружении. Знание нескольких методов позволяет эффективно работать в любой ситуации.

Какой командой посмотреть IP-адрес на Linux-сервере? | PrepBro