Программы
Как узнать свой IP адрес в Linux, MacOS и других Unix-подобных

Как узнать свой IP адрес в Linux, MacOS и других Unix-подобных

Как же узнать свой IP-адрес в Linux / MacOS / Unix-подобных

TL;DR - ваш IP-адрес: ....

Теперь давайте подробнее разберёмся с этим!

Во-первых, раз уж нам нужен ip адрес, то стоит познакомиться с командой ip. В частности, для получения информации об имеющихся сетевых интерфейсах, а также их настройке, можно использовать команду ip addr или сокращённый вариант ip a:

$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    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

Команда ip довольно новая, не на всех системах она есть. Так, к примеру, на MacOS, FreeBSD или старых версиях Linux вместо команды ip можно использовать команду ifconfig:

$ ifconfig 
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
	options=1203<RXCSUM,TXCSUM,TXSTATUS,SW_TIMESTAMP>
	inet 127.0.0.1 netmask 0xff000000 
	inet6 ::1 prefixlen 128 
	inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 
	nd6 options=201<PERFORMNUD,DAD>

Соответственно, мы видим интерфейс lo, у которого настроен ip 127.0.0.1. Однако, там мы встретим отнюдь не один сетевой интерфейс. Например, этот самый lo - это псевдо-интерфейс для того, чтобы приложение в операционной системе могло общаться с другим на той же по "сети".

Соответственно, только один (вариант с несколькими также возможен, но скорее всего, это не ваш случай) из выведенных интерфейсов обращается в интернет.

Как узнать, какой же сетевой интерфейс ходит в интернет

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

$ ip route
default via 10.111.88.11 dev ens192  proto static  metric 100 

Опять же в MacOS, FreeBSD или старых версиях Linux вместо команды ip можно использовать команду route:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.111.88.11    0.0.0.0         UG    100    0        0 ens192

– в большинстве случаев используется маршрут по умполчанию, или же default (также он пишется как 0.0.0.0). Таким образом мы видим, что используется ip 10.111.88.11.

Локальные адреса и NAT

Однако, не всё так просто. Это ваш локальный ip - он используется для адресации во внутренней сети. Как я это определил? Всё просто: есть диапазоны ip-адресов, которые используются только во внутренних локальных. Вот их краткий список:

Следующие диапазоны определены IANA как адреса, выделенные локальным сетям:

  • 10.0.0.0 — 10.255.255.255
  • 192.168.0.0 — 192.168.255.255
  • 100.64.0.0 — 100.127.255.255
  • 172.16.0.0 — 172.31.255.255

– первые 2 диапазона используются особо часто.

Однако, именно с этого адреса будут отсылаться данные. Но сайты, на которые мы пойдём увидят не их. Всё благодаря технологии NAT - подмены ip-адресов на хосте маршрутизатора.

nat

Маршрутизатор получит данные от нас, изменят исходящий ip-адрес на свой и отправит дальше, а когда придёт ответ, всё заменит назад.

Это делается по 2-м причинам:

  1. Количество IP-адресов версии 4 (которая сейчас наиболее распространена) ограничено. Более того, они закончились – теперь разве что арендовать или перекупать.
  2. Из соображений безопасности: снаружи никто не сможет к вам подключиться.

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

Ну а самый простой вариант узнать свой внешний IP-адрес – просто сходить на один из сайтов, которые как раз сделаны для этого.

Также может быть вам интересно:

Скачать Ubuntu

Разные модификации Ubuntu для скачивания

Читать »

Как установить сообщение на экран логина в MacOS

Сегодня мы немного увеличим наши шансы на возврат ноутбука при его потере.

Читать »
Фото Добавляем поддержку медиа-файлов в Django проект

Добавляем поддержку медиа-файлов в Django проект

Современные сайты редко ограничиваются только текстом и вёрсткой. Часто в заметках красуются фотографии, а рядом с описанием товаров - их изображения.

Фото Настройка журналирования (логирования) в Python с примерами

Настройка журналирования (логирования) в Python с примерами

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

Фото Так ли безопасен Linux? Несколько коммитов с уязвимосятми в stable

Так ли безопасен Linux? Несколько коммитов с уязвимосятми в stable

Исследователи сумели пройти code-review с реквестами в ядро Linux, заведомо содержащими добавление уязвимостей.

Фото Добавляем постраничную пагинацию на Django сайт

Добавляем постраничную пагинацию на Django сайт

На сайтах часто встречаются многостраничные объекты: список товаров, список заметок и т.д. Поэтому важно уметь добавить навигацию по страницам на Django-проекте.

Фото Панель администрирования Django - настройка вида (шаблона)

Панель администрирования Django - настройка вида (шаблона)

Простой способ подключить админку к сайту на Django, как сконфигурировать адмиин-панель, как изменить оформление администрационной панели Django фреймворка.

Фото Панель администрирования Django - подключение, настройка, поиск, фильтрация

Панель администрирования Django - подключение, настройка, поиск, фильтрация

Простой способ подключить админку к сайту на Django, как сконфигурировать адмиин-панель и добавить функциональность поиска, массовых действий, как изменить оформление администраторской панели Django фреймворка.

Фото И снова sudo, и снова "решето"

И снова sudo, и снова "решето"

В утилите sudo была исправлена очередная уязвимость.

Фото Google прекращает поддержку сторонних приложений в API Chrome-like

Google прекращает поддержку сторонних приложений в API Chrome-like

Гугл отключает всех пользователей Chrome-зависимых API. Зачем? К чему это приведёт?