16 KiB
NAPT
一、IP & Routing
-
PC、Client、Server
-
AR1
[AR1]int g0/0/0 [AR1-GigabitEthernet0/0/0]ip add 192.168.1.254 24 [AR1-GigabitEthernet0/0/0]int g0/0/1 [AR1-GigabitEthernet0/0/1]ip add 100.1.1.1 29 [AR1-GigabitEthernet0/0/1]quit [AR1]ip route-static 0.0.0.0 0 100.1.1.2
-
IPX-dx
[ISP-dx]int g0/0/0 [ISP-dx-GigabitEthernet0/0/0]ip add 100.1.1.2 29 [ISP-dx-GigabitEthernet0/0/0]int g0/0/1 [ISP-dx-GigabitEthernet0/0/1]ip add 200.1.1.254 24
二、NAPT(单一公网地址)
1、配置
-
AR1
[AR1]acl 2000 [AR1-acl-basic-2000]rule 10 permit source 192.168.1.0 0.0.0.255 [AR1-acl-basic-2000]quit [AR1]nat address-group 1 100.1.1.3 100.1.1.3 //单一公网地址 [AR1]int g0/0/1 [AR1-GigabitEthernet0/0/1]nat outbound 2000 address-group 1
解析:
见
0902_动态NAT.md
2、测试
-
PC PING Server
PC>ping 200.1.1.1 Ping 200.1.1.1: 32 data bytes, Press Ctrl_C to break From 200.1.1.1: bytes=32 seq=1 ttl=253 time=63 ms From 200.1.1.1: bytes=32 seq=2 ttl=253 time=78 ms From 200.1.1.1: bytes=32 seq=3 ttl=253 time=62 ms From 200.1.1.1: bytes=32 seq=4 ttl=253 time=47 ms From 200.1.1.1: bytes=32 seq=5 ttl=253 time=63 ms --- 200.1.1.1 ping statistics --- 5 packet(s) transmitted 5 packet(s) received 0.00% packet loss round-trip min/avg/max = 47/62/78 ms
-
Client 【success】
多访问几次HTTP服务
-
AR1
[AR1]dis nat session all //显示NAT会话表
<AR1>dis nat session all NAT Session Table Information: Protocol : TCP(6) SrcAddr Port Vpn : 192.168.1.3 520 DestAddr Port Vpn : 200.1.1.1 20480 NAT-Info New SrcAddr : 100.1.1.3 New SrcPort : 10241 New DestAddr : ---- New DestPort : ---- Protocol : TCP(6) SrcAddr Port Vpn : 192.168.1.3 1032 DestAddr Port Vpn : 200.1.1.1 20480 NAT-Info New SrcAddr : 100.1.1.3 New SrcPort : 10243 New DestAddr : ---- New DestPort : ---- Protocol : TCP(6) SrcAddr Port Vpn : 192.168.1.3 776 DestAddr Port Vpn : 200.1.1.1 20480 NAT-Info
解析: (以第一块信息为例)
-
NAT会话表的信息提供了关于当前活跃的NAT会话的详细信息。以下是输出内容的解释:
-
Protocol: 传输控制协议(TCP),其协议号为6。
-
SrcAddr Port Vpn: 源地址和源端口号,以及VPN实例。在这里,源地址是192.168.1.3,源端口号是520。
-
DestAddr Port Vpn: 目的地址和目的端口号,以及VPN实例。这里的目的地址是200.1.1.1,目的端口号是20480。
在 NAT-Info 部分,显示了NAT转换后的信息:
- New SrcAddr: 转换后的源地址,这里是100.1.1.3,这是地址组1中配置的公网IP地址。
- New SrcPort: 转换后的源端口号,这里是10241。这表明源端口号也发生了转换,这在NAT过程中是常见的,称为端口映射(Port Mapping)或端口转发(Port Forwarding)。
- New DestAddr 和 New DestPort: 目的地址和目的端口号在NAT转换过程中通常保持不变,因此这里显示为"----"。
-
这意味着来自192.168.1.3的源地址和端口号520的数据包在经过NAT转换后,会使用新的源地址100.1.1.3和新的端口号10241去访问目的地址200.1.1.1的端口号20480。这种转换允许内部网络中的主机通过公网IP地址访问外部网络。
-
三、NAPT(复数公网地址)
1、配置
-
AR1
删除之前的配置信息
[AR1]int g0/0/1 [AR1-GigabitEthernet0/0/1]undo nat outbound 2000 address-group 1 [AR1-GigabitEthernet0/0/1]quit [AR1]undo acl 2000 [AR1]undo nat address-group 1
-
AR1
[AR1]acl 2000 [AR1-acl-basic-2000]rule 10 permit source 192.168.1.0 0.0.0.255 [AR1-acl-basic-2000]quit [AR1]nat address-group 1 100.1.1.3 100.1.1.5 //复数公网地址 [AR1]int g0/0/1 [AR1-GigabitEthernet0/0/1]nat outbound 2000 address-group 1
解析:
[AR1]nat address-group 1 100.1.1.3 100.1.1.5
:创建或修改编号为1的NAT地址组将包含从100.1.1.3到100.1.1.5的IP地址范围
2、测试
-
AR1
<AR1>dis nat session all NAT Session Table Information: Protocol : TCP(6) SrcAddr Port Vpn : 192.168.1.5 264 DestAddr Port Vpn : 200.1.1.1 20480 NAT-Info New SrcAddr : 100.1.1.3 New SrcPort : 10240 New DestAddr : ---- New DestPort : ---- Protocol : TCP(6) SrcAddr Port Vpn : 192.168.1.4 264 DestAddr Port Vpn : 200.1.1.1 20480 NAT-Info New SrcAddr : 100.1.1.5 New SrcPort : 10250 New DestAddr : ---- New DestPort : ---- Protocol : TCP(6) SrcAddr Port Vpn : 192.168.1.3 2568 DestAddr Port Vpn : 200.1.1.1 20480 NAT-Info New SrcAddr : 100.1.1.4 New SrcPort : 10244 New DestAddr : ---- New DestPort : ----
四、Easy IP(网段内无冗余IP)
网段 | 网络地址 | 可用主机地址 | 广播地址 | 子网掩码 |
---|---|---|---|---|
100.1.1.0 /30 | 100.1.1.0 | 100.1.1.1 && 100.1.1.2 | 100.1.1.3 | 255.255.255.252 |
1、配置
-
重启AR1,ISP-dx
-
AR1
// IP [AR1]int g0/0/0 [AR1-GigabitEthernet0/0/0]ip add 192.168.1.254 24 [AR1-GigabitEthernet0/0/0]int g0/0/1 [AR1-GigabitEthernet0/0/1]ip add 100.1.1.1 30 [AR1-GigabitEthernet0/0/1]quit // Routing [AR1]ip route-static 0.0.0.0 0 100.1.1.2 // ACL [AR1]acl 2000 [AR1-acl-basic-2000]rule 10 permit source 192.168.1.0 0.0.0.255 [AR1-acl-basic-2000]quit // NAPT [AR1]int g0/0/1 [AR1-GigabitEthernet0/0/1]nat outbound 2000
-
IPX-dx
[ISP-dx]int g0/0/0 [ISP-dx-GigabitEthernet0/0/0]ip add 100.1.1.2 30 [ISP-dx-GigabitEthernet0/0/0]int g0/0/1 [ISP-dx-GigabitEthernet0/0/1]ip add 200.1.1.254 24
2、测试
-
AR1
<AR1>dis nat session all
五、NAT-Server(NAT服务器映射)
1、配置
-
通配
-
重启AR1,ISP-dx
-
AR1
// IP [AR1]int g0/0/0 [AR1-GigabitEthernet0/0/0]ip add 192.168.1.254 24 [AR1-GigabitEthernet0/0/0]int g0/0/1 [AR1-GigabitEthernet0/0/1]ip add 100.1.1.1 29 [AR1-GigabitEthernet0/0/1]quit // Routing [AR1]ip route-static 0.0.0.0 0 100.1.1.2 // ACL [AR1]acl 2000 [AR1-acl-basic-2000]rule 10 permit source 192.168.1.0 0.0.0.255 [AR1-acl-basic-2000]quit // NATP [AR1]nat address-group 1 100.1.1.3 100.1.1.5 [AR1]int g0/0/1 [AR1-GigabitEthernet0/0/1]nat outbound 2000 address-group 1
-
ISP-dx
[ISP-dx]int g0/0/0 [ISP-dx-GigabitEthernet0/0/0]ip add 100.1.1.2 29 [ISP-dx-GigabitEthernet0/0/0]int g0/0/1 [ISP-dx-GigabitEthernet0/0/1]ip add 200.1.1.254 24
-
-
NAT-Server
-
AR1
[AR1]int g0/0/1 [AR1-GigabitEthernet0/0/1]nat server protocol tcp global 100.1.1.6 80 inside 192.168.1.50 80
解析:
nat server
:这是开始配置NAT服务器映射的命令。protocol tcp
:指定映射的协议类型为TCP(传输控制协议),这是用于大多数网络服务的协议,如HTTP、HTTPS、FTP等。global 100.1.1.6 80
:指定映射到公网的IP地址和端口号。这里,公网IP地址是100.1.1.6,端口号是80。这意味着从外部网络访问100.1.1.6的TCP端口80时,请求将被转发到内部网络。inside 192.168.1.50 80
:指定内部网络的IP地址和端口号。这里,内部服务器的IP地址是192.168.1.50,端口号也是80。这意味着内部服务器正在使用TCP端口80提供服务。
这条命令配置了一个NAT服务器映射,它将外部网络对公网IP地址100.1.1.6的TCP端口80的访问请求映射到内部网络中IP地址为192.168.1.50的服务器的TCP端口80。这样,外部网络用户就可以通过访问100.1.1.6:80来访问位于内部网络的服务器192.168.1.50:80上的服务。这种配置通常用于将内部的服务器(如Web服务器)暴露给外部网络,同时隐藏内部网络的拓扑结构。
-
2、测试
3、拓展 - 映射ICMP协议
-
AR1
[AR1]int g0/0/1 [AR1-GigabitEthernet0/0/1]nat server protocol icmp global 100.1.1.6 inside 192.168.1.50
六、TCP端口的NAT映射
1、配置
-
在
五、NAT-Server(NAT服务器映射)
的环境下 -
AR1
[AR1]int g0/0/1 [AR1-GigabitEthernet0/0/1]nat server protocol tcp global 100.1.1.6 6969 inside 192.168.1.100 80 [AR1-GigabitEthernet0/0/1]nat server protocol tcp global 100.1.1.6 21 inside 192.168.1.100 21
解析:
-
[AR1-GigabitEthernet0/0/1]nat server protocol tcp global 100.1.1.6 6969 inside 192.168.1.100 80
nat server
:表示这是一条NAT服务器配置命令。protocol tcp
:指定要转换的协议类型为TCP。global 100.1.1.6 6969
:指定全局地址和端口号。这里的全局地址是100.1.1.6,端口号是6969。全局地址是公网地址,用于在互联网上标识这台设备。inside 192.168.1.100 80
:指定内部地址和端口号。这里的内部地址是192.168.1.100,端口号是80。内部地址通常是局域网地址,不需要在互联网上公开。
这条命令的作用是将内部网络中的
192.168.1.100
主机的80端口映射到公网地址100.1.1.6
的6969端口。这样,外部网络中的用户可以通过访问100.1.1.6:6969
来访问内部网络的192.168.1.100:80
服务。 -
[AR1-GigabitEthernet0/0/1]nat server protocol tcp global 100.1.1.6 21 inside 192.168.1.100 21
- 这条命令与上一条命令类似,也是配置NAT服务器。
global 100.1.1.6 21
:这次将100.1.1.6的21端口映射到内部网络。inside 192.168.1.100 21
:内部网络的192.168.1.100主机的21端口。
这条命令的作用是将内部网络中的
192.168.1.100
主机的21端口映射到公网地址100.1.1.6
的21端口。这样,外部网络中的用户可以通过访问100.1.1.6:21
来访问内部网络的192.168.1.100:21
服务,通常这个端口用于FTP服务。
总结:这两条命令都是在路由器上配置了TCP端口的NAT映射,使得内部网络的服务可以对外提供服务,同时隐藏了内部网络的真实地址。
-
2、测试
七、ALG(应用层网关)
1、配置
-
AR1
[AR1]nat alg ftp enable [AR1]nat alg all enable
解析:
-
[AR1]nat alg ftp enable
- 这条命令启用了FTP协议的ALG功能。
nat alg ftp
:指定要配置的是FTP协议的ALG。enable
:启用FTP协议的ALG功能。
FTP协议的ALG特别重要,因为FTP在数据传输时会使用动态端口。当FTP客户端发起一个连接时,它会先通过21端口建立控制连接,然后在传输数据时,FTP服务器会告诉客户端使用哪个端口来建立数据连接。由于这个数据连接端口是动态分配的,如果防火墙没有正确配置,它可能会阻止数据传输。启用FTP ALG后,路由器能够理解FTP协议,自动为数据连接打开必要的端口,从而允许FTP数据传输穿越NAT。
-
[AR1]nat alg all enable
- 这条命令启用了所有支持的应用层网关(ALG)功能。
nat alg all
:指定要配置的是所有支持的应用层协议的ALG。enable
:启用所有支持的ALG功能。
当执行这条命令时,路由器将为所有支持的应用层协议启用ALG功能。这包括但不限于FTP、SIP、H.323等协议。启用所有ALG功能可以确保各种应用层协议都能在NAT环境下正常工作,但这也可能带来额外的性能开销,因为路由器需要解析和监控更多的协议数据。
需要注意的是,虽然ALG可以提高网络应用的兼容性和可用性,但它们也可能引入安全风险,因为ALG需要解析应用层的数据。如果ALG的实现不完善,攻击者可能会利用这些缺陷来绕过安全策略或发动攻击。因此,在启用ALG之前,应仔细考虑网络的安全需求和可能的风险。
-
2、ALG 的工作原理
- 协议识别:ALG 能够识别特定的应用层协议,如 FTP、SIP、H.323 等。
- 会话监控:ALG 监控应用层协议的会话,理解协议的动态行为,如端口映射和连接请求。
- 动态端口映射:对于需要动态打开端口的协议(如 FTP),ALG 可以动态地在防火墙上打开端口,允许数据传输。
- 协议解析:ALG 解析协议数据,以便能够理解协议内容,并根据安全策略做出决策。
- 状态维护:ALG 维护应用层协议的状态信息,确保只有合法的会话被允许通过。
3、ALG 的优点
- 增强安全性:ALG 可以针对特定应用层协议提供更精细的安全控制。
- 支持复杂协议:对于一些复杂的应用层协议,ALG 可以帮助它们正确地穿越防火墙。
- 减少配置复杂性:通过自动处理协议的动态端口需求,ALG 减少了网络管理员手动配置防火墙的复杂性。
4、ALG 的缺点
- 性能影响:ALG 需要解析应用层的数据,这可能会增加处理延迟,对网络性能产生影响。
- 安全漏洞:如果 ALG 的实现存在缺陷,可能会引入安全漏洞。
- 协议依赖性:ALG 通常需要针对每种协议进行定制,这可能导致维护困难,尤其是在面对大量不同协议的情况下。
5、常见 ALG 应用场景
- FTP:ALG 可以帮助 FTP 协议穿越防火墙,因为 FTP 协议在传输数据时需要打开额外的端口。
- VoIP(SIP、H.323):ALG 可以帮助 VoIP 协议穿越防火墙,确保语音和视频通话的顺利进行。
- 远程桌面(RDP):ALG 可以帮助远程桌面协议穿越防火墙,允许远程访问。
6、结论
ALG 是网络防火墙技术的一个重要补充,它使得防火墙能够更好地支持特定的应用层协议。然而,随着网络技术的发展,ALG 的使用也在逐渐减少,部分原因是许多现代应用协议已经设计得更加防火墙友好,或者通过其他技术(如 VPN)来穿越防火墙。此外,ALG 可能会引入新的安全风险,因此它们的使用需要谨慎评估。