企业内网用户和对外发布的FTP服务器放在同一个安全区域;企业采用双上行接入Internet(固定IP方式)。本举例介绍配置域内NAT+NAT Server双出口,实现内部用户和Internet用户均通过外网地址访问FTP服务器。
组网需求
某公司网络如下:
· 采用双接口接入Internet。
· 上行接口均采用固定IP方式,IP地址通过向ISP申请获得。
· 公司内网只划分一个安全区域(Trust)。
· 公司内网用户(PC)和FTP服务器都在同一个网段192.168.1.0/24。
· 内网用户和Internet用户都有访问FTP服务器的需求。
要求:
· 内网用户可以正常访问Internet,双链路为主备备份。
· 对于Internet用户,可以通过公网地址访问FTP服务器。对外公布2个公网地址,200.1.1.200和202.1.1.200。
· 对于内网用户,为了提高安全性,内网用户不能通过私网地址直接访问FTP服务器,必须通过USG。也就是说,内网用户也通过公网地址200.1.1.200访问FTP服务器。
图1域内NAT+NAT Server双出口典型配置组网图
[td]
项目
|
数据
|
备注
|
(1)
|
接口号:GigabitEthernet 0/0/5
IP地址:192.168.1.1/24
安全区域:Trust
|
-
|
(2)
|
接口号:GigabitEthernet 0/0/2
IP地址:200.1.1.1/30
安全区域:Untrust1
|
IP地址由ISP提供,ISP同时提供了DNS服务器地址:200.12.12.12和下一跳IP地址:200.1.1.2。
主链路
|
(3)
|
接口号:GigabitEthernet 0/0/3
IP地址:202.1.1.1/30
安全区域:Untrust2
|
IP地址由ISP提供,ISP同时提供了DNS服务器地址:202.12.12.12和下一跳IP地址:202.1.1.2。
备份链路
|
内网
|
192.168.1.0/24
|
-
|
FTP服务器
|
IP地址:192.168.1.254/24
|
对外公布2个公网地址,200.1.1.200和202.1.1.200,用于Internet用户访问;对于内网用户,通过200.1.1.200访问。
|
配置思路
1. 配置接口IP地址、包过滤、路由、NATOutbound等功能,实现双上行链路功能。
2. 配置NAT Server,实现Internet用户通过公网地址访问FTP服务器。
3. 配置域内NAT,实现内网用户使用公网地址访问FTP服务器。
4. 配置FTP服务器和内网PC。
操作步骤
1. 配置接口IP地址、包过滤、路由等,实现双上行链路功能。
# 配置USG接口IP地址。
配置过程略。
# 创建安全区域Untrust1和Untrust2,将接口加入相应安全区域。
[USG] firewall zone trust
[USG-zone-trust] add interface GigabitEthernet0/0/5
[USG-zone-trust] quit
[USG] firewall zone name untrust1
[USG-zone-untrust1] set priority 55
[USG-zone-untrust1] add interfaceGigabitEthernet0/0/2
[USG-zone-untrust1] quit
[USG] firewall zone name untrust2
[USG-zone-untrust2] set priority 58
[USG-zone-untrust2] add interfaceGigabitEthernet0/0/3
[USG-zone-untrust2] quit
# 创建NAT地址池。
[USG] nat address-group 1 200.1.1.1 200.1.1.1
[USG] nat address-group 2 202.1.1.1 202.1.1.1
# 配置域间包过滤,外网用户可以访问公司内网网络。
[USG] policy interzone trust untrust1 inbound
[USG-policy-interzone-trust-untrust1-inbound] policy0
[USG-policy-interzone-trust-untrust1-inbound-0] policyserviceservice-set ftp
[USG-policy-interzone-trust-untrust1-inbound-0] actionpermit
[USG-policy-interzone-trust-untrust1-inbound-0] quit
[USG-policy-interzone-trust-untrust1-inbound] quit
[USG] policy interzone trust untrust2 inbound
[USG-policy-interzone-trust-untrust2-inbound] policy0
[USG-policy-interzone-trust-untrust2-inbound-0] actionpermit
[USG-policy-interzone-trust-untrust2-inbound-0] policyserviceservice-set ftp
[USG-policy-interzone-trust-untrust2-inbound-0] quit
[USG-policy-interzone-trust-untrust2-inbound] quit
# 配置NAT Outbound,实现内网用户上网。
[USG] nat-policy interzone trust untrust1outbound
[USG-nat-policy-interzone-trust-untrust1-outbound] policy1
[USG-nat-policy-interzone-trust-untrust1-outbound-1] policysource192.168.1.0 0.0.0.255
[USG-nat-policy-interzone-trust-untrust1-outbound-1] actionsource-nat
[USG-nat-policy-interzone-trust-untrust1-outbound-1] address-group1
[USG-nat-policy-interzone-trust-untrust1-outbound-1] quit
[USG-nat-policy-interzone-trust-untrust1-outbound] quit
[USG] nat-policy interzone trust untrust2outbound
[USG-nat-policy-interzone-trust-untrust2-outbound] policy1
[USG-nat-policy-interzone-trust-untrust2-outbound-1] policysource192.168.1.0 0.0.0.255
[USG-nat-policy-interzone-trust-untrust2-outbound-1] actionsource-nat
[USG-nat-policy-interzone-trust-untrust2-outbound-1] address-group2
[USG-nat-policy-interzone-trust-untrust2-outbound-1] quit
[USG-nat-policy-interzone-trust-untrust2-outbound] quit
# 配置IP-Link,监控主链路。
[USG] ip-link check enable
[USG] ip-link 1 destination 200.1.1.2interfaceGigabitEthernet 0/0/2 mode icmp
# 配置路由,实现链路主备备份。同时在主链路上绑定IP-Link,以便主链路不通后,能自动切换到备份链路。
[USG] ip route-static 0.0.0.0 0.0.0.0 200.1.1.2trackip-link 1
[USG] ip route-static 0.0.0.0 0.0.0.0202.1.1.2preference 70
1. 配置NAT Server,实现Internet用户通过公网地址访问FTP服务器。
# 配置NAT Server,向双出口所在安全区域发布公网地址。
[USG] nat server zone untrust1 protocol tcpglobal200.1.1.200 ftp inside 192.168.1.254 ftp
[USG] nat server zone untrust2 protocol tcpglobal202.1.1.200 ftp inside 192.168.1.254 ftp
# 配置域间NAT ALG,使FTP服务器可以正常对外提供服务。
[USG] firewall interzone trust untrust1
[USG-interzone-trust-untrust1] detect ftp
[USG-interzone-trust-untrust1] quit
[USG] firewall interzone trust untrust2
[USG-interzone-trust-untrust2] detect ftp
[USG-interzone-trust-untrust2] quit
1. 配置域内NAT,实现内网用户使用公网地址访问FTP服务器。
# 创建Trust域内的NAT策略,确定进行NAT转换的源地址范围,并且将其与NAT地址池1进行绑定。
[USG] nat-policy zone trust
[USG-nat-policy-zone-trust] policy 0
[USG-nat-policy-zone-trust-0] policysource192.168.1.0 0.0.0.255
[USG-nat-policy-zone-trust-0] policydestination200.1.1.200 0
[USG-nat-policy-zone-trust-0] action source-nat
[USG-nat-policy-zone-trust-0] address-group 1
[USG-nat-policy-zone-trust-0] quit
[USG-nat-policy-zone-trust] quit
# 配置NAT Server,发布内网服务器的公网IP地址。
[USG] nat server zone trust protocol tcpglobal200.1.1.200 ftp inside 192.168.1.254 ftp
# 配置黑洞路由,避免形成路由环路。
[USG] ip route-static 200.1.1.200 32 NULL 0
# 开启Trust区域内FTP协议的NATALG功能。
[USG] firewall zone trust
[USG-zone-trust] detect ftp
[USG-zone-trust] quit
1. 配置FTP服务器和内网PC。
o # 配置FTP服务器的IP地址并开启FTP服务。
§ IP地址(192.168.1.254/24)
§ DNS服务器地址(202.12.12.12)
§ 默认网关(192.168.1.1)
§ 开启FTP服务
o # 配置内网PC。
§ IP地址(192.168.1.0/24网段)
§ DNS服务器地址(202.12.12.12)
§ 默认网关(192.168.1.1)
结果验证
内网PC可以正常ping通外网地址(例如某个知名网站的域名),通过命令display firewall session table verbose可以查询到NAT Outbound会话表建立成功。
[USG] display firewall session table verbose
icmp VPN:public --> public
Zone: trust-->untrust1 TTL:00:00:20 Left: 00:00:17
Interface:GigabitEthernet0/0/2 NextHop:200.1.1.2 MAC:2c-27-d7-35-c8-5a
<--packets:4bytes:240 -->packets:4 bytes:240
192.168.1.254:768[200.1.1.1:2051]-->200.1.1.2:2048
Internet用户可以通过ftp 200.1.1.200或ftp 202.1.1.200访问公司内部的FTP服务器,通过命令display firewall session tableverbose可以查询到NAT Server会话表建立成功。
[USG] display firewall session table verbose
ftp VPN:public--> public
Zone: untrust1-->trust TTL:00:00:10 Left: 00:00:00
Interface:GigabitEthernet0/0/5 NextHop:192.168.1.254 MAC:00-21-97-cf-22-38
<--packets:10bytes:588 -->packets:14 bytes:626
200.1.1.100:1778+->200.1.1.200:21[192.168.1.254:21]
ftp-data VPN:public --> public
Zone: trust-->untrust1 TTL:00:00:10 Left: 00:00:00
Interface:GigabitEthernet0/0/2 NextHop:200.1.1.100 MAC:2c-27-d7-35-c8-5a
<--packets:3bytes:128 -->packets:5 bytes:611
192.168.1.254:20[200.1.1.200:20]-->200.1.1.100:1781
内网用户可以通过ftp 200.1.1.200访问公司内部的FTP服务器,通过命令display firewall session table verbose可以查询到域内NAT会话表建立成功。
[USG] display firewall session table verbose
ftp VPN:public--> public
Zone: trust-->trust TTL:00:00:10 Left: 00:00:00
Interface:GigabitEthernet0/0/5 NextHop: 192.168.1.254 MAC:00-21-97-cf-22-38
<--packets:9bytes:548 -->packets:14 bytes:623
192.168.1.100:1427[200.1.1.1:2049]+->200.1.1.200:21[192.168.1.254:21]
配置脚本
说明:
下文中只列出了与NAT相关的配置脚本。
#
nat address-group1 200.1.1.1 200.1.1.1
nat address-group2 202.1.1.1 202.1.1.1
#
nat server 0 zoneuntrust1 protocol tcp global 200.1.1.200ftp inside 192.168.1.254 ftp
nat server 1 zoneuntrust2 protocol tcp global 202.1.1.200ftp inside 192.168.1.254 ftp
nat server 2 zonetrust protocol tcp global 200.1.1.200ftp inside 192.168.1.254 ftp
#
ip-link checkenable
ip-link 1destination 200.1.1.2 mode icmp
#
firewall zone local
set priority 100
#
firewall zone trust
set priority 85
add interfaceGigabitEthernet0/0/5
detect ftp
#
firewall zone untrust
set priority 5
#
firewall zone dmz
set priority 50
#
firewall zone name untrust1
set priority 55
add interfaceGigabitEthernet0/0/2
#
firewall zone name untrust2
set priority 58
add interfaceGigabitEthernet0/0/3
#
firewall interzone trust untrust1
detect ftp
#
firewall interzone trust untrust2
detect ftp
#
policy interzone trust untrust1 inbound
policy 0
policy serviceservice-set ftp
action permit
#
policy interzone trust untrust2 inbound
policy 0
policy serviceservice-set ftp
action permit
#
nat-policy interzone trust untrust1 outbound
policy 1
action source-nat
policy source192.168.1.0 0.0.0.255
address-group 1
#
nat-policy interzone trust untrust2 outbound
policy 1
action source-nat
policy source192.168.1.0 0.0.0.255
address-group 2
#
nat-policy zone trust
policy 0
policy source192.168.1.0 0.0.0.255
policy destination200.1.1.200 0
action source-nat
address-group 1
#
ip route-static0.0.0.0 0.0.0.0 200.1.1.2 track ip-link 1
ip route-static0.0.0.0 0.0.0.0 202.1.1.2 preference 70
ip route-static200.1.1.200 32 NULL 0
#
return