Table of Contents
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 правила нат срабатывают до первого совпадения в следующем порядке:
- Static NAT
- Destination NAT
- Reverse Static NAT - обратное, относительно “from zone untrust”, правило статической трансляции.
- 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; } } } } }