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