Dell Networking SONiC:网络地址转换 (NAT)
摘要: 本文介绍 Dell Networking SONiC 中的网络地址转换 (NAT)。本文使用运行 Dell SONiC 4.1 的交换机。
说明
|
前提条件
标准接口命名用于演示概念。请参阅戴尔文章 202172 Dell Networking S 系列:基本接口配置 - SONiC 4.0 ,了解有关接口命名的更多信息 |
指数
简介
网络地址转换支持将公用 IP 地址分配给访问网络外部资源的设备的过程。NAT 可节省本地网络中的 IP 地址使用量。
网络中不需要 NAT 即可在专用 IP 地址之间路由流量。NAT 网关在与远程设备通信时,会将本地网络设备的专用 IP 地址转换为全局唯一的公用 IP 地址。
启用 NAT
要在 NAT 配置模式下启用 NAT 并输入 NAT 配置命令,请执行以下操作:- 要启用 NAT:
sonic(config-nat)# enable admin@DELLSONiC:~$ sonic-cli DELLSONiC# configure terminal DELLSONiC(config)# nat DELLSONiC(config-nat)# enable
-
要禁用 NAT:
DELLSONiC(config-nat)# no enable
NAT 配置顺序
启用 NAT 后,可以按任意顺序完成以下步骤:- 配置 NAT 分区
- 添加静态 NAT 条目
- 使用 L4 端口添加静态 NAT 条目
- 创建 NAT 地址池
- 配置 NAT 绑定
- 配置动态 NAT 超时
创建 NAT 分区
要在 L3 接口上配置 NAT 分区,以便在数据包遍历已配置接口上的分区时对数据包执行 NAT 地址转换。可以在任何配置有 IP 地址的以太网、VLAN、端口通道或环回接口上配置 NAT 分区。NAT 分区编号的范围为 0 到 3。数据包的源分区是接收数据包的入站接口的分区。数据包的目标分区是来自目标地址 L3 路由查找的 L3 下一跳接口的分区。
- 在源接口上输入的入站流量使用静态目标网络地址转换 (DNAT) 转换进行 L3 转发。
- 在目标接口上发送的出站流量将动态转换为源网络地址转换 (SNAT)。
- 默认情况下,L3 接口位于 NAT 分区 0 中。NAT 分区 0 被视为内部分区。
- 要创建 NAT 分区:
sonic(conf-if-interface)# nat-zone <0..3> admin@DELLSONiC:~$ sonic-cli DELLSONiC# configure terminal DELLSONiC (config)# interface Eth1/2 DELLSONiC (conf-if-Eth1/2)# ip address 20.20.20.20/24 DELLSONiC (conf-if-Eth1/2)# nat-zone 1 DELLSONiC (conf-if-Eth1/2)# exit DELLSONiC (config)# interface Vlan 5 DELLSONiC (conf-if-Vlan5)# ip address 23.23.23.23/24 DELLSONiC (conf-if-Vlan5)# nat-zone 1 DELLSONiC (conf-if-Vlan5)# exit DELLSONiC (config)# interface PortChannel 2 DELLSONiC (conf-if-po2)# ip address 25.25.25.25/24 DELLSONiC (conf-if-po2)# nat-zone 1 DELLSONiC (conf-if-po2)# exit DELLSONiC (config)# interface Loopback 1 DELLSONiC (conf-if-lo1)# ip address 10.10.10.10/32 DELLSONiC (conf-if-lo1)# nat-zone 2
-
删除 NAT 分区:
sonic(conf-if-interface)# no nat-zone <0..3> DELLSONiC (conf-if-lo1)# no nat-zone 2
创建静态 NAT 条目。
要通过互联网在网络外部进行通信,用户可以手动配置静态 NAT 条目,以将本地 IP 地址替换为全局唯一 IP 地址。可以使用或不使用 L4 端口转换创建静态 NAT。具有 L4 端口引用的静态 NAT 可以将本地 IP 地址和 TCP 或 UDP 端口号转换为具有 TCP 或 UDP 端口号的全局 IP 地址。- 要创建不带 L4 端口转换的静态 NAT,请执行以下操作:
sonic(conf-nat)# static basic global-ip local-ip [snat | dnat] [twice_nat_id value]
- 源 NAT (SNAT) — 将本地网络中的源 IP 地址转换为发送到外部网络的全局 IP 地址。外部网络中的远程设备使用全局地址访问本地设备。
- 目标 NAT (DNAT) — 将数据包中的目标 IP 地址(从外部网络接收并遍历本地网络)转换为本地网络中使用的本地 IP 地址。DNAT 是默认值。
- twice_nat_id值 — 对具有相同值的静态条目执行源和目标 IP 地址的地址转换。
admin@DELLSONiC:~$ sonic-cli DELLSONiC# configure terminal DELLSONiC(config)# nat DELLSONiC(config-nat)# static basic 125.4.4.4 12.1.1.1 DELLSONiC(config-nat)# static basic 100.100.100.100 15.15.15.15 snat twice-nat-id 5 DELLSONiC(config-nat)# static basic 200.200.200.5 17.17.17.17 dnat twice-nat-id 5
- 要使用 L4 端口转换创建静态 NAT,请执行以下操作:
sonic(conf-nat)# static {tcp | udp} global-ip global-port local-ip local-port [snat | dnat] [twice_nat_id value]
- 源 NAT (SNAT) — 将本地网络中的源 IP 地址和 TCP/UDP 端口转换为全局 IP 地址和发送到外部网络的 TCP/UDP 端口。外部网络中的远程设备使用全局地址和 L4 端口来访问本地设备。
- 目标 NAT (DNAT) — 将从外部网络接收的数据包中的目标 IP 地址和 TCP/UDP 端口转换为本地 IP 地址和本地网络中使用的 TCP/UDP 端口。DNAT 是默认值。
- twice_nat_id值 — 对具有相同 ID 值的静态条目执行源和目标 IP 地址的地址转换。
admin@DELLSONiC:~$ sonic-cli DELLSONiC# configure terminal DELLSONiC(config)# nat DELLSONiC(config-nat)# static udp 148.56.7.7 8991 10.11.1.12 2000 DELLSONiC(config-nat)# static tcp 123.3.4.1 901 11.11.1.1 1000 DELLSONiC(config-nat)# static tcp 65.55.46.6 106 20.0.0.6 206 dnat twice-nat-id 200 DELLSONiC(config-nat)# static tcp 65.55.45.5 100 20.0.0.5 200 snat twice-nat-id 200
- 删除 NAT 静态条目:
sonic(conf-nat)# no static basic global-ip
sonic(conf-nat)# no static {tcp | udp} global-ip global-port
DELLSONiC(config-nat)# no static basic 125.4.4.4
DELLSONiC(config-nat)# no static basic 100.100.100.100
DELLSONiC(config-nat)# no static basic 200.200.200.5
DELLSONiC(config-nat)# no static udp 148.56.7.7 8991
DELLSONiC(config-nat)# no static tcp 123.3.4.1 901
DELLSONiC(config-nat)# no static tcp 65.55.46.6 106
DELLSONiC(config-nat)# no static tcp 65.55.45.5 100
静态 NAT 示例
下面的示例显示,网络 A 使用启用了 NAT 的路由器。当 LAN 分段上的主机 100.100.100.101 向外部目标 (200.200.200.201) 发送流量时,流量将发送到 NAT 路由器,以从 Internet 路由到主机 200.200.200.201。NAT 路由器将源 IP (SRC IP) 100.100.100.101 转换为新的源 IP 1.1.1.2。NAT 路由器正在执行源网络地址转换 (SNAT),其中 100.100.100.101 的内部专用地址转换为面向外部的地址 1.1.1.2。NAT 路由器对从主机 200.200.200.201 返回到网络 A 到主机 100.100.100.101 的返回流量执行目标网络地址转换 (DNAT)。
- 配置 NAT 分区:
admin@DELLSONiC:~$ sonic-cli DELLSONiC# configure terminal DELLSONiC (config)# interface Eth1/10 DELLSONiC (conf-if-Eth1/10)# ip address 100.100.100.1/24 DELLSONiC (conf-if-Eth1/10)# nat-zone 0 DELLSONiC (conf-if-Eth1/10)# exit DELLSONiC (config)# interface Eth1/20 DELLSONiC (conf-if-Eth1/20)# ip address 1.1.1.2/30 DELLSONiC (conf-if-Eth1/20)# nat-zone 1 DELLSONiC (conf-if-Eth1/20)# exit
-
启用 NAT:
admin@DELLSONiC:~$ sonic-cli DELLSONiC# configure terminal DELLSONiC(config)# nat DELLSONiC(config-nat)# enable
- 创建不带 L4 端口转换的静态 NAT:
admin@DELLSONiC:~$ sonic-cli DELLSONiC# configure terminal DELLSONiC(config)# nat DELLSONiC(config-nat)# static basic 1.1.1.2 100.100.100.101
创建动态 NAT。
动态 NAT 将本地地址替换为来自全局地址池的地址。
当专用网络上的多个用户访问互联网时,动态转换非常有用。
配置 NAT 地址池
通过定义全局 IP 地址范围以及用于本地地址转换的 TCP/UDP 端口范围(可选)来配置可用全局地址池。
- 创建 NAT 地址池:
sonic(conf-nat)# pool pool-name global-ip-range [global-port-range]
- 以 ip-address-ip-address 格式输入全局 IP 地址范围。
- 以端口号-端口号格式输入 TCP/UDP 端口号范围。
admin@DELLSONiC:~$ sonic-cli DELLSONiC# configure terminal DELLSONiC(config)# nat DELLSONiC(config-nat)# pool Pool1 19.19.19.19 DELLSONiC(config-nat)# pool Pool2 20.0.0.7 1024-65535 DELLSONiC(config-nat)# pool Pool3 65.55.45.10-65.55.45.15 500-1000
- 删除 NAT 地址池:
sonic(conf-nat)# no pool pool-name DELLSONiC(config-nat)# no pool Pool1
- 删除所有 NAT 地址池:
sonic(conf-nat)# no pools
配置 NAT 绑定
- 创建 NAT 绑定到 NAT 地址池:
sonic(conf-nat)# binding binding-name pool-name [acl-name] [snat | dnat] [twice_nat_id value]
- SNAT — 将源 IP 地址转换为池中的全局 IP 地址。SNAT 是 NAT 绑定中的默认设置。
- DNAT — 将目标 IP 地址转换为池中的全局 IP 地址。
- twice_nat_id 值 — 使用具有相同 ID 值的静态条目的地址池在源和目标 IP 地址上执行地址转换。
- acl-name — 要限制全局 NAT 地址池中的 IP 地址,您可以使用访问控制列表 (ACL)。允许语句允许在允许规则中配置属性的 IP 地址。拒绝语句拒绝在拒绝规则中配置属性的数据包。在 ACL 中, do_not_nat 条目允许路由数据包而不是翻译数据包。
admin@DELLSONiC:~$ sonic-cli DELLSONiC# configure terminal DELLSONiC(config)# nat DELLSONiC(config-nat)# binding Bind1 Pool1 10_ACL_IPV4 DELLSONiC(config-nat)# binding Bind2 Pool2 12_ACL_IPV4 snat twice-nat-id 25 DELLSONiC(config-nat)# binding Bind3 Pool3 15_ACL_IPV4 dnat twice-nat-id 25
- 删除 NAT 绑定:
sonic(conf-nat)# no binding binding-name DELLSONiC(config-nat)# no binding Bind1
- 删除所有 NAT 绑定:
sonic(conf-nat)# no bindings
配置动态 NAT 超时
默认情况下,只有动态地址转换配置在没有活动流量
的 10 分钟(600 秒)后超时 静态 NAT 条目没有超时。要更改动态 NAT 超时值,请指定新值(以秒为单位)(300 到 432000)。
- 修改动态地址转换配置超时:
sonic(conf-nat)# timeout <300..432000> admin@DELLSONiC:~$ sonic-cli DELLSONiC# configure terminal DELLSONiC(config)# nat DELLSONiC(config-nat)# timeout 1200
也可以调整 L4 UDP 和 TCP NAT 条目的 NAT 条目超时。
要更改用于地址转换的 TCP 超时,请输入新的超时值(以秒为单位)(300 到 432000;默认值为 86400)。要更改用于地址转换的 UDP 超时,请输入新值(以秒为单位)(120 到 600;默认值为 300)。
- 修改动态地址转换配置 UDP/TCP 超时:
sonic(conf-nat)# udp-timeout <120..600> sonic(conf-nat)# tcp-timeout <300..432000> admin@DELLSONiC:~$ sonic-cli DELLSONiC# configure terminal DELLSONiC(config)# nat DELLSONiC(config-nat)# udp-timeout 600 DELLSONiC(config-nat)# tcp-timeout 66460
动态 NAT 示例
下面的示例显示,网络 A 使用启用了 NAT 的路由器。当 LAN 分段上的主机 100.100.100.101 向外部目标 (200.200.200.201) 发送流量时,流量将发送到 NAT 路由器,以从 Internet 路由到主机 200.200.200.201。NAT 路由器将源 IP (SRC IP) 100.100.100.101 转换为新的源 IP 1.1.1.2。NAT 路由器正在执行源网络地址转换 (SNAT),其中 100.100.100.101 的内部专用地址转换为面向外部的地址 1.1.1.2。NAT 路由器对从主机 200.200.200.201 返回到网络 A 到主机 100.100.100.101 的返回流量执行目标网络地址转换 (DNAT)。与 PC3 的 PC2 通信会发生相同的 NAT 转换。

