网络环境如下:
1.内网有3个网段:192.168.1.0/24 192.168.2.0/24 192.168.3.0/24,网关均为核心交换机 .254
2.核心交换机通过10.10.10.1/24和防火的trust口10.10.10.2/24相连,核心默认路由指向10.10.10.2
3.防火墙有内网3个网段的回指路由,指向10.10.10.1
4.192.168.1.10为内网的一台服务器,通过8008端口对外提供服务
5.防火墙直接连接公网,公网地址为Untrust口的111.160.88.68,并且在外网口上面做了8008端口的映射
6.因为有内网通过公网地址来访问内网服务器的需求,在trust口上面开启了hairpin
7.在核心交换机上面配置了PBR,并应用在了2.254和3.254接口上面,将流量引向防火墙
policy-base-route pbr per node 10
apply next-hop 10.10.10.2
8.在防火墙上面放通了trust到trust的流量,并配置了安全策略,仅允许192.168.2.0/24访问192.168.1.0/24和192.168.3.10的3005端口;允许trust到untrust的流量;允许trust到local的流量
现在遇到的问题:
1. 在此种防止配置下,3个网段上网都没有问题,对外提供的服务也没有问题,1.0网段直接访问111.160.88.68:8008也没有问题,但是2.0网段访问不了111.160.88.68:8008,但是可以访问192.168.1.10:8008
2. 如果在trust到trunt访问的策略里面加入源地址:192.168.1.0/24 和10.10.10.2,这个时候,1.0网段就无法访问111.160.88.68:8008
在不加源地址的时候,查看nat的会话可以看到下面这些:
[FW_F1000]dis nat session destination-ip 111.160.80.99 verbose
Slot 1:
Initiator:
Source IP/port: 192.168.1.37/56529
Destination IP/port: 111.160.88.68/8008
DS-Lite tunnel peer: - VPN instance/VLAN ID/Inline ID: -/-/-
Protocol: TCP(6)
Inbound interface: Vlan-interface1000
Source security zone: Trust
Responder:
Source IP/port: 192.168.1.10/8008
Destination IP/port: 111.160.88.68/60211
DS-Lite tunnel peer: - VPN instance/VLAN ID/Inline ID: -/-/-
Protocol: TCP(6)
Inbound interface: Vlan-interface1000
Source security zone: Trust
State: TCP_ESTABLISHED
Application: GENERAL_TCP Rule
ID: 28 Rule name: Hairpin
这个是什么问题呢
(0)
现象复盘
111.160.88.68:8008 ✅正常,可以建立 Hairpin 会话;192.168.1.10:8008✅通,访问公网映射地址111.160.88.68:8008❌不通;流量路径(192.168.2.10 访问 111.160.88.68:8008)
apply next‑hop 10.10.10.2,报文送到防火墙 trust 口;为什么 192.168.1.0 网段没问题? 服务器在 1.0 网段,它的网关是 1.254,PBR 只绑定在 2.254、3.254 接口,Vlan‑if1 没有应用 PBR。 1.0 的流量不会触发 PBR 强制引流,不会发生环路,hairpin 完全正常。
开启nat hairpin enable之后,trust‑to‑trust 的流量源地址会被防火墙做源 NAT 转换(源会变成 trust 接口 IP:10.10.10.2,或者出方向 NAT 地址池)H3C。
10.10.10.2;192.168.1.0/24,匹配的是转换前原始 IP,而域间策略校验的是 NAT 之后报文 IP,策略匹配失败直接丢弃报文,所以 1.0 也直接不能访问。关键点:Comware V7 防火墙,域间安全策略匹配的是 NAT 转换之后的 IP,hairpin 源地址被改写,所以不能写原始内网源网段作为 trust‑to‑trust 策略的源条件H3C。
原理:访问服务器内网网段的流量,不执行 PBR 重定向,直接走正常路由转发,避免回包再次被 PBR 引流回防火墙
当前 PBR 直接 node 10 apply next‑hop 10.10.10.2,缺少 if‑match 条件,所有经过 Vlan‑if2/Vlan‑if3 的流量全部强制下一跳防火墙,包括 hairpin 回程流量。
修改核心交换机 PBR:
policy-based-route pbr permit node 5
# 目的是服务器内网网段,不做重定向,直接查表路由
if-match acl 3999
# node10保留原有上网引流逻辑
policy-based-route pbr permit node 10
apply next-hop 10.10.10.2
acl advanced 3999
rule permit ip destination 192.168.1.0 0.0.0.255
node5 优先级高于 node10;当访问目的是服务器网段 192.168.1.0/24,匹配 node5,没有 apply next‑hop,直接查路由表转发,不再重定向到防火墙。
⚠️注意:PBR 是应用在 Vlan‑interface2、Vlan‑interface3 的入方向;经过上面配置:
- 2.0/3.0 访问互联网:命中 node10,送到防火墙;
- 2.0/3.0 访问服务器公网 IP(111.160.88.68):目的 NAT 之后变成目的 192.168.1.10;回包到达核心,匹配 acl3999,node5 直接路由,不会再次扔进防火墙,环路消除,hairpin 会话正常建立。
防火墙侧 trust‑to‑trust 策略保持:源地址不写任何网段,源域 trust,目的域 trust,动作允许,不要填源 IP 对象。hairpin 源 NAT 之后源变成 trust 接口 IP,策略不要限制源。
内网 DNS 服务器:域名对内解析返回服务器内网 IP192.168.1.10;外网解析返回公网111.160.88.68。
内网所有网段直接访问服务器内网 IP,完全不走 hairpin,不需要 PBR 特殊处理,性能最好,无 NAT 环路风险。
# 测试2.0网段访问公网地址,看是否产生nat会话
dis nat session destination‑ip 111.160.88.68 verbose
# 看安全策略命中计数,trust‑to‑trust是否命中
dis security‑policy hit‑count
如果 2.0 访问公网地址,完全看不到会话,报文在核心就循环丢了,确认就是 PBR 环路。
dis policy‑based‑route interface Vlan‑interface 2
dis acl 3999
观察 acl3999 是否命中访问服务器网段的报文。
ip route‑static 192.168.1.0 255.255.255.0 10.10.10.1、2.0、3.0,配置无误。nat hairpin enable是配置在 trust 三层接口(10.10.10.2 所属接口)配置正确。访问服务器内网 IP,流量根本不会送到防火墙,核心三层直接转发,完全绕开 PBR,防火墙完全不参与,业务正常。只有访问公网映射 IP 才会触发 PBR+hairpin 流程,暴露出环路问题。
(0)
在您提及到的“致命一步:服务器回包到达核心交换机,目的 IP 是转换后的源地址;这个回包进入核心,从 Vlan‑if2 出去之前,再次匹配 Vlan‑if2 下绑定的 PBR 策略路由,又被强制扔回防火墙 10.10.10.2;”中,转换后的源地址应该是10.10.10.2,服务器192.168.1.10的回包给到10.10.10.2,这个应该不经过2网段吧,如何匹配了pbr呢
(0)
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
在您提及到的“致命一步:服务器回包到达核心交换机,目的 IP 是转换后的源地址;这个回包进入核心,从 Vlan‑if2 出去之前,再次匹配 Vlan‑if2 下绑定的 PBR 策略路由,又被强制扔回防火墙 10.10.10.2;”中,转换后的源地址应该是10.10.10.2,服务器192.168.1.10的回包给到10.10.10.2,这个应该不经过2网段吧,如何匹配了pbr呢