Linux как узнать ip по домену

Обновлено: 12.07.2024

Favorite

Добавить в избранное

Главное меню » Операционная система Linux » Как найти IP-адрес в командной строке Linux

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

К ак узнать IP-адрес системы в командной строке Linux? Это общий вопрос для многих пользователей Linux.

Несколько лет назад ifconfig был способом узнать IP-адрес в Linux. К сожалению, команда ifconfig устарела. Если вы попытаетесь использовать эту команду сегодня, вы, скорее всего, увидите следующую ошибку:

Итак, как вы узнаете IP-адрес? Позвольте нам показать вам, как это сделать.

Найти IP-адрес в командной строке Linux

Ну, вы можете использовать команду ip для этой цели. Команда ip является универсальной и может использоваться для нескольких других вещей, связанных с сетью.

Но просто, чтобы показать IP-адрес, используйте команду с опциями ip addr , ip a или ip address (все одинаковые) следующим образом:

И вы увидите вывод, вроде этого:

В приведенном выше выводе вы можете игнорировать первый, называемый lo (loopback). Вы можете видеть, что IP-адрес отображается 192.168.34.113/24, следующие за ним, являются маской подсети.

Вот и все. Вот как вы отображаете IP-адрес хост-системы в командной строке Linux.

Другие способы найти IP-адрес вашей системы в Linux

Показать IP-адрес с помощью команды hostname

Команда hostname обычно отображает имя хоста вашей системы. Он также может быть использован для отображения IP-адреса хоста:

Он просто отобразит IP-адрес хоста в терминале.

Отображение IP-адреса с помощью инструмента nmcli

Большинство дистрибутивов Linux поставляются с инструментом Network Manager. Этот инструмент имеет интерфейс командной строки под названием nmcli. Вы можете использовать этот инструмент nmcli для просмотра ряда сетевых конфигураций.

Читать Как определить папки занимающие большое пространство на Linux

IP-адрес может отображаться с помощью:

Вы должны увидеть IP-адрес в выходных данных.

Как насчет ifconfig?

На самом деле, вы все еще можете использовать команду ifconfig. Он присутствует в пакете net-tools. Вы можете установить его с помощью менеджера пакетов вашей системы. Однако использование net-tools не рекомендуется, поэтому мы предлагаем придерживаться команды ip.

В дистрибутивах на основе Ubuntu вы можете установить net-tools, используя эту команду:

Теперь вы можете использовать команду ifconfig для отображения IP-адреса вашей системы.

Вывод будет таким:

Опять же, ifconfig устарела и не должна использоваться.

Бонусный совет: поиск публичного IP-адреса вашей системы

До сих пор вы видели частный IP-адрес вашей системы. Мы имеем в виду, что если вы используете сетевой маршрутизатор, вы, скорее всего, находитесь за NAT.

IP-адрес вашей системы является частным и используется только для связи с устройствами в вашей подсети. Ни одно устройство за пределами вашей домашней/рабочей сети не сможет найти вас с этим IP-адресом. Им нужен теперь IP-адрес вашего роутера. Ваш маршрутизатор распознает ваше устройство и связывается через частный IP-адрес.

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

Например, вы можете использовать команду host с OpenDNS и получить публичный IP-адрес:

Читать Как вывести список пользователей в Ubuntu Linux VPS

Вывод должен быть похож на этот:

Мы надеемся, что этот быстрый совет помог вам найти IP-адрес вашей системы в командной строке Linux.

Как всегда, не стесняйтесь оставлять свои отзывы и предложения в разделе комментариев ниже.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Как получить пустую строку в случае недоступности dns?




раз тема в development, то вот вам решение на C


h_errno не используется, memcpy не нужен.

ещё и gethostbyname устарела и не рекомендуется к использованию. IPv6, однако.



Думаю она будет сегфолтиться :)
З.Ы.Вечером проверю.


> вот вам решение на C

а вот вам решение на … кхм ;)



Ради Вас пришлось грузить убунту :) cat 2.c



в любом случае это концепция кода, дальше уже пусть автор темы , если ему это надо , допиливает под свои надобности


Какой у вас дистр?!




причем тут дистр? ) для кода в несколько строчек уже становится важно какой дистрибутив?)