图 2:动态网络地址转换示例
- 配置 NAT 分区:
admin@DELLSONiC:~$ sonic-cli DELLSONiC# configure terminal DELLSONiC (config)# interface Vlan 100 DELLSONiC (conf-if-Vlan100)# ip address 100.100.100.1/24 DELLSONiC (conf-if-Vlan100)# nat-zone 0 DELLSONiC (conf-if-Vlan100)# exit DELLSONiC (config)# interface Vlan 300 DELLSONiC (conf-if-Vlan300)# ip address 300.300.300.1/24 DELLSONiC (conf-if-Vlan300)# nat-zone 0 DELLSONiC (conf-if-Vlan300)# exit DELLSONiC (config)# interface Eth1/20 DELLSONiC (conf-if-Eth1/20)# ip address 1.1.1.2/30 DELLSONiC (conf-if-Eth1/20)# nat-zone 1 DELLSONiC (conf-if-Eth1/20)# exit
- 启用 NAT:
admin@DELLSONiC:~$ sonic-cli DELLSONiC# configure terminal DELLSONiC(config)# nat DELLSONiC(config-nat)# enable
- 创建 NAT 池:
admin@DELLSONiC:~$ sonic-cli DELLSONiC# configure terminal DELLSONiC(config)# nat DELLSONiC(config-nat)# pool Pool1 1.1.1.2
- 创建 NAT 绑定:
admin@DELLSONiC:~$ sonic-cli DELLSONiC# configure terminal DELLSONiC(config)# nat DELLSONiC(config-nat)# binding Bind1 Pool1
查看 NAT 配置
使用这些命令可显示 NAT 配置和操作以及 NAT 表条目。
- 查看 NAT 转换表:
S5296F-Mid-SPINE# show nat translations Protocol Source Destination Translated Source Translated Destination ---------------------------------------------------------------------------------------------------------------------------- all 10.32.20.3 ---- 100.100.100.1 ---- all ---- 100.100.100.1 ---- 10.32.20.3 udp ---- 10.32.20.2:311 ---- 100.100.100.100:63 udp 100.100.100.100:63 ---- 10.32.20.2:311 ----
- 要清除 NAT 转换条目:
DELLSONiC# clear nat translations
- 查看 NAT 转换统计信息:
DELLSONiC# show nat statistics ----------------------------------------------------------------------------- Protocol Source Destination Packets Bytes ----------------------------------------------------------------------------- udp 100.100.100.100:63 --- 15522575563164 993444836042496
- 查看 NAT 和 NAT 配置:
DELLSONiC# show nat config static --------------------------------------------------------------------------------------------------------------------- Nat Type IP Protocol Global IP Global L4 Port Local IP Local L4 Port Twice-Nat Id ---------------------------------------------------------------------------------------------------------------------------- dnat all 100.100.100.1 ---- 10.32.20.3 ---- ----
- 查看 NAT 池:
DELLSONiC# show nat config pool Pool Name Global IP Range Global L4 Port Range ----------------------------------------------------------------------------- POOL1 100.100.100.2 1024-6034 POOL2 100.100.100.3-100.100.100.4 ----
- 查看 NAT 绑定配置:
DELLSONiC# show nat config bindings Binding Name Pool Name Access-List Nat Type Twice-Nat Id ----------------------------------------------------------------------------- EXT1 POOL1 ---- ---- --- EXT2 POOL2 NAT_IPS ---- ---
- 查看全局 NAT 配置:
DELLSONiC# show nat config globalvalues Admin Mode : enabled Global Timeout : 600 secs TCP Timeout : 86400 secs UDP Timeout : 300 secs
- 查看 L3 接口分区:
DELLSONiC# show nat config zones Port Zone ------------------------------------------------- Eth1/1 2 PortChannel12 2 Vlan200 1 Loopback1 1
-
查看 NAT 转换计数:
DELLSONiC# show nat translations count Static NAT Entries ................. 2 Static NAPT Entries ................. 0 Dynamic NAT Entries ................. 0 Dynamic NAPT Entries ................. 2 Static Twice NAT Entries ................. 0 Static Twice NAPT Entries ................. 0 Dynamic Twice NAT Entries ................. 0 Dynamic Twice NAPT Entries ................ 0 Total SNAT/SNAPT Entries ................ 2 Total DNAT/DNAPT Entries ................ 2 Total Entries .......................... 4