为了解决P2P业务和NAT共存问题,三无组NAT地址转换方式。
如下图,PC1和PC2是两台运行P2P业务的客户端,它们运行P2P应用时首先
和P2P服务器进行交互(登录、认证等操作),P2P服务器会记录客户端的地址和端口。如果PC1
位于内部网络,防火墙会对PC1访问P2P服务器的报文进行NAPT方式的转换,这样P2P服务器记录的是经过
转换后的公网地址和端口。当PC2需要下载文件时,服务器会将拥有文件的客户端的地址和端口
发送给PC2(如PC1的地址和端口),然后PC2 会向PC1发送请求,并从PC1上下载文件。
上述交互过程看起来似乎很顺畅,但是对于P2P业务来说,存在两个问题。
(1)为了保持联系,PC1会定期向P2P服务发送报文,该报文在防火墙上经过NAPT方式的转换后,
NAPT方式决定了转换后的端口并不是固定的,会动态变化。这样的话,P2P服务器记录的PC1的地址 端口
的信息也要经常刷新,会影响P2P业务正常运行。
(2)更重要的是,根据防火墙的转发原理,只有P2P服务器返回给PC1的报文命中会话表后才能通过防火墙,
其他主机如PC2不能通过转换后的地址和端口来主动访问PC1,默认情况下,防火墙上的安全策略不允许
这一类的访问报文通过。
三元组NAT方式或以完美地解决上述肉个问题,因为三元组NAT方式在进行转换时有以下两个特点。
(1)对外呈现端口一致性
(2)支持外网主动访问
nat address-group lan 2
mode full-cone local //指定模式为三元组NAT方式
section 1 202.1.1.5 202.1.1.6
#
配置NAT策略
nat-policy
rule name Policy_nat1
source-zone trust
destination-zone untrust
source-address 192.168.1.0 24
action nat address-group lan
配置安全策略
#
security-policy
rule name policy1
source-zone trust
destination-zone untrust
source-address 192.168.1.0 24
action permit
#
验证
display firewall session table
Current Total Sessions : 1
http VPN: public -->public 192.168.1.2:2060[202.1.1.6:4096] -->210.1.1.2:80
从会话表中可以看到,P2P客户端地址民经转换为公网IP地址,端口也进行了转换。
重点看一下server-map表
display firewall server-map
Current Total Server-map : 2
Type: FullConeDst, ANY -> 202.1.1.6:6144[192.168.1.2:2061], Zone: untrust
Protocol: tcp(Appro: ---), TTL: 60, Left-Time: 52, Pool: 2, Section: 1
Vpn: public -> public, Hotversion: 1
Type: FullConeSrc, 192.168.1.2:2061[202.1.1.6:6144] -> ANY, Zone: untrust
Protocol: tcp(Appro: ---), TTL: 60, Left-Time: 57, Pool: 2, Section: 1
Vpn: public -> public, Hotversion: 1