Я просто уже наступал на такие грабли, при чём они наблюдались только в убунту, точнее в ядре, функция vsprintf



Я просто уже наступал на такие грабли, при чём они наблюдались только в убунту, точнее в ядре, функция vsprintf

Ядерная vsprintf к юзерспейсу никакого отношения не имеет.


В общем-то, Silvy и не виновата. inet_ntoa печатает в thread-local буфер и возвращает его адрес, но адрес возвращается кривой.


Ядерная vsprintf к юзерспейсу никакого отношения не имеет.

я за ядро и говорил, дело в том что видно в обновлениях ядра за 17.03 они это пофиксили. Смотри /linux-source-*/net/tipc/dbg.c


Виновата :), -Wall нужно указывать :)


Silvy попробуй заменить


Если объяснишь, как эта программа добирается до ядерного vsprintf, то посмотрю.

Как мне сделать так, чтобы я мог в скрипте написать например $ip и чтобы в конфиги прописался ip сервера в терминале которого был запущен скрипт. Такого плана хочу сделать:

echo "host $ip" > /etc/rclocal

  • Вопрос задан более трёх лет назад
  • 7672 просмотра

У сервера может быть несколько IP адресов, несколько интерфейсов, и работать они могут с разными маршрутами.
Вы что именно хотите?
ifconfig пропарсить? или ip addr show?

Если внешний интерфейс один, то подойдет обычный
hostname -I

ip route get 1 | awk ''

zolt85

Если известно наименование интерфейса, то можно попробовать так


Опять же, это будет адекватно работать если интерфейс один (исключая lo), если таких интерфейсов несколько, то нужно что-то по серьезнее писать.

Спасибо большое. А если будет не eth0 (такое вряд ли будет, это я на будущее интересуюсь) Быть может есть какая-нибудь программа для определения? Чтобы я скриптом её поставил а потом одной командой определял ип. У меня всегда не больше 1 ип если что. Или например сразу несколько интерфейсов вбить

zolt85

noob4ik2, Если уверены что интерфейс один, то указывать имя интерфейса не обязательно в скрипте Евгений, я на будущее интересуюсь) Быть может когда-то буду не уверен.

CityCat4

В самом наипростейшем случае, когда одна сетевуха, никаких наворотов - сначала netstat -in, чтобы получить список интерфейсов и их имен и откинуть lo0, а потом ifconfig по тому интерфейсу, который остался.
Но это наипростейший случай. Даже у компа с одной сетевухой может быть например виртуальная машина и мост, который обьединяет уже как минимум два интерефейса:

Существуют Linux-команды, которые всегда должны быть под рукой у системного администратора. Эта статья посвящена 7 утилитам, предназначенным для работы с сетью.

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


В данной серии статей будут представлены все эти команды, разбитые по категориям. Первые 7 команд, которым и посвящена эта статья, направлены на работу с сетью.

Команда ip

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

Синтаксис этой команды выглядит так:


Самое важное тут — это <OBJECT> (подкоманда). Здесь можно использовать, помимо некоторых других, следующие ключевые слова:

  • address — адрес протокола (IPv4 или IPv6) на устройстве.
  • tunnel — IP-туннель.
  • route — запись таблицы маршрутизации.
  • rule — правило в базе данных политики маршрутизации.
  • vrf — управление виртуальными устройствами маршрутизации и перенаправления трафика.
  • xfrm — управление IPSec-политикой.

Вывод IP-адресов, назначенных интерфейсу на сервере:


Назначение IP-адреса интерфейсу, например — enps03 :


Удаление IP-адреса из интерфейса:


Изменение статуса интерфейса, в данном случае — включение eth0 :


Изменение статуса интерфейса, в данном случае — выключение eth0 :


Изменение статуса интерфейса, в данном случае — изменение MTU eth0 :


Изменение статуса интерфейса, в данном случае — перевод eth0 в режим приёма всех сетевых пакетов:


Добавление маршрута, используемого по умолчанию (для всех адресов), через локальный шлюз 192.168.1.254, который доступен на устройстве eth0 :


Добавление маршрута к 192.168.1.0/24 через шлюз на 192.168.1.254:


