Одной из самых частых ошибок, получаемых во время работы в интернете, с сайтами или приложениями - это ошибка 502 Bad Gateway и неопытного пользователя или адми...
Блог компании 3v-Hosting
11 мин.
Понимание того, как узнать IP-адрес своего Linux-сервера, важно для системных администраторов, разработчиков ПО и всех, кто занимается управлением сетями. Понятие IP-адреса является основополагающим в работе с сетями и имеет важнейшее значение для сетевой связи, позволяя устройствам идентифицировать друг друга и подключаться друг к другу. В этой статье мы рассмотрим несколько методов получения вашего IP-адреса в среде ОС Linux, как внутреннего, так и внешнего, с использованием различных команд и инструментов.
Внутренний IP-адрес (также известный как частный IP-адрес) используется в локальной сети и не подлежит маршрутизации в Интернете. Они важны для внутренней связи внутри сети, но тем самым мы экономим множество IP-адрессов за счёт возможности использования одних и тех-же IP-адресов в различных сетях. Например в локальной сети вашего предприятия настроены адреса из подсети 192.168.12.0/24. И в другой компании, настроена точно такая-же сеть, на тех-же самых IP-адресах. И эти внутренние дареса потому и внутренние, так как в интернет они не выходят, а общаются эти два предприятия посредством внешнего, публичного IP-адреса.
Ниже представлена таблица с указанными в ней блоками IP-адресов, которые относятся к т.н. внутренним адресам.
Таблица - Сравнение внутренних подсетей
| Подсеть (CIDR) | Диапазон адресов | Типичные сценарии использования |
|---|---|---|
| 10.0.0.0/8 | 10.0.0.0 – 10.255.255.255 | Крупные корпоративные сети, распределённые офисы, дата-центры с большим числом подсетей |
| 172.16.0.0/12 | 172.16.0.0 – 172.31.255.255 | Средние сети компаний, серверные сегменты, инфраструктурные зоны, где нужна гибкость подсетей |
| 192.168.0.0/16 | 192.168.0.0 – 192.168.255.255 | Домашние сети, офисные VPN, Wi-Fi сегменты, небольшие корпоративные сети |
Их очень легко запомнить и понимать, что если вы где либо увидели один из адресов из этих подсетей, то это внутренний адрес.
Команда ip - это универсальный инструмент для настройки и управления сетью в Linux. Она в значительной степени заменила старую команду ifconfig.
Выполните в терминале команду:
ip addr show
Эта команда отображает подробную информацию обо всех сетевых интерфейсах. Найдите запись inet под нужным интерфейсом (например, eth0, wlan0). В выводе будут показаны IP-адрес, маска подсети и другие сведения.
user@host:~# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether f0:c6:f9:ca:d6:c6 brd ff:ff:ff:ff:ff:ff
inet 192.168.12.7/24 brd 192.168.12.255 scope global dynamic noprefixroute ens0
valid_lft 70376sec preferred_lft 70376sec
Хотя команда ifconfig устарела в пользу команды ip, она все еще доступна во многих дистрибутивах.
Выполните в терминале команду:
ifconfig
Эта команда выведет список всех сетевых интерфейсов с соответствующими IP-адресами. Поле inet addr показывает IP-адрес каждого интерфейса.
user@host:~# ifconfig
ens0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.12.7 netmask 255.255.255.0 broadcast 192.168.12.255
ether f0:c6:f9:ca:d6:c6 txqueuelen 1000 (Ethernet)
RX packets 358201 bytes 22181271 (0.2 GB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 331273 bytes 20447094 (0.2 GB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Команда hostname с опцией -I также может использоваться для отображения IP-адресов, связанных с хостом.
Выполните в терминале команду:
hostname -I
Эта команда выводит все IP-адреса, назначенные хосту, разделенные пробелами.
user@host:~# hostname -I
192.168.12.7
nmcli - это инструмент командной строки для управления NetworkManager, который широко используется в различных дистрибутивах Linux.
Выполните в терминале команду:
nmcli device show
Эта команда отображает подробную информацию обо всех сетевых интерфейсах, управляемых NetworkManager, включая IP-адреса.
user@host:~# ifconfig
GENERAL.DEVICE: ens0
GENERAL.TYPE: wifi
GENERAL.HWADDR: F0:C6:F9:Ca:D6:C6
GENERAL.MTU: 1500
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: MyWiFi
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/11
IP4.ADDRESS[1]: 192.168.12.7/24
IP4.GATEWAY: 192.168.12.1
IP4.ROUTE[1]: dst = 192.168.12.0/24, nh = 0.0.0.0, mt = 600
IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 192.168.12.1, mt = 600
IP4.DNS[1]: 192.168.12.1
Вы можете использовать команду ip route, чтобы получить IP-адрес вашего основного сетевого интерфейса.
Выполните в терминале команду:
ip route get 1.1.1.1
Замените 1.1.1.1 на любой действительный IP-адрес. Команда покажет информацию о маршрутизации и IP-адрес источника, используемый для достижения пункта назначения.
user@host:~# ip route get 8.8.8.8
8.8.8.8 via 192.168.12.1 dev ens0 src 192.168.12.7 uid 0
Хотя команда ifconfig до сих пор присутствует во многих дистрибутивах, в современных системах предпочтительно использовать именно ip. Это связано с тем, что пакет net-tools, в состав которого входит ifconfig, давно не развивается и не поддерживает часть актуальных сетевых функций. Команда ip предоставляет более точную, подробную и актуальную информацию о сетевых интерфейсах, маршрутизации, link-layer параметрах и состояниях соединений.
Использовать ifconfig уместно в тех случаях, когда вы работаете на старой системе или в минимальной установке, где нет iproute2. Однако в полноценной среде Linux и на серверных дистрибутивах команда ip является стандартом де-факто и обеспечивает более корректное отображение настроек сети.
Внешний IP-адрес (также известный как публичный IP-адрес) используется для идентификации вашего устройства в Интернете. Этот IP-адрес маршрутизируется в Интернете и назначается вашим интернет-провайдером (ISP).
Curl - это инструмент командной строки для передачи данных с помощью URL-адресов. Его можно использовать для обращения к веб-сервисам для получения вашего общедоступного IP-адреса, например к ifconfig.me.
Запустите команду в терминале:
curl ifconfig.me
Эта команда отправляет запрос на ifconfig.me и отображает ваш общедоступный IP-адрес.
user@host:~# curl ifconfig.me
94.211.13.25
wget - еще одна утилита командной строки для загрузки контента с веб-серверов. Его также можно использовать для запроса вашего общедоступного IP-адреса. Рассмотрим пример с другим веб-сервисом - icanhazip.com
Запустите команду в терминале:
wget -qO- icanhazip.com
Эта команда также извлекает общедоступный IP-адрес из ifconfig.me и выводит его на терминал.
user@host:~# wget -qO- icanhazip.com
94.211.13.25
На самом деле сервисов подобных ifconfig.me много и ниже мы привели сравнительную таблицу по подобным сервисам.
Таблица - Сравнение сервисов определения внешнего IP-адреса
| Сервис | Тип | Скорость ответа | Дополнительные данные |
|---|---|---|---|
| ifconfig.me | HTTP API | Очень высокая | Может возвращать User-Agent, заголовки, геоданные |
| icanhazip.com | HTTP / HTTPS | Очень высокая | Только IP-адрес, минималистичный вывод |
| api.ipify.org | HTTP / HTTPS API | Высокая | JSON-формат вывода, удобна для автоматизации |
| checkip.amazonaws.com | HTTP | Высокая | Надёжный сервис от AWS, возвращает только IP |
| ipinfo.io/ip | HTTP / HTTPS API | Средняя | Поддерживает вывод полной информации о сети и геолокации |
| myip.opendns.com (через DNS) | DNS-запрос | Высокая | Можно использовать без HTTP-соединений и веб-трафика |
dig (Domain Information Groper) - это мощная утилита поиска информации из DNS серверов. Его можно использовать для выяснения вашего общедоступного IP-адреса путем запроса OpenDNS.
Запустите команду в терминале:
dig +short myip.opendns.com @resolver1.opendns.com
Эта команда отправляет DNS-запрос в OpenDNS, который отвечает вашим общедоступным IP-адресом.
user@host:~# dig +short myip.opendns.com @resolver1.opendns.com
94.211.13.25
Команда host - это еще одна утилита поиска по DNS серверам, которую можно использовать для выяснения вашего общедоступного IP-адреса.
Запустите команду в терминале:
host myip.opendns.com resolver1.opendns.com
Эта команда обращается к OpenDNS и возвращает ваш общедоступный IP-адрес.
user@host:~# host myip.opendns.com resolver1.opendns.com
Using domain server:
Name: resolver1.opendns.com
Address: 208.67.222.222#53
Aliases:
myip.opendns.com has address 94.211.13.25
Если вам удобнее работать в графическом интерфейсе, большинство современных дистрибутивов Linux позволяют узнать IP-адрес через стандартные сетевые настройки. В зависимости от используемой среды рабочего стола (GNOME, KDE Plasma или другие), интерфейс может немного отличаться, но логика остаётся одинаковой: открыть параметры сети и просмотреть сведения о текущем подключении.
GNOME - одна из самых распространённых сред рабочего стола в Ubuntu, Fedora и Debian.
Для просмотра IP-адреса выполните следующие шаги:
GNOME автоматически обновляет эти данные, поэтому информация всегда актуальна.
KDE Plasma используется в дистрибутивах Kubuntu, openSUSE и Manjaro. Интерфейс отличается от GNOME, но нужные данные находятся аналогично:
Plasma предоставляет более подробную информацию о соединении, включая статус маршрутов и активность интерфейса.
Практически все Linux-системы с графическим окружением используют NetworkManager, который предоставляет унифицированный интерфейс для настройки сетей. В большинстве дистрибутивов достаточно лишь:
Здесь можно увидеть IP-адрес, MAC-адрес интерфейса и параметры маршрутизации.
Для определения внешнего (публичного) IP-адреса можно воспользоваться любым веб-сервисом, который отображает информацию о подключении. Например, достаточно открыть сайт https://2ip.io или аналогичный ресурс и ваш IP будет показан автоматически.
Следует учитывать, что при использовании VPN, прокси или встроенных в браузер расширений данные будут отличаться: сервис покажет IP-адрес промежуточного узла, а не вашего реального подключения. Это важно учитывать при диагностике сетевых проблем или проверке конфигураций серверов.
При проверке публичного IP-адреса важно учитывать, что отображаемый результат может зависеть не только от вашей локальной машины, но и от инфраструктуры провайдера или промежуточных сервисов. В некоторых ситуациях сервисы определения IP показывают не ваш реальный адрес, а IP-адрес узлов, через которые проходит трафик.
На результат могут влиять несколько параметров, которые описаны ниже.
Если ваш трафик направляется через CDN или проксирующий сервис, внешний адрес может принадлежать облачной сети, а не вашему серверу. Это особенно важно для веб-проектов с включённым режимом «проксирования» в Cloudflare - сайт будет отображаться с IP Cloudflare, а не исходного сервера.
Некоторые провайдеры используют NAT на своей стороне. В таких случаях несколько клиентов получают один общий внешний IP-адрес. Подобные конфигурации типичны для мобильных сетей и некоторых бюджетных тарифов.
При включённом VPN или прокси-браузере (например, встроенный VPN Opera) все сайты будут показывать IP сервера, к которому вы подключены, а не ваш реальный адрес. Это может вводить в заблуждение при диагностике сети.
В корпоративных сетях трафик часто направляется через прокси-шлюз. В такой конфигурации публичный IP принадлежит корпоративному узлу, а не конкретной рабочей станции пользователя.
Учитывайте эти особенности перед тем, как делать выводы или настраивать сетевые сервисы: иногда различия в показаниях сервисов - это нормальное следствие работы сетевой инфраструктуры.
Внутренний IP-адрес используется только внутри вашей локальной сети и не выходит в интернет. Внешний IP назначается провайдером и доступен из глобальной сети. Между ними обычно стоит маршрутизатор, который выполняет трансляцию адресов (NAT), позволяя нескольким внутренним устройствам использовать один внешний IP для выхода в интернет.
Команда hostname -I выводит все IP-адреса, назначенные системе. Если интерфейсов несколько (Ethernet, Wi-Fi, виртуальные интерфейсы, Docker, VPN-туннели), каждый из них может иметь собственный IP. Поэтому вывод часто содержит несколько значений.
Команда ip входит в пакет iproute2, который установлен по умолчанию в большинстве дистрибутивов. Если утилита отсутствует, можно установить её вручную через пакетный менеджер.
Примеры:
Debian/Ubuntu: apt install iproute2
RHEL/CentOS/Rocky: yum install iproute
Это может происходить, если ваш трафик проходит через NAT провайдера, VPN, прокси, CDN или прозрачные шлюзы. Также разные сервисы могут определять IP на разных уровнях (через HTTP-запросы или через DNS), что влияет на результат. Поэтому несколько различных значений не всегда являются ошибкой.
В этом случае можно определить только внутренний IP-адрес, назначенный локальной сетью. Для этого подходят команды ip addr, ifconfig, nmcli, hostname -I. Внешний IP без доступа к интернету получить невозможно, так как он определяется только внешними сервисами или регистрами сети провайдера.
Получение IP-адреса Linux, внутреннего или внешнего, является фундаментальной задачей для управления сетью и устранения неполадок. Методы, обсуждаемые в этой статье, предоставляют различные способы доступа к этой информации с помощью инструментов командной строки, приложений с графическим интерфейсом или веб-браузера. Независимо от того, предпочитаете ли вы использовать команду ip, использовать веб-службы с помощью curl или wget или использовать графические интерфейсы, понимание этих методов гарантирует, что вы сможете эффективно управлять конфигурациями сети на серверах под управлением Linux и устранять соответствующие неполадки.
Подробно о том, как работают IP-адреса, различия IPv4 и IPv6, публичные и приватные IP, DNS, маршрутизация, безопасность и применение в серверной инфраструктуре...
Ускорение WordPress на уровне Nginx: правильные настройки PHP-FPM, try_files, статика, кеширование, Brotli, защита wp-login и безопасные заголовки для стабильно...
Эффективные стратегии резервного копирования Docker-приложений: как защищать тома, данные и конфигурации, избегая при этом типичных ошибок, а также быстро восст...