Dynamic Address-Only Source Translation
Configuring Dynamic Address-Only Source Translation in IPv4 Networks
In IPv4 networks, dynamic address translation (dynamic NAT) is a mechanism to dynamically translate the destination traffic without port mapping. To use dynamic NAT, you must specify a source pool name, which includes an address configuration.
To configure dynamic NAT in IPv4 networks:
The following example configures the translation type as dynamic-nat44.
[edit services] user@host# show service-set s1 { nat-rules rule-dynamic-nat44; interface-service { service-interface ms-0/1/0; } } nat { pool source-dynamic-pool { address 10.1.1.0/24; } rule rule-dynamic-nat44 { match-direction input; term t1 { from { source-address { 3.1.1.0/24; } } then { translated { destination-pool source-dynamic-pool; translation-type { dynamic-nat44; } } } } } } adaptive-services-pics { traceoptions { flag all; } }
The following configuration specifies that NAT is not performed
on incoming traffic from the source address 192.168.20.24/32 by providing a NAT rule term t0
that configures no-translation
. Dynamic NAT is performed on all other incoming
traffic, as configured by term t1
of the NAT rule. The no-translation
option is supported on MX Series routers with
MS-DPCs and on M Series routers with MS-100, MS-400, and MS-500 MultiServices
PICS. The no-translation
option is supported on MX Series routers with
MS-MPCs and MS-MICs starting in Junos OS release 15.1R1.
[edit services nat] pool my-pool { address-range low 10.10.10.1 high 10.10.10.16; port automatic; } rule src-nat { match-direction input; term t0 { from { source-address 192.168.20.24/32; } then { no-translation; } } term t1 { then { translated { translation-type dynamic-nat44; source-pool my-pool; } } } }
The following configuration performs NAT using the source prefix 20.20.10.0/24 without defining a pool.
[edit services nat] rule src-nat { match-direction input; term t1 { then { translation-type dynamic-nat44; source-prefix 20.20.10.0/24; } } }
The following configuration performs NAT using the destination prefix 20.20.10.0/32 without defining a pool.
[edit services nat] rule src-nat { match-direction input; term t1 { from { destination-address 10.10.10.10/32; then { translation-type dnat44; destination-prefix 20.20.10.0/24; } } } }
Example: Dynamic Source NAT as a Next-Hop Service
The following example shows dynamic-source NAT applied as a next-hop service:
[edit interfaces] ge-0/2/0 { unit 0 { family mpls; } } sp-1/3/0 { unit 0 { family inet; } unit 20 { family inet; } unit 32 { family inet; } } [edit routing-instances] protected-domain { interface ge-0/2/0.0; interface sp-1/3/0.20; instance-type vrf; route-distinguisher 10.58.255.17:37; vrf-import protected-domain-policy; vrf-export protected-domain-policy; routing-options { static { route 0.0.0.0/0 next-hop sp-1/3/0.20; } } } [edit policy-options] policy-statement protected-domain-policy { term t1 { then reject; } } [edit services] stateful-firewall { rule allow-all { match-direction input; term t1 { then { accept; } } } } nat { pool my-pool { address 10.58.16.100; port automatic; } rule hide-all { match-direction input; term t1 { then { translated { source-pool my-pool; translation-type napt-44; } } } } } service-set null-sfw-with-nat { stateful-firewall-rules allow-all; nat-rules hide-all; next-hop-service { inside-service-interface sp-1/3/0.20; outside-service-interface sp-1/3/0.32; } }
Example: Assigning Addresses from a Dynamic Pool for Static Use
The following configuration statically assigns a subset of addresses
that are configured as part of a dynamic pool (dynamic-pool
) to two separate static pools (static-pool
and static-pool2
).
[edit services nat] pool dynamic-pool { address 20.20.10.0/24; } pool static-pool { address-range low 20.20.10.10 high 10.20.10.12; } pool static-pool2 { address 20.20.10.15/32; } rule src-nat { match-direction input; term t1 { from { source-address 30.30.30.0/24; } then { translation-type dynamic-nat44; source-pool dynamic-pool; } } term t2 { from { source-address 10.10.10.2; } then { translation-type basic-nat44; source-pool static-pool; } } term t3 { from { source-address 10.10.10.10; } then { translation-type basic-nat44; source-pool static-pool2; } } }