不想改拓扑串接防火墙?华为透明模式二层口NAPT不用重划网段

给网络加防火墙,很多人的第一反应是"麻烦":传统三层部署要把它当网关设备规划进拓扑,接口地址、路由、内网主机默认网关都得跟着动。但还有一种更省事的接法——透明方式部署,上下行业务接口都工作在二层模式,像一根"智能网线"一样串进现有链路,不改变现有网络的拓扑结构。防火墙串进去之后上网怎么保证?答案是透明模式下照样配源 NAT 策略,地址池照常工作在 NAPT 方式。下例中私网网段 10.1.1.0/24,公司向 ISP 申请了 6 个公网地址(1.1.1.10~1.1.1.15)作为转换后的公网地址——私网地址比公网地址多,做不到一一映射,所以地址池要开启允许端口转换,靠端口复用撑起全员上网。

透明部署还有个路由上的特殊问题:转换后的公网地址段在两台周边设备之间没有实际接口归属,Internet 用户主动访问这些地址时,流量可能在汇聚交换机和出口网关路由器之间来回打转形成环路。解法是在汇聚交换机上配一条指向 NULL0 的黑洞路由,让这类流量有去无回地被吞掉,环不起来。

配置步骤(Web 界面)

第一步,把两个业务接口切成二层口并加入安全区域。选择"网络 > 接口",单击接口 GE0/0/1 所在行,按如下参数配置:安全区域 trust、模式交换、连接类型 Access、Access VLAN ID 100,确定。再单击 GE0/0/2 所在行:安全区域 untrust、模式交换、连接类型 Access、Access VLAN ID 100,确定。两个口同属 VLAN 100,一个朝内一个朝外。

第二步,配安全策略。选择"策略 > 安全策略 > 安全策略",在"安全策略列表"中单击"新建",选择"新建安全策略",参数:名称 policy1、源安全区域 trust、目的安全区域 untrust、源地址 10.1.1.0/24、动作允许,确定。

第三步,配 NAT 地址池和 NAT 策略。选择"策略 > NAT策略 > NAT策略 > 源转换地址池",在"源转换地址池列表"中单击"新建",地址范围 1.1.1.10~1.1.1.15,并开启允许端口转换。随后选择"策略 > NAT策略 > NAT策略 > NAT策略",在"NAT策略列表"中单击"新建",把源区域 trust、目的区域 untrust、源地址 10.1.1.0/24 的流量指向该地址池做源地址转换。

第四步,配周边设备的三组路由。先在汇聚交换机上配到 NAT 地址池地址的黑洞路由(以华为交换机为例):

<switch> system-view
[switch] ip route-static 1.1.1.10 32 NULL0
[switch] ip route-static 1.1.1.11 32 NULL0
[switch] ip route-static 1.1.1.12 32 NULL0 
[switch] ip route-static 1.1.1.13 32 NULL0 
[switch] ip route-static 1.1.1.14 32 NULL0
[switch] ip route-static 1.1.1.15 32 NULL0 

再在出口网关路由器上配到地址池的静态路由,下一跳 10.1.2.1(以华为路由器为例):

<router> system-view
[router] ip route-static 1.1.1.10 32 10.1.2.1
[router] ip route-static 1.1.1.11 32 10.1.2.1
[router] ip route-static 1.1.1.12 32 10.1.2.1
[router] ip route-static 1.1.1.13 32 10.1.2.1
[router] ip route-static 1.1.1.14 32 10.1.2.1
[router] ip route-static 1.1.1.15 32 10.1.2.1

最后在 ISP 路由器上配到地址池的静态路由,下一跳 1.1.1.1,让 Internet 返回的流量能转发到企业出口——这步通常要联系 ISP 的网络管理员配置。

全部做完后,DeviceA 的配置脚本如下:

#
 sysname DeviceA
#                                                                               
vlan batch 100
#
interface GE0/0/1
 portswitch
 port link-type access
 port default vlan 100
#
interface GE0/0/2
 portswitch
 port link-type access
 port default vlan 100
#
firewall zone trust
 set priority 85
 add interface GE0/0/1
#
firewall zone untrust
 set priority 5
 add interface GE0/0/2
# 
nat address-group addressgroup1 0
 mode pat
 section 0 1.1.1.10 1.1.1.15 
#  
security-policy   
  rule name policy1  
    source-zone trust 
    destination-zone untrust 
    source-address 10.1.1.0 24  
    action permit 
#  
nat-policy  
  rule name policy_nat1 
    source-zone trust 
    destination-zone untrust  
    source-address 10.1.1.0 24   
    action source-nat address-group addressgroup1  
#                                          
return

对比三层部署的脚本,最明显的差异是接口段:portswitch 把业务口切成二层,port default vlan 100 把它划进 VLAN,整台设备没有一条自己的单播路由——透明接入的精髓就在这里,地址池 mode pat 照常端口复用,路由的活全部交给了周边设备。

验证

配置完成后检查两件事:一是公司内网用户可以访问 Internet;二是内网用户上网时,选择"监控 > 会话表",查看源地址为公司内网地址的会话,确认转换后地址落在地址池之内。透明设备本身没有路由表可查,会话表就是它最直接的体检报告。

透明串接是"动最小"的防火墙接入姿势:不动 IP 规划、不改主机网关,代价是周边路由要多操心几条。贵州诚鑫致达科技在给客户做安全加固时,碰到不方便动拓扑的老网络,优先考虑的就是这种接法。你现网串防火墙时是透明模式还是三层网关模式?评论区说说你当时的取舍。