Внешний и внутренний IP: в чём разница и как узнать каждый
Внутренний IP — это адрес устройства внутри локальной сети (например 192.168.1.5), а внешний — публичный адрес, под которым вашу сеть видит интернет. Разница возникает из-за NAT: роутер прячет много внутренних адресов за одним публичным. Ниже разберём, как устроена эта схема и как узнать оба адреса.
Что такое внутренний (частный) IP
Внутренние адреса используются только внутри локальной сети и не маршрутизируются в интернете. Под них зарезервированы три диапазона (RFC 1918):
| Диапазон | Маска | Где применяется |
|---|---|---|
| 10.0.0.0 – 10.255.255.255 | /8 | крупные сети, дата-центры |
| 172.16.0.0 – 172.31.255.255 | /12 | средние сети |
| 192.168.0.0 – 192.168.255.255 | /16 | домашние роутеры |
Такие адреса могут повторяться в миллионах сетей одновременно — они уникальны только внутри своей сети.
Что такое внешний (публичный) IP
Внешний IP уникален в масштабах всего интернета и выдаётся провайдером. Именно на него приходят запросы из сети. У VPS публичный IP статический и закреплён за сервером.
Как работает NAT
NAT (Network Address Translation) — механизм, который подменяет внутренний адрес источника на внешний при выходе в интернет и запоминает соответствие, чтобы вернуть ответ нужному устройству.
- Ваш ноутбук (
192.168.1.5) шлёт запрос на сайт. - Роутер меняет адрес источника на свой внешний (
203.0.113.7) и фиксирует пару в таблице трансляций. - Ответ приходит на внешний IP роутера, и NAT возвращает пакет на
192.168.1.5.
Из-за NAT входящие соединения снаружи по умолчанию не доходят до устройства — нужен проброс портов (port forwarding) на роутере или публичный адрес прямо на сервере.
Как узнать внутренний IP
Windows:
ipconfig
Linux:
ip addr show
hostname -I
Как узнать внешний IP
curl ifconfig.me
curl https://api.ipify.org
PowerShell:
(Invoke-WebRequest -Uri "https://api.ipify.org").Content
Если внешний адрес совпадает с внутренним — значит, вы подключены напрямую, без NAT (типично для VPS с «белым» IP).
Проброс портов: как открыть доступ извне
Если сервис работает на устройстве за NAT, снаружи он по умолчанию недоступен. Чтобы входящее соединение доходило до нужного устройства, на роутере настраивают проброс портов (port forwarding):
- Войдите в веб-интерфейс роутера по адресу шлюза (например
http://192.168.1.1). - Найдите раздел Port Forwarding / «Виртуальные серверы».
- Укажите внешний порт, внутренний IP устройства и внутренний порт.
- Сохраните и проверьте доступность с внешнего хоста.
Важно: проброс работает только при белом внешнем IP. Если провайдер выдал серый адрес за CGNAT, входящие соединения не пройдут, и порт открыть не получится. В этом случае используют сервер с публичным адресом.
Белый и серый IP
- Белый (публичный) — уникальный маршрутизируемый адрес; к нему можно подключиться извне. Есть у любого VPS.
- Серый — адрес за NAT провайдера (CGNAT), общий на многих клиентов. Проброс портов на нём невозможен, входящие соединения недоступны.
Проверить, белый ли у вас IP: сравните адрес из curl ifconfig.me с внешним IP в веб-интерфейсе роутера. Если они разные — вы за CGNAT провайдера.
Частые вопросы
Почему я не могу подключиться к своему компьютеру из интернета? Скорее всего вы за NAT и без проброса портов. Настройте port forwarding на роутере или используйте сервер с белым IP.
Можно ли получить белый IP дома? Обычно да — как платную опцию у интернет-провайдера. Альтернатива без зависимости от провайдера — VPS с публичным адресом.
Сколько устройств может быть за одним внешним IP? Технически тысячи — NAT различает их по портам. Ограничение — размер таблицы трансляций роутера.
У VPS внутренний и внешний IP совпадают? Часто да: публичный адрес назначается прямо на сетевой интерфейс. Иногда провайдер даёт приватную сеть отдельно для связи между серверами.
Как проверить, за CGNAT ли я?
Если внешний IP из curl ifconfig.me начинается с 100.64–100.127 или не совпадает с адресом WAN на роутере — вы за CGNAT провайдера.
Нужен постоянный белый IP без ограничений NAT? Возьмите VPS на Linux с выделенным публичным адресом в разделе аренда VPS.
