Как узнать публичный IP-адрес в Linux
Коротко: используйте host или dig для запроса DNS-сервисов (например, OpenDNS) или внешние веб-сервисы через curl/wget. Эти методы показывают ваш публичный IP даже за NAT. Ниже — команды, подсказки по проверке и рекомендации по безопасности.
Что такое публичный и приватный IP
Публичный IP — адрес, видимый в интернете. Приватный IP — локальный адрес внутри вашей сети. Публичный IP назначает ваш провайдер или NAT-шлюз.
Получение публичного IP с помощью host
Утилита host получает DNS-информацию и может вернуть ваш публичный IP через сервис OpenDNS.
host myip.opendns.com resolver1.opendns.comЧтобы вывести только адрес, примените grep и awk:
host myip.opendns.com resolver1.opendns.com | grep "myip.opendns.com has" | awk '{print $4}'

Важно: команда возвращает IP, который виден внешнему резолверу. Если у вас включён VPN, результат будет адресом VPN-сервера.
Использование dig
dig — универсальный инструмент для DNS-запросов. Команда ниже возвращает только IP-адрес в строке вывода.
dig +short myip.opendns.com @resolver1.opendns.com
Использование внешних веб-сервисов (curl / wget)
Многие сайты возвращают ваш IP в простом формате. Эти запросы подходят для скриптов и быстрого просмотра.
curl https://ipinfo.io/ip ; echo
wget -qO- https://ipecho.net/plain ; echoКоманды выше получают IP с ipinfo.io и ipecho.net.
curl https://ipecho.net/plain ; echo
wget -qO- https://ipecho.net/plain ; echocurl https://ifconfig.me ; echo
wget -qO- https://ifconfig.me ; echo
Быстрый чит‑шит — команды в одном месте
| Команда | Описание |
|---|---|
| host myip.opendns.com resolver1.opendns.com | DNS-запрос через OpenDNS, выводит подробную информацию |
| host … | … + grep/awk — возвращает только IP |
| dig +short myip.opendns.com @resolver1.opendns.com | Короткий вывод только IP |
| curl https://ipinfo.io/ip | Быстрый HTTP-запрос к внешнему сервису |
| wget -qO- https://ifconfig.me | Альтернатива curl |
Когда эти методы могут не сработать
- Вы подключены через корпоративный прокси, который скрывает реальный внешний IP.
- Ваш провайдер использует Carrier-Grade NAT (CGNAT); тогда вы получаете общий публичный IP и не имеете уникального публичного адреса.
- Отключён доступ к внешним DNS-серверам или запрещены исходящие HTTP-запросы.
Альтернативные подходы
- Посмотреть интерфейсы и маршруты: ip addr show и ip route show — это покажет локальные адреса и шлюз по умолчанию, но не всегда публичный IP.
- Использовать системный роутер/панель управления провайдера для просмотра назначенного IP.
- Проверить логи подключений на граничном оборудовании (NAT/Firewall).
Ментальная модель: почему это работает
Когда вы делаете запрос к внешнему сервису, он видит источник пакета в момент прихода запроса. Если ваш трафик проходит через NAT или VPN, сервис увидит адрес NAT-шлюза или VPN-узла. DNS-запрос к myip.opendns.com специально настроен так, чтобы ответ содержал исходный адрес запроса.
Диаграмма для выбора метода
flowchart TD
A[Нужно быстро узнать IP?] --> B{Есть curl/wget?}
B -- Да --> C[Использовать curl https://ipinfo.io/ip]
B -- Нет --> D{Есть dig/host?}
D -- dig --> E[dig +short myip.opendns.com @resolver1.opendns.com]
D -- host --> F[host myip.opendns.com resolver1.opendns.com]
C --> G[Проверить результат]
E --> G
F --> GРоли: что сделать в зависимости от вашей роли
- Администратор сети: проверить на шлюзе/ firewall публичный IP и логи NAT; использовать внешний резолвер.
- Разработчик/инженер: добавить вызов curl в скрипт деплоя для динамической конфигурации и логирования.
- Обычный пользователь: откройте терминал и выполните curl https://ifconfig.me
Критерии приёмки
- Команда возвращает корректный IPv4 или IPv6-адрес.
- Результат совпадает с тем, что видит внешний ресурс (например, веб-версия ipinfo.io).
- Скрипт использует обработку ошибок (таймауты, проверка формата IP).
Рекомендации по безопасности и конфиденциальности
- Запросы к внешним сервисам раскрывают вашему провайдеру и сервису факт обращения. Не отправляйте дополнительные данные.
- Для приватности используйте доверенные сервисы или свой собственный резолвер. VPN меняет отображаемый публичный IP.
- Если обрабатываете IP в логах, соблюдайте политику хранения и доступа.
Краткое резюме
- host, dig и curl/wget — простые способы узнать публичный IP в Linux.
- Команды полезны для скриптов, мониторинга и диагностики сети.
- Учтите влияние NAT и VPN на отображаемый адрес.
Важно: эти методы не меняют ваш сетевой статус; они лишь показывают адрес, по которому вас видят внешние сервисы.
Похожие материалы
Правило третей в фотографии — практическое руководство
Отключить всплывающее окно Spotify в Windows 10
Как чистить клавиатуру — полное руководство
Безопасный и анонимный доступ к дарквебу
Запустить ChromeOS с USB на любом ПК