User Tools

Site Tools


workbook:jno-332:332_nat

JN0-332: NAT

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

  • Identify the concepts, benefits and operation of NAT
    • NAT types
    • NAT/PAT processing
    • Address persistence
    • NAT proxy ARP
    • Configuration guidelines
  • Demonstrate knowledge of how to configure, monitor and troubleshoot NAT
    • NAT configuration steps
    • Monitoring and troubleshooting

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:

  • Static NAT - трансляция адрес в адрес, PAT не используется.
    Как правило используется когда надо прокинуть много портов из интернета в локалку или когда надо выпускать сервер из локалки всегда в один и тот же внешний ip адрес. Трансляция работает в обе стороны.
  • Source NAT - трансляция пула адресов в пул адрес (PAT не используется) или трансляция пула адресов в один адрес (PAT используется).
    Применяется когда надо выпустить локальные машины в интернет и при этом имеется ограниченное количество внешних адресов. После ната у пакета меняется адрес источника и еще может менять порт источника, трансляция работает только в одну сторону.
  • Destination NAT - трансляция одного внешнего адреса в один внутренний адрес. Применятся когда надо прокинуть только один порт к внутр. серверу, например tcp/80. После ната у пакета меняется адрес назначения и можно еще поменять порт назначения, трансляция работает только в одну сторону.

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

  • Static NAT
    {primary:node0}[edit security nat static]
    admin@srx650-master# show
    rule-set ST-NAT-FROM-UNT {
        from zone untrust;
        rule ST-NAT-FROM-UNT-R1-SNOM-VOIP {
            match {
                destination-address x.y.z.202/32;
            }
            then {
                static-nat {
                    prefix {
                        192.168.7.13/32;
                    }
                }
            }
        }
        rule ST-NAT-FROM-UNT-R2-VOIP {
            match {
                destination-address x.y.z.205/32;
            }
            then {
                static-nat {
                    prefix {
                        192.168.7.11/32;
                    }
                }
            }
        }
    }
    rule-set ST-NAT-FROM-MTS-VOIP {
        from interface reth0.282;
        rule ST-NAT-FROM-MTS-R1-SNOM-VOIP3 {
            match {
                destination-address 10.62.24.2/32;
            }
            then {
                static-nat {
                    prefix {
                        192.168.7.202/32;
                    }
                }
            }
        }
    }
    rule-set ST-NAT-FROM-RT-VOIP {
        from interface reth0.286;
        rule ST-NAT-FROM-RT-R1-SNOM-VOIP {
            match {
                destination-address 10.62.23.2/32;
            }
            then {
                static-nat {
                    prefix {
                        192.168.7.13/32;
                    }
                }
            }
        }
    }
    rule-set ST-NAT-FROM-TR {
        from zone trust;
        rule ST-NAT-FROM-TR-R1-FCIIT {
            match {
                source-address xx.yy.zz.12/32;
                destination-address 10.10.249.3/32;
            }
            then {
                static-nat {
                    prefix {
                        10.10.249.2/32;
                    }
                }
            }
        }
    }


    Если надо сделать STNAT или DNAT в адрес который не настроен на логическом интерфейсе srx, то надо включать proxy-arp.

    {primary:node0}[edit security nat]
    admin@srx650-master# top show interfaces reth0.264
    description VOIP-OUTSIDE;
    vlan-id 264;
    family inet {
        filter {
            output ACL_VOIP_IN;
        }
        address x.y.z.201/29;
    }
    ---
    {primary:node0}[edit security nat]
    admin@srx650-master# show proxy-arp
    interface reth0.264 {
        address {
            x.y.z.202/32;
            x.y.z.203/32;
            x.y.z.205/32;
        }
    }
  • Source NAT
    {primary:node0}[edit security nat source]
    admin@srx650-master# show
    pool SNAT-POOL-PX {
        address {
            x.y.z.227/32;
        }
    }
    ...
    rule-set PX-TO-UNTRUST {
        from zone px;
        to zone untrust;
        rule SRC-NAT-PX-TO-UNT-R1 {
            match {
                source-address xx.yy.zz.18/32;
                destination-address 0.0.0.0/0;
            }
            then {
                source-nat {
                    pool {
                        SNAT-POOL-PX;
                    }
                }
            }
        }
    }
    ----
    
    [edit security nat source]
    admin@nsk-01-srx2# show
    rule-set TRUST-TO-UNTRUST {
        from zone TRUST;
        to zone UNTRUST;
        rule SRC-NAT-TR-TO-UNT-R1 {
            match {
                source-address-name [ USER-NET SERV-NET ];
                destination-address 0.0.0.0/0;
            }
            then {
                source-nat {
                    interface;
                }
            }
        }
  • Destination NAT
    {primary:node0}[edit security nat destination]
    admin@srx650-master# show
    pool MGMT-SSH-ACCESS {
        address 192.168.7.9/32 port 22;
    }
    rule-set from-untrust {
        from zone untrust;
        rule svc-voip3-squid-access {
            match {
                source-address z.y.x.5/32;
                destination-address x.y.z.203/32;
                destination-port {
                    43276;
                }
            }
            then {
                destination-nat {
                    pool {
                        MGMT-SSH-ACCESS;
                    }
                }
            }
        }

NAT/PAT processing

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

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

Схема:

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

  • Правила STNAT и DNAT имеют преимущество над SNAT правилами.
  • Пулы адресов не должны пересекаться.
  • Если трафик подпадает под несколько rule-set, то применяется тот rule-set в котором более “узко” описаны критерии трафика.
  • Прорядок правил в rule-set имеет значение. Правила применяются сверху вниз до первого совпадения. Порядок правил можно менять командой “insert”.

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;
                }
            }
        }
    }
}

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

workbook/jno-332/332_nat.txt · Last modified: 2021/08/12 08:35 by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki