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-адресов на хосте маршрутизатора.
Маршрутизатор получит данные от нас, изменят исходящий ip-адрес на свой и отправит дальше, а когда придёт ответ, всё заменит назад.
Это делается по 2-м причинам:
- Количество IP-адресов версии 4 (которая сейчас наиболее распространена) ограничено. Более того, они закончились – теперь разве что арендовать или перекупать.
- Из соображений безопасности: снаружи никто не сможет к вам подключиться.
Поэтому, в общем случае, вы не можете узнать тот ip, который будет использоваться в интернете без использования внешних сервисов.
Ну а самый простой вариант узнать свой внешний IP-адрес – просто сходить на один из сайтов, которые как раз сделаны для этого.