Как в интернет-центре выполнить тонкую настройку трансляции сетевых адресов NAT через интерфейс командной строки устройства (CLI) с помощью команды ip static?
NOTE: Важно! Данная статья предназначена для опытных пользователей.
В ней указаны синтаксис, подробное описание и примеры команды ip static для различных настроек трансляции сетевых адресов NAT. С указанной командой нужно работать через интерфейс командной строки (CLI) интернет-центра.
После выполнения настроек команды ip static, для сохранения в энергонезависимой памяти интернет-центра, нужно выполнить команду system configuration save
1. Описание и применение команды ip static
Данная команда позволяет создать статическую привязку локальных IP-адресов к глобальным. Если interface или network соответствует интерфейсу с публичным уровнем безопасности (в настройках интерфейса в CLI стоит параметр security-level public), то будет выполняться трансляция адреса назначения (DNAT). Если to-address соответствует интерфейсу с публичным уровнем безопасности, то будет выполняться трансляция адреса источника (SNAT).
Номер порта TCP/UDP всегда рассматривается как порт назначения.
Если network соответствует одному адресу и этот адрес равен to-address, такое правило будет запрещать трансляцию указанного адреса, которая могла бы быть выполнена исходя из заданных правил ip nat.
NOTE: Важно! Правила ip static имеют более высокий приоритет по сравнению с правилами ip nat.
2. Синтаксис команды ip static
Правило может работать либо для одного из двух протоколов (tcp или udp), либо для всех протоколов (в том числе для icmp). Если не указан тип протокола tcp или udp, то в синтаксисе нет возможности выбрать номер порта.
Рассмотрим наиболее используемые примеры настройки DNAT c помощью команды ip static.
Пример 1. В локальной сети есть сервер с IP-адресом 192.168.1.33, к которому требуется организовать доступ по указанному диапазону портов. После создания правила любое обращение по внешнему IP-адресу роутера по tcp-порту с 10000 по 20000 будет перенаправляться на локальный сервер.
Проброс диапазона tcp-портов назначения с внешнего интерфейса на хост в локальной сети:
ip static tcp ISP 10000 through 20000 192.168.1.33
Данное правило будет транслировать tcp-порты с 10000 до 20000 на IP-адрес 192.168.1.33.
Пример 2. В локальной сети есть IP-камера с адресом 192.168.1.33, к которой нужно предоставить доступ по udp-порту 554 для просмотра потокового видео. В программе воспроизведения видео нужно будет открыть адрес rtsp://WAN_IP:554.
Проброс одного udp-порта назначения c внешнего интерфейса на хост в локальной сети:
ip static udp ISP 554 192.168.1.33
Данное правило будет транслировать udp-порт 554 на локальный IP-адрес 192.168.1.33.
Пример 3. В локальной сети есть несколько устройств, которые имеют одинаковый порт управления, и нужно настроить удаленный доступ до каждого из них. Одновременно открыть один и тот же внешний порт для разных хостов невозможно, поэтому необходимо настраивать правила, чтобы клиенты, обращаясь по разным внешним портам, попадали на необходимое устройство в локальной сети.
Преобразование одного внешнего tcp-порта назначения на другой порт назначения в локальной сети:
ip static tcp ISP 8080 192.168.1.1 80
Данное правило транслирует обращение на внешний интерфейс по порту 8080 в обращение на роутер по 80 порту.
Пример 4. В локальной сети есть сервер с IP-адресом 192.168.1.33, к которому нужно предоставить доступ по всем портам.
Трансляция обращений по любому внешнему порту на хост в локальной сети (DMZ, открытый сервер):
ip static ISP 192.168.1.33
3. Расcмотрим наиболее используемые примеры настройки SNAT c помощью команды ip static:
Пример 1. Провайдер выдает два глобальных ("белых") IP-адреса, и необходимо подсеть Home вывести через один IP, а подсеть GuestWiFi через другой.
Вывод локальной сети Keenetic'а через глобальный интерфейс с определенным IP-адресом:
ip static Home 180.100.100.10
Данное правило будет срабатывать для всех пакетов, идущих из локальной сети (Home) во все глобальные интерфейсы (в настройках интерфейса включена опция "Использовать для выхода в Интернет"), и IP-адрес источника будет подменяться на 180.100.100.10.
NOTE: Важно! Данное правило работает независимо от правила ip nat Home, так как ip static имеет наивысший приоритет.
Пример 2. Провайдер выдает два глобальных ("белых") IP-адреса. В локальной сети есть сервер, и нужно его опубликовать в Интернете со своим IP-адресом, а остальную сеть через второй IP-адрес, выданный провайдером.
Вывод одного хоста из локальной сети в глобальную сеть с определенным IP-адресом (NAT 1 к 1).
ip static 192.168.1.33 255.255.255.255 180.100.100.10
Данное правило будет работать только для локального хоста 192.168.1.33, и он будет выходить через глобальный интерфейс с адресом 180.100.100.10. Вся остальная локальная подсеть будет работать по правилу ip nat Home и будет уходить в глобальную сеть с IP-адресом источника, который прописан на внешнем интерфейсе.
NOTE: Важно! Для работы NAT 1 к 1 в настройках глобального интерфейса необходимо прописать алиас (псевдоним) с помощью команды:
<config> interface ISP
<config-if> ip alias 180.100.100.10 255.255.255.255
Пример 3. В локальной сети есть сервер с IP-адресом 192.168.1.33, который должен выходить во внешнюю сеть со своим IP для организации классической маршрутизации (без NAT).
Отключение правила работы SNAT для хоста в локальной сети:
ip static 192.168.1.33 255.255.255.255 192.168.1.33
Данное правило позволяет выходить локальному хосту с адресом 192.168.1.33 и маской 255.255.255.255 в глобальные интерфейсы (WAN) со своим локальным IP-адресом. Вся остальная локальная подсеть будет работать по правилу ip nat Home и будет уходить в глобальную сеть с IP-адресом источника, который прописан на внешнем интерфейсе.
Примечание
Начиная с версии ОС KeeneticOS 2.09 расширились возможности настройки команды ip static. В частности добавился параметр to-interface.
Синтаксис команды стал следующий:
(config)> ip static
Usage template:
static [tcp | udp] ({interface} | ({address} {mask})) (({port} through {end-port} ({to-address} | {to-host})) | ({port} ({to-address} | {to-host}) [{to-port}]) | {to-address} | {to-host} | {to-interface}) | rule ...
rule — set rule operation time
Теперь можно использовать ее для включения NAT не только между интерфейсом и IP-адресом, но и между двумя интерфейсами. Например:
ip static Home ISP
Это будет работать, когда используется security-level public, хотя бы на одном из интерфейсов, чтобы работал SNAT, как указано в начале статьи.
Если interface или network соответствует интерфейсу с публичным уровнем безопасности (в настройках интерфейса в CLI стоит параметр security-level public), то будет выполняться трансляция адреса назначения (DNAT). Если to-address соответствует интерфейсу с публичным уровнем безопасности, то будет выполняться трансляция адреса источника (SNAT).