Table of Contents

JN0-332: NAT

Необходимые знания:

NAT types

NAT (Network address translation) - это технология которая позволяет транслировать ip адреса из приватного пула (RFC1918 - 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) в глобально маршрутизируемые адреса и обратно. Строго говоря можно любые адреса транслировать - приватные в приватные, публичные в публичные, это не играет большой роли.

PAT (Port address (?) translation) - это технология которая позволяет менять номера портов. Как правило чистый PAT не используется, его обычно применяют в связке с NAT.

Виды NAT:

Пример настройки:


NAT/PAT processing

При первичном прохождении пакета через Flow-module правила нат срабатывают до первого совпадения в следующем порядке:

  1. Static NAT
  2. Destination NAT
  3. Reverse Static NAT - обратное, относительно “from zone untrust”, правило статической трансляции.
  4. Source NAT

Схема:

Тезисно о првилах:


Address persistence

Когда для SNAT используются пулы адресов нет гарантии, что конкретный внутренний адрес всегда будет выходить с одним и тем же адресов из пула. Т.е., например, к одному и тому же сайту (по tcp/80) можно будет выйти c двух разных ip адресов, это не оч. хорошо.
Что бы этого избежать используется команда “address-persistent”.

admin@nsk-01-srx2# show source
address-persistent;
rule-set TRUST-TO-UNTRUST {
...

Такой проблемы нет когда SNAT делается в адрес интерфейса.


NAT proxy ARP

Прокси arp настраивается для того, что бы сообщить маршрутизатору, что он должен отвечать на широковещательные arp запросы (сосдений маршрутизатор ) для ip адресов которые непосредственно на нем не настроены.

У нас есть интерфейс reth0.265 на котором настроен адрес 1.2.3.225.

{primary:node0}[edit security nat proxy-arp]
admin@srx650-master# top show interfaces reth0 unit 265
vlan-id 265;
family inet {
    address 1.2.3.225/29;
}

{primary:node0}[edit security nat proxy-arp]
admin@srx650-master# run show interfaces reth0.265
  Logical interface reth0.265 (Index 89) (SNMP ifIndex 669)
...
      Addresses, Flags: Is-Preferred Is-Primary
        Destination: 1.2.3.224/29, Local: 1.2.3.225, Broadcast: 1.2.3.231

Через этот интерфейс доступна сеть 1.2.3.224/29, srx будет отвечать на arp запросы для адреса 1.2.3.225 и не будет отвечать на запросы для адресов 1.2.3.[226..230] т.к. это не его адреса.
После того как настроили SNAT или DNAT на, например, адрес 1.2.3.226, srx-су надо сообщить что теперь надо отвечать на arp запросы для этого адреса.

{primary:node0}[edit security nat proxy-arp]
admin@srx650-master# show
interface reth0.265 {
    address {
        1.2.3.226/32;
        1.2.3.227/32;
        1.2.3.228/32;
    }
}

При этом в таблице маршрутизации появляется статический роут, остальные адреса все так же доступны через директ роут.

{primary:node0}[edit security nat proxy-arp]
admin@srx650-master# run show route 1.2.3.226

inet.0: 451 destinations, 502 routes (451 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

1.2.3.226/32  *[Static/1] 7w0d 20:57:37
                      Receive

{primary:node0}[edit security nat proxy-arp]
admin@srx650-master# run show route 1.2.3.229

inet.0: 451 destinations, 502 routes (451 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

1.2.3.224/29  *[Direct/0] 7w0d 20:58:21
                    > via reth0.265

Configuration guidelines

Обработка изменений в правилах

Если в правила ната или пулы адресов были внесены какие-либо изменения, то все сессии в которых участрует нат при комите будут дропнуты.

Емкость PAT

~64000 сессий.

Отключение PAT при SNAT

PAT отключается командой “port no-translation” на уровне [edit security nat source pool POOL-NAME], при этом есть риск занять все адреса из выделенного пула.
Что бы этого избежать можно сказать srx использовать для SNAT адрес интрефеса при исчерпании пула, делается это так же на уровне [edit security nat source pool POOL-NAME] командой “overflow-pool interface”.

{primary:node0}[edit security nat source]
admin@srx650-master# show
pool SNAT-POOL-TEST {
    address {
        1.2.3.1/32 to 1.2.3.27/32;
    }
    port no-translation;      
    overflow-pool interface;
}
...
rule-set TRUST-TO-UNTRUST {
    from zone trust;
    to zone untrust;
    rule SRC-NAT-TR-TO-UNT-RULE-TEST {
        match {
            source-address 10.30.30.128/25;
            destination-address 0.0.0.0/0;
        }
        then {
            source-nat {
                pool {
                    SNAT-POOL-TEST;
                }
            }
        }
    }
}

Оповещения о исчерпании пула адресов

[edit security nat source]
admin@bluebox# show
...
    pool-utilization-alarm raise-threshold 70 clear-threshold 50;
...

Если использовали 70% пула, srx посылает snmp trap с алармом. Как только упали ниже 50%, srx snmp trap о нормализации ситуации.
Если не задать clear-threshold, то он по дефорлу будте составлять 80% от значения raise-threshold, в данном случае clear-threshold по дефолту будет равняться 56% (70*0.8).

SNAT со сдвигом

Если в критерии, в качестве источника, мы указали “широкую” сетку, но при этом хотим что бы SNAT работал начиная с определенного внутреннего адреса надо дать команду “host-address-base” и указать с какого адреса начинать.

{primary:node0}[edit security nat source]
admin@srx650-master# show
pool SNAT-POOL-TEST {
    address {
        1.2.3.1/32 to 1.2.3.27/32;
    }
    host-address-base 10.30.30.150/32
}
...
rule-set TRUST-TO-UNTRUST {
    from zone trust;
    to zone untrust;
    rule SRC-NAT-TR-TO-UNT-RULE-TEST {
        match {
            source-address 10.30.30.128/25;
            destination-address 0.0.0.0/0;
        }
        then {
            source-nat {
                pool {
                    SNAT-POOL-TEST;
                }
            }
        }
    }
}

Полезные ссылки