Добавление маршрута к 192.168.1.0/24, который доступен на устройстве eth0 :


Удаление маршрута для 192.168.1.0/24, для доступа к которому используется шлюз 192.168.1.254:


Вывод маршрута к IP 10.10.1.4:

Команда ifconfig

Команда ifconfig до определённого времени представляла собой один из основных инструментов, используемых многими системными администраторами для настройки сетей и решения сетевых проблем. Теперь ей на замену пришла команда ip , о которой мы только что говорили. Но если вас, всё же, интересует эта команда, можете взглянуть на данный материал.

Команда mtr

MTR (Matt's traceroute) — это программа, работающая в режиме командной строки, представляющая собой инструмент для диагностики сетей и устранения сетевых неполадок. Эта команда совмещает в себе возможности ping и traceroute . Она, как traceroute , может выводить сведения о маршруте, по которому сетевые данные идут от одного компьютера к другому. Она выводит массу полезных сведений о каждом шаге маршрутизации, например — время ответа системы. Благодаря использованию команды mtr можно получить довольно подробные сведения о маршруте, можно обнаружить устройства, которые вызывают проблемы при прохождении данных по сети. Если, например, наблюдается рост времени ответа системы, или рост числа потерянных пакетов, это позволяет с уверенностью говорить о том, что где-то между исследуемыми системами возникла проблема с сетевым соединением.

Синтаксис команды выглядит так:


Рассмотрим несколько распространённых способов применения mtr .

Если вызвать эту команду, указав лишь имя или адрес хоста — она выведет сведения о каждом шаге маршрутизации. В частности — имена хостов, сведения о времени их ответа и о потерянных пакетах:


Вот — вариант использования mtr , когда вместо имён хостов выводятся их IP-адреса (речь идёт о ключе -g , благодаря которому вместо имён выводятся числовые IP-адреса):


А следующий вариант команды позволяет выводить и имена, и IP-адреса хостов:


А так можно получить отчёт, содержащий результаты работы mtr :


Вот — ещё один вариант получения такого отчёта:


Для того чтобы принудительно использовать TCP вместо ICMP — надо поступить так:


А вот так можно использовать UDP вместо ICMP:


Вот — вариант команды, где задаётся максимальное количество шагов маршрутизации:


Так можно настроить размер пакета:


Для вывода результатов работы mtr в формате CSV используется такая команда:


Вот — команда для вывода результатов работы mtr в формате XML:

Команда tcpdump

Утилита tcpdump предназначена для захвата и анализа пакетов.

Установить её можно так:


Прежде чем приступить к захвату пакетов, нужно узнать о том, какой интерфейс может использовать эта команда. В данном случае нужно будет применить команду sudo или иметь root-доступ к системе.


Если нужно захватить трафик с интерфейса eth0 — этот процесс можно запустить такой командой:


Или — такой, с указанием (через ключ -c ) количества пакетов, которые нужно захватить:

▍ Захват трафика, идущего к некоему хосту и от него

Можно отфильтровать трафик и захватить лишь тот, который приходит от определённого хоста. Например, чтобы захватить пакеты, идущие от системы с адресом 8.8.8.8 и уходящие к этой же системе, можно воспользоваться такой командой:


Для захвата трафика, идущего с хоста 8.8.8.8, используется такая команда:


Для захвата трафика, уходящего на хост 8.8.8.8, применяется такая команда:

▍ Захват трафика, идущего в некую сеть и из неё

Трафик можно захватывать и ориентируясь на конкретную сеть. Делается это так:


Ещё можно поступить так:


Можно, кроме того, фильтровать трафик на основе его источника или места, в которое он идёт.

Вот — пример захвата трафика, отфильтрованного по его источнику (то есть — по той сети, откуда он приходит):


Вот — захват трафика с фильтрацией по сети, в которую он направляется:

▍ Захват трафика, поступающего на некий порт и выходящего из некоего порта

Вот пример захвата трафика только для DNS-порта по умолчанию (53):


Захват трафика для заданного порта:


Захват трафика для всех портов кроме 80 и 25:

Команда netstat

Инструмент netstat используется для вывода сведений о сетевых соединениях и таблицах маршрутизации, данных о работе сетевых интерфейсов, о masquerade-соединениях, об элементах групп многоадресной рассылки. Эта утилита является, как и ifconfig , частью пакета net-tools . В новом пакете iproute2 для достижения тех же целей используется утилита ss .

Если в вашей системе netstat отсутствует, установить эту программу можно так:


Ей, в основном, пользуются, вызывая без параметров:


В более сложных случаях её вызывают с параметрами, что может выглядеть так:


Можно вызывать netstat и с несколькими параметрами, перечислив их друг за другом:


Для вывода сведений обо всех портах и соединениях, вне зависимости от их состояния и от используемого протокола, применяется такая конструкция:


Для вывода сведений обо всех TCP-портах применяется такой вариант команды:


Если нужны данные по UDP-портам — утилиту вызывают так:


Список портов любых протоколов, ожидающих соединений, можно вывести так:


Список TCP-портов, ожидающих соединений, выводится так:


Так выводят список UDP-портов, ожидающих соединений:


А так — список UNIX-портов, ожидающих соединений:


Вот — команда для вывода статистических сведений по всем портам вне зависимости от протокола:


Так выводятся статистические сведения по TCP-портам:


Для просмотра списка TCP-соединений с указанием PID/имён программ используется такая команда:


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

Команда nslookup

Команда nslookup используется для интерактивного «общения» с серверами доменных имён, находящимися в интернете. Она применяется для выполнения DNS-запросов и получения сведений о доменных именах или IP-адресах, а так же — для получения любых других специальных DNS-записей.

Рассмотрим распространённые примеры использования этой команды.

Получение A-записи домена:


Просмотр NS-записей домена:


Выяснение сведений о MX-записях, в которых указаны имена серверов, ответственных за работу с электронной почтой:


Обнаружение всех доступных DNS-записей домена:


Проверка A-записи для выяснения IP-адресов домена — это распространённая практика, но иногда нужно проверить то, имеет ли IP-адрес отношение к некоему домену. Для этого нужно выполнить обратный просмотр DNS:

Команда ping

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


В данном случае работу команды ping можно остановить, воспользовавшись сочетанием клавиш CTRL+C . В противном случае она будет выполнять запросы до тех пор, пока её не остановят. После каждой ping-сессии выводятся сводные данные, содержащие следующие сведения:

  • Min — минимальное время, которое требуется на получение ответа от пингуемого хоста.
  • Avg — среднее время, которое требуется на получение ответа.
  • Max — максимальное время, которое требуется на получение ответа.

Обычно, если запустить команду ping в её простом виде, не передавая ей дополнительные параметры, Linux будет пинговать интересующий пользователя хост без ограничений по времени. Если нужно изначально ограничить количество ICMP-запросов, например — до 10, команду ping надо запустить так:


А для того чтобы увидеть лишь итоговый отчёт работы ping — можно воспользоваться ключом -q :


В системах с несколькими сетевыми интерфейсами можно задавать конкретный интерфейс, которым должна пользоваться команда ping . Например, есть компьютер, имеющий интерфейсы eth0 и eth1 . Если нужно, чтобы команда ping использовала бы интерфейс eth0 — надо запустить её так:


Или можно указать адрес интерфейса. В данном случае речь идёт об IP-адресе 10.233.201.45:


Применяя эту команду, можно указать и то, какую версию протокола IP использовать — v4 или v6:

▍ Destination Host Unreachable

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

▍ Request timed out

▍ Unknown host/Ping Request Could Not Find Host

Такой результат может указывать на то, что неправильно введено имя хоста, или хоста с таким именем в сети просто не существует.

О хорошем качестве связи между исследуемыми системами говорит уровень потери пакетов в 0%, а так же — низкое значение времени получения ответа. При этом в каждом конкретном случае время получения ответа варьируется, так как оно зависит от разных параметров сети. В частности — от того, какая среда передачи данных используется в конкретной сети (витая пара, оптоволокно, радиоволны).

Итоги

Надеемся, вам пригодятся команды и примеры их использования, о которых мы сегодня рассказали. А если они вам и правда пригодились — возможно, вам будет интересно почитать продолжение этого материала.

Читайте также: