笔记说明:思科对于透明墙的部署文档相当的少,工作场景中透明墙的应用也比路由强少了很多
但是工作中不免出现各种各样的部署方式,和各种各样的坑
这篇文章同时参阅了思科自己的文档,以及&同事的交流结果,对于最后的架构问题,有问题欢迎与我探讨
社区发帖图片不能直接复制可以解决么,相当坑,一张一张贴,真不怪我前几篇不想发配置示例拓扑图
Cisco文档:
Cisco的ASA可以运行两种模式:
1. 路由模式:也就是3层防火墙,基于IP地址转发流量
2. 透明模式:也就是2层防火墙,基于MAC地址转发流量,由邻居路由器和主机做路由决定
透明防火墙的限制:
- 只支持2个接口在一个bridge里(8.3后引入bridge-group概念,每一个bridge-group内可以支持多个接口)
- BVI-ip地址必须与连接的网络位于同一子网中
- 管理接口不支持作为网桥组成员
- 透明模式下必须至少使用一个桥组,数据接口必须属于网桥组
- 不能将BVI-IP地址指定为连接设备的默认网关, 需要使用ASA另一侧的router指定为默认网关
- 最多可以创建250个bridge-group,每个组最大64个接口
- 不支持以下特性:
- DHCP reley
- Dynamic routing protocols
- Dynamic DNS
- Multicast IP routing
- Quality of Service
- VPN termination (except for management traffic)
- 从8.2(1)开始,透明防火墙能够支持IPv6
- 透明墙的业务接口不能配置IP地址,但management接口可以配置(out-of-band)
- 也可以在配置全局模式创建管理IP地址(in-band)(8.4之前)
- 透明墙可以做NAT,但是不能跑路由协议
什么情况下使用透明模式 ?
(1)转发非IP流量时
(2)现有网络不希望重新规划IP地址的时候
⭐其他情况下均使用路由模式
透明墙工作原理:
- 转发ARP,并且嗅探ARP,学习接口收到的数据包的源MAC地址,形成关联
- 当ASA自身MAC地址表没有关联表项时,收到未知单播时的行为:
- 如果收到未知单播的目标IP在接口所属BVI的同一网段(对发送的设备来说是同一广播域内的访问),ASA会以BVI地址为源在bridge-group组中所有接口发出目标IP的ARP请求,等待回应,如果回应来自另一个接口,学习MAC地址,转发。如果回应来自收到未知单播的接口,丢弃,不做转发
- 如果收到未知单播的目标IP和接口BVI不在同一网段,ASA会以BVI地址为源,发IP包 ,目MAC地址保持不变,在所有bridge-group接口发出,等待哪个接口能收到ICMP的reply,同时学习到MAC地址和接口关联,后续利用MAC地址表转发数据 ,如果reply来自相同接口,丢弃
注意bridge-group virtual Interface 的地址必须有,如果没有,收到未知单播,ASA只能丢弃。
(1)ASA学习源MAC地址,添加到MAC地址表
(2)ASA转换local source 地址到global地址
(3)如果目的MAC地址在MAC表中,则按表转发到映射的接口
(4)如果目标地址不在MAC表中,则同上处理
(5)返回的包,ASA再将global地址转换回local地址
——学习源MAC,按目的MAC转发, 与交换机工作方式基本相同。
配置静态路由的场合:
(1)management接口地址被不同网段地址管理
route management 0 0 x.x.x.x
(2)带内管理地址被不同网段地址管理
route inside x.x.x.x x.x.x.x [next-hop]
(3)透明墙做NAT时
——只要是透明墙自身发起流量,访问不同网段地址,就需要配置路由,通过对下一跳地址的ARP解析,找到要封装的目的MAC, 通过对目的MAC查表,找到出包接口(无法查到则泛洪)。
透明墙配置指南:
- 内外接口直连网络必须在相同的子网内部
- 必须要配置一个网管IP (重要)
- 网管IP必须要和内外网段相同
- 网管IP不能够作为网关使用
- 组播和广播流量需要明确放行(穿越) outbound单播流量可以正常穿越
- 可以指定一个特定接口抵达的IP为默认网关,这条路由只起到网管作用
- 每一个接口必须在不同的VLAN
- 所有的流量都可以通过extended access-list(ACL)(for IP traffic)或者EtherType ACL(for no IP traffic)来放行
- ARP默认能够穿越防火墙,可以通过ARP inspection这个技术来控制
- CDP是无法穿越的
show firewall 查看当前模式
firewall transparent 转换为透明模式
no firewall transparent 转换为路由模式(默认)
⭐配置说明:
首先切换到透明墙(切换模式会丢失所有配置,需要提前备份配置,在贴配置的时候,需要把firewalltransparent放在前边)
- 使用(config)# firewall transparent 切换到透明墙
- 切换回routed firewall = no firewall transparent
简单配置示例-1:
- 配置该拓扑使其能够正常工作
- Deny 8.8.8.8 访问 any ip icmp packet
ASA配置:
1:配置inside 接口,nameif = inside 后自动security level 100,划入桥组1
Interface gi0/0
no shutdown
nameif inside
bridge-group 1
2:配置outside 接口,nameif = outside 后自动security level 0,划入桥组1
Interface gi0/1
no shutdown
nameif outside
bridge-group 1
3:创建BVI接口-1,必须配置一个桥组之间相同地址段的ip地址(注意,这个BVI接口是可以被PING通的)
Interface bvi 1
no shutdown
ip add 172.16.1.2255.255.255.128
4:创建安全策略,deny8.8.8.8 access inside any icmp packet
Access-list outside8888 deny icmp8.8.8.8 255.255.255.255 any
Access-list outside8888 permit ipany any
Access-group outside8888 inoutside
5:测试现象:
R8无法通过8.8.8.8 ping通任何ip地址
![111213a8u50zhe9hopovgv.png 111213a8u50zhe9hopovgv.png](/t5/image/serverpage/image-id/114626i868622F61655FCBF/image-size/large?v=v2&px=999)
但是R7可以ping 8.8.8.8的地址,为什么能通?
因为R7 ping过去会维持状态化监控表象,数据包回来先匹配表象,而不是匹配outside接口的ACL
简单配置示例-2: 增强版NAT配置
![111245va116s21g6s95nn2.png 111245va116s21g6s95nn2.png](/t5/image/serverpage/image-id/114627i5C05B7DB73C084CE/image-size/large?v=v2&px=999)
将R7的lo0=192.168.1.1进行static-NAT转换,转换为172.16.1.4
1:首先定义object
object network nat-before
host 192.168.1.1
object network nat-after
host 172.16.1.4
2:定义NAT规则 1:1
nat (inside,outside) source static nat-beforenat-after description test
3:因为通过防火墙去转换了NAT,R8回来的流量会经过ASA的XLATE表象后查找路由,所以ASA要加去192.168.1.1的路由
route inside 192.168.1.1 255.255.255.255 172.16.1.1 1
4:test测试
如图所示,已经可以通过lo0 ping通114
如图所示,static nat xlate表象已存在
如图所示,R8上开 debug ip icmp 查看,DST=转换后地址172.16.1.4
一:使用 VLAN 隔离相同网段之间的互访
![111512f4zcwfj7pgps4zjz.png 111512f4zcwfj7pgps4zjz.png](/t5/image/serverpage/image-id/114631iFE39CC865A964EF3/image-size/large?v=v2&px=999)
架构说明:
R17 属于 vlan 10,他的网关是172.16.10.254,但是这个网关在R13中划入了Vlan-100
- 如果R17想访问172.16.10.254,数据流量到达交换机R13,R13会将数据流量传递到ASA上,因为他们都是vlan 10
- ASA的 G0/0口属于VLAN 10=inside-1=bridge-group-1,所以数据流量会到ASA的 BVI-I上=172.16.10.253,
- 由于ASA的GI0/2接口=bridge-group-1=outside,所以流量会从GI0/2接口送出,这个接口属于VLAN 100.
- 由于这里都没有 trunk接口,vlan都是本地设备用来区分自己接口收到流量应该传递到哪些端口罢了,所以正常使用
在这里需要注意一点,因为同一个广播域=同一个VLAN下的流量直接广播内转发了,所以如果不依靠划分VLAN方式隔离相同网段流量的话,ASA没有办法对数据流量进行过滤
配置示例:交换机配置略过,就是划分VLAN
ASA配置:
1:防火墙开启透明模式,提前inspection-icmp
Firewall transparent
policy-map global_policy
class inspection_default
inspect icmp
2:ASA的接口划入bridge-group-1,并且打上nameif,起BVI接口分配与上下文相同地址段IP
interfaceGigabitEthernet0/0
bridge-group 1
nameif inside
security-level 100
interfaceGigabitEthernet0/2
bridge-group 1
nameif outside
security-level 0
interface BVI1
ip address 172.16.10.253 255.255.255.0
3:测试 R17-Ping R16 全局policy-map 监控ICMP
4:测试 R17 TelnetR16 ASA上存在状态化监控表象![111613zimgrzsrsrr3lh3w.png 111613zimgrzsrsrr3lh3w.png](/t5/image/serverpage/image-id/114633i3ED8E66057819D81/image-size/large?v=v2&px=999)
![111639mcdcddkdkwt82ldv.png 111639mcdcddkdkwt82ldv.png](/t5/image/serverpage/image-id/114634iFED9821A992CD3E7/image-size/large?v=v2&px=999)
二:防火墙透明模式穿插网络中,开放子接口进行流量过滤
![111710ia9pxq9mr51v9zur.png 111710ia9pxq9mr51v9zur.png](/t5/image/serverpage/image-id/114635iCD3BE210AF86FBAB/image-size/large?v=v2&px=999)
架构说明:(并不推荐这样部署)
如图所示,ASA穿插在汇聚交换机&核心交换机之间部署,这样部署可以达到,所有上联至核心的流量必须先经过防火墙过滤,并且ASA可以针对全网的ARP消息进行inspection
首先,R12的地址=172.16.1.1=vlan10,它的网关是172.16.1.254,该网络的所有VLAN网关全部都在Core-SW上
R12的数据流量到达Access-sw,会从trunk接口封装VLAN10-TAG送给ASA,ASA发现该流量属于vlan10=G0/1.1接口=bridge-group-1,ASA本身传递ARP并嗅探ARP学习MAC地址,并且使用BVI接口ping目的地址,发现是从G0/0.1端口=vlan 100 抵达,则流量正常通信。
如果网络中出现Access-Sw2,这一块的网络地址&vlan是另一个/多个广播域,并且不与Access-sw1重叠,则在ASA的
G0/2口下起子接口,封装vlan20=bridge-group-2,并在ASA上联至Core-sw的G0/0口下起子接口G0/0.2,封装VLAN200=Bridge-group2,与其vlan20进行对应,则流量可以正常通信
配置示例:
1:交换机配置就是trunk & Access 接口类型
2:ASA配置,物理接口无需配置,上联下联物理接口开启子接口,封装不同VLAN-TAG,并入Bridge-group
interfaceGigabitEthernet0/0.1
vlan 100
bridge-group 1
nameif outside-1
security-level 0
interfaceGigabitEthernet0/1.1
vlan 10
bridge-group 1
nameif inside-1
security-level 100
3:配置ASABVI-1接口=bridge-group-1,并且开启ICMP监控
interface BVI1
ip address 172.16.1.253 255.255.255.0
policy-map global_policy
class inspection_default
inspect icmp
4:test测试,R12ping-Core-SW
![111735jdh3703nggighgsd.png 111735jdh3703nggighgsd.png](/t5/image/serverpage/image-id/114636i9009AEBFE7EEFD17/image-size/large?v=v2&px=999)
架构问题:
![111804s6ufgqido0pstuuz.png 111804s6ufgqido0pstuuz.png](/t5/image/serverpage/image-id/114637iF2E5624890302584/image-size/large?v=v2&px=999)
如果两个区域的地址划分并不是按区域,而是按照应用,接入类型的话。Access-sw2交换机里也有VLAN 10的流量
那这个问题怎么解决呢?
答:理想的方案肯定是在 G0/2接口下再起一个子接口G0/2.2,并且同样封装 vlan10=bridge-group1=nameif-inside3,与access-sw的vlan 10同样捆绑在bridge-group 1中
但是,ASA不支持多个子接口封装相同vlan,即使是不同的物理接口下的子接口也不可以
![111830pe6c166665qzquh6.png 111830pe6c166665qzquh6.png](/t5/image/serverpage/image-id/114638iC1D56767113200A5/image-size/large?v=v2&px=999)
所以,一个解决办法就是,将另一个汇聚点的 vlan 10 改为=vlan 101,然后vlan101,vlan10,vlan100=一个bridge-group-1=一个地址段172.16.1.0/24
这样数据流量到防火墙,防火墙会在这个Bridge-group-1里进行通信传递
![111851f4oe3338h6834ztu.png 111851f4oe3338h6834ztu.png](/t5/image/serverpage/image-id/114639i914E321B1719FFBD/image-size/large?v=v2&px=999)