Межсетевой экран контрольной точки имеет два режима NAT: статический NAT (внутренний IP-адрес один к одному на внешний IP-адрес) и Hide NAT, который в Cisco называется «перегрузкой» и так далее.
Об этом не говорится ясно, но кажется, что статический NAT не меняет номера портов, только IP-адреса.
Hide NAT, напротив, изменяет исходный порт исходящего пакета на какой-то случайный «динамически назначаемый», а затем устанавливает правило в таблице, которое разрешает обратную трансляцию пакетов. Это правило удаляется при завершении соединения (TCP FIN, RST) или тайм-ауте. Это то, что обычно делают все современные устройства с поддержкой NAT.
У меня только один внешний IP-адрес, поэтому я должен использовать вариант Hide NAT. Однако я хочу немного его расширить, так как у меня внутри есть очень особенный хост, который запускает очень особую службу, которая не особенно любит, когда номер их исходного порта изменяется и выбирается случайным образом. Мне нужен стандартный Hide NAT, который использует для «динамического распределения» все порты, кроме одного (скажем, ничего не переводите в UDP 33333), и пакеты этой конкретной службы с этого конкретного порта должны всегда и только транслироваться в этот номер порта.
В Linux я легко делаю это с помощью следующих правил:
iptables -t nat -s MY-SPECIAL-HOST -p udp --sport MY-SPECIAL-SERVICE-PORT -j SNAT --to-source MY-WHITE-IP:MY-SPECIAL-SERVICE-PORT
iptables -t nat -s MY-LOCAL-NETWORK -p udp -j SNAT --to-source MY-WHITE-IP:10000-[MY-SPECIAL-SERVICE-PORT - 1]
iptables -t nat -s MY-LOCAL-NETWORK -j SNAT --to-source MY-WHITE-IP
(Я знаю, что ограничиваю это количество портов для исходящих разговоров UDP, это не проблема, поскольку фактический порт службы находится где-то в конце диапазона.)
Как добиться того же в КПП? У меня GAIA R77.10 ClusterXL с двумя участниками, если это необходимо.
Вы можете изменить порт со статическим NAT, источник и назначение. Просто посмотрите на вкладку NAT политики и слева находится исходный пакет (условие, которое должно совпадать для запуска перевода), а справа у вас есть переведенный пакет, в котором вы можете внести необходимые изменения. Итак, все, что вам нужно, это создать правило для вашего специального хоста со статическим NAT и второе правило со скрытым NAT для других вещей.