Networking

IP-адрес

Числовой адрес устройства в сети вида 192.168.1.1, по которому пакеты находят нужный узел.

Что такое IP-адрес

IP-адрес («айпи») — числовой идентификатор устройства в сети, по которому маршрутизаторы понимают, куда доставить пакет. IP расшифровывается как Internet Protocol — протокол, определяющий формат адреса и правила доставки. Адрес есть у каждого узла: у ноутбука, у роутера, у сервера, у контейнера.

Аналогия — почтовый адрес: чтобы письмо дошло, отправитель указывает получателя, а промежуточные узлы решают, в какую сторону его передать дальше. Домен вроде example.com — лишь удобное имя, которое DNS переводит в такой адрес; сеть работает только с числами.

Адрес принадлежит не устройству, а сетевому интерфейсу. На одной машине их может быть несколько: физический адаптер, lo с адресом 127.0.0.1, мосты Docker.

Как устроен адрес

IPv4-адрес — 32 бита, записанные как четыре числа от 0 до 255 через точку. Внутри он делится на две части, и границу задаёт маска подсети:

192.168.  1.  10 / 24
└── сеть ────┘└хост┘

Всего IPv4 даёт около 4,3 млрд адресов — их давно не хватает, поэтому существует IPv6 со 128-битными адресами.

Белый и серый IP

Это главное практическое деление, и путаница здесь стоит дороже всего.

Белый (публичный) Серый (приватный)
Виден из интернета да нет
Маршрутизируется глобально да нет
Диапазоны всё, кроме приватных 10/8, 172.16/12, 192.168/16
Уникальность глобальная только внутри вашей сети
Входящие соединения работают только через NAT
Стоимость у хостера платная опция бесплатно

Белый IP — обязательное условие, если на адрес должны приходить извне: сайт, почтовый сервер, VPN-эндпоинт, игровой сервер. Серый адрес живёт за NAT: наружу через него ходить можно, принимать входящие — нет.

Проверить, какой у вас адрес, проще всего сравнив локальный и внешний:

$ ip -4 addr show eth0 | grep inet
    inet 10.0.0.5/24 brd 10.0.0.255 scope global eth0

$ curl -s ifconfig.me
203.0.113.7

Адреса разные — значит, вы за NAT. Это норма для облачного инстанса: платформа навешивает публичный адрес снаружи, а гостевая ОС о нём не знает.

Шлюз

Шлюз (gateway, «шлюз IP») — адрес узла, которому машина отдаёт пакеты для всех сетей, кроме своей. Хост сравнивает адрес назначения со своей подсетью: попал внутрь — шлёт напрямую, не попал — отдаёт шлюзу и дальше не думает.

$ ip route
default via 10.0.0.1 dev eth0     ← шлюз по умолчанию
10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.5

Строка default via — тот самый шлюз. Симптом неверно указанного шлюза узнаваем: соседи в локальной сети пингуются, а интернета нет.

Статический и динамический

Динамический адрес выдаёт DHCP, и он может смениться. Статический прописан вручную или закреплён резервацией.

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

Полезно помнить и про репутацию адреса: у б/у IP может быть история в спам-листах — если планируете отправлять почту, проверяйте адрес по чёрным спискам до запуска.

Связанные термины

  • IPv4 и IPv6 — две версии адресации
  • Маска подсети и CIDR — делит адрес на сеть и хост
  • NAT — почему серый адрес выходит в интернет
  • DNS — превращает домен в IP-адрес
  • DHCP — раздаёт адреса автоматически
  • Адрес сервера — IP вместе с портом и именем

Готовы запустить GPU-задачу?

Запустить GPU-сервер