Урок 6. NAT и проброс портов
Дома десяток устройств — компьютеры, телефоны, телевизор, — а внешний адрес у всех один. Это работа NAT (Network Address Translation — преобразование адресов). В этом уроке — как он устроен, почему из-за него к домашним устройствам не подключиться из интернета и как это обойти пробросом порта.
Как работает NAT
Частные адреса вроде 192.168.1.25 по интернету не передаются (урок IP-адрес, маска, шлюз и DHCP). Поэтому роутер у каждого пакета, который уходит наружу, заменяет адрес отправителя своим внешним адресом и записывает в таблицу, какому устройству принадлежит это соединение. Когда приходит ответ, роутер смотрит в таблицу и отдаёт его нужному устройству.
Таблица выглядит примерно так (адреса 203.0.113.x и 198.51.100.x — из диапазонов для примеров):
| Устройство внутри | Как видно снаружи | С кем соединение |
|---|---|---|
192.168.1.25:51000 | 203.0.113.7:51000 | 198.51.100.20:443 |
192.168.1.30:51000 | 203.0.113.7:40001 | 198.51.100.20:443 |
Два устройства взяли один и тот же свой порт 51000. Роутер различает их, подставляя снаружи разные порты.
Почему снаружи не подключиться
Если подключение начинается из интернета — скажем, кто-то хочет открыть ваш домашний сервер, — в таблице роутера нет записи о нём. Роутер не знает, какому из устройств отдать такой пакет, и отбрасывает его. Поэтому домашние компьютеры и камеры по умолчанию не видны из интернета.
Это полезный побочный эффект, но NAT — не брандмауэр. Защиту даёт брандмауэр роутера и самих устройств, а NAT просто не знает, куда отправить незваный пакет.
Проброс порта
Проброс порта (переадресация, port forwarding, «виртуальный сервер») — правило в роутере: «всё, что пришло на внешний порт X, отдавать устройству Y на порт Z». Например, внешний порт 8080 по TCP — на 192.168.1.10:80, где работает домашний сайт. Тогда снаружи сайт открывается по адресу http://203.0.113.7:8080/.
Чтобы проброс заработал, нужны четыре условия:
- У устройства постоянный адрес в сети — иначе правило однажды укажет в пустоту. Проще всего зарезервировать адрес в DHCP роутера.
- Программа на устройстве слушает этот порт (урок Порты и протоколы).
- Брандмауэр самого устройства пропускает подключения на этот порт.
- Внешний адрес роутера — публичный, «белый». Об этом — ниже.
Пошагово, с типичными разделами меню, — в справке Как пробросить порт на роутере.
Белый и серый адрес: CGNAT
Адресов IPv4 не хватает и провайдерам. Поэтому многие из них ставят свой NAT и выпускают в интернет сразу многих абонентов под одним адресом — это CGNAT (Carrier-Grade NAT, NAT провайдера). Тогда у вашего роутера снаружи серый адрес: частный или из диапазона 100.64.0.0 – 100.127.255.255.
С серым адресом проброс на своём роутере не поможет: входящее подключение остановится на NAT провайдера, до вашего роутера оно не дойдёт.
Как проверить: откройте в настройках роутера страницу состояния и найдите внешний адрес (WAN, «Интернет»). Затем посмотрите, под каким адресом вас видят сайты проверки IP-адреса (справка Как узнать свой IP-адрес). Совпадают — адрес белый. Различаются или адрес роутера начинается с 10., 100.64–100.127, 172.16–172.31, 192.168. — серый.
Что делать: спросить провайдера о публичном адресе (часто это отдельная услуга) или пользоваться IPv6, если провайдер его даёт (урок IPv6: что это и зачем).
Проверка снаружи
Проверять проброс изнутри своей сети бесполезно: не все роутеры умеют вернуть подключение на внешний адрес обратно внутрь (это называется NAT loopback). Проверяйте с телефона через мобильный интернет, выключив на нём Wi‑Fi, или попросите знакомого открыть адрес из другой сети.
UPnP
UPnP позволяет программам внутри сети самим попросить роутер пробросить порт: так делают игровые приставки, программы для звонков и обмена файлами. Удобно, но открыть порт так может любая программа на любом устройстве — и вредоносная тоже. Если UPnP вам не нужен — выключите его в настройках роутера. Если нужен — иногда заглядывайте в список правил UPnP там же: в нём видно, кто и какие порты открыл.
DMZ
DMZ в домашнем роутере — правило «всё входящее, для чего нет других правил, отдавать одному устройству». Оно открывает это устройство из интернета целиком, со всеми его портами.
Не включайте DMZ для обычного компьютера, камеры или приставки. Все их службы станут доступны из интернета, а их порты круглосуточно проверяют боты. Пробрасывайте только те порты, которые нужны.
DDNS — имя вместо меняющегося адреса
Белый адрес бывает динамическим: после переподключения провайдер выдаёт другой. Чтобы не узнавать его каждый раз, пользуются DDNS (динамический DNS): роутер сам сообщает службе DDNS свой текущий адрес, а вы подключаетесь по постоянному имени. Поддержка DDNS есть во многих роутерах, у некоторых производителей — своя бесплатная служба. С серым адресом DDNS не поможет: имя будет указывать на адрес провайдера.
Что не стоит открывать
Открытый в интернет порт находят боты, которые без остановки проверяют все адреса подряд, — обычно в течение часов. Не пробрасывайте удалённый рабочий стол Windows (3389), общие папки (445), страницу настроек роутера и базы данных. Для SSH разрешайте вход только по ключу. Обновляйте программу, к которой открыт доступ, и удаляйте правило проброса, когда оно больше не нужно.
Коротко
- NAT выпускает все устройства сети в интернет под одним адресом роутера и помнит, чьё какое соединение.
- Подключения снаружи по умолчанию не проходят: роутер не знает, кому их отдать.
- Проброс порта — правило «внешний порт → адрес и порт устройства»; нужен постоянный адрес устройства и белый внешний адрес.
- Серый адрес (CGNAT) — проброс не поможет; нужен публичный адрес от провайдера или IPv6.
- UPnP открывает порты без вас, DMZ открывает устройство целиком — без нужды не включайте.