根据H3C防火墙的NAT hairpin工作机制及历史配置经验,实现内网用户通过公网IP访问内部服务器时保持源IP不变,需采用替代方案。以下是可行方法:
解决方案:使用虚拟服务器(Load Balancing)
在F5080防火墙上配置基于IP的虚拟服务器(非NAT hairpin),可避免源IP转换:
创建虚拟服务器(LB模式)
slb server-group INTERNAL_SERVER 创建服务器组
member 192.168.1.88 port 8081 添加内部服务器地址及端口
slb virtual-server PUBLIC_IP 创建虚拟服务器(公网IP)
ip address 202.1.1.100
port 8081 http 指定端口及协议
default server-group INTERNAL_SERVER 绑定服务器组
效果:
内网用户访问公网IP 202.1.1.100:8081 时,防火墙将直接转发请求至内部服务器 192.168.1.88:8081。
源IP保持为原始内网IP(如 192.168.1.100),服务器日志中可见真实访问者IP。
注意
若内网存在多网段,需配置回程路由(服务器网关指向防火墙内网接口),并禁用原接口的 nat hairpin enable。
替代方案:修改网络拓扑
若LB方案不可行,可调整架构:
1. 将服务器部署于DMZ区域:
通过独立接口连接服务器,配置标准DNAT(不启用hairpin),内网用户通过内网IP直接访问。
2. DNS分离解析:
内网用户解析域名时返回服务器内网IP,外网用户返回公网IP,从根源规避NAT转换。
总结
F5080防火墙的NAT hairpin机制强制转换源IP为公网地址是其固有逻辑,无法通过参数调整规避。推荐使用虚拟服务器(SLB)方案或拓扑优化实现源IP保持。配置后需验证:
display session table source-ip <内网用户IP> verbose 检查会话中源IP是否保留为私网地址
H3C F5080 防火墙开启 NAT hairpin(内网回流)后,内部 IP 访问本地公网映射 IP 时源 IP 被转为公网 IP,核心解决思路是精准控制 NAT 策略范围,仅对真正的外网出口流量做源 NAT,对内网回流流量跳过源 NAT 转换。以下是 3 种可行方案,均不影响正常访问且能保持内网源 IP 不变,可根据实际组网选择:
方案一:优化 NAT 策略,排除内网回流流量的源 NAT
该方案通过细化 NAT 策略的源地址匹配条件,仅让外网访问流量触发源 NAT,内网网段访问公网映射 IP 时不做源转换,是最常用且适配 F5080 的方案。
前提准备
先明确核心网络参数,避免配置出错:
内网网段:如192.168.1.0/24(需替换为实际内网段);
公网映射 IP:如203.0.113.10(服务器的公网映射地址);
内网服务器真实 IP:如192.168.1.100。
配置步骤(命令行)
确认现有 NAT 策略,查看是否为全局源 NAT:
system-view
display nat policy # 查看当前NAT策略,重点看源地址、出接口、动作
删除或修改原有全局源 NAT 策略(若策略对所有流量做源 NAT),重新配置仅匹配外网出口流量的 NAT 策略:
# 1. 创建地址对象:区分内网网段和外网出口方向
acl number 3001 # 定义外网出口流量的ACL
rule permit ip source 192.168.1.0 0.0.0.255 destination any # 内网所有流量
rule deny ip source 192.168.1.0 0.0.0.255 destination 192.168.1.0 0.0.0.255 # 排除内网间流量
# 2. 配置NAT策略,仅对出外网接口的流量做源NAT
nat policy interzone trust untrust inbound # 仅在trust→untrust域间生效
policy 1
action source-nat address-group 1 # 绑定公网地址池
acl 3001 # 关联上述ACL,排除内网回流流量
quit
确保 NAT hairpin 仅做目的地址转换(将公网 IP 转为内网服务器 IP),不叠加源 NAT:
# 配置公网IP到内网服务器的映射(仅目的NAT)
nat server protocol tcp global 203.0.113.10 80 inside 192.168.1.100 80
# 开启hairpin,确保内网访问公网IP时能回流
interface <外网接口,如GigabitEthernet1/0/0>
nat hairpin enable
quit
原理:内网用户访问公网映射 IP 时,流量属于内网回流,不命中trust→untrust域的 NAT 策略,仅做目的 IP 转换(公网→内网服务器),源 IP 保持内网地址;只有访问外网其他地址时,才触发源 NAT 转为公网 IP。
方案二:配置主机路由,绕开 NAT 直接访问内网服务器
该方案让内网用户访问公网映射 IP 时,直接通过内网路由访问服务器,完全不经过 NAT 流程,源 IP 自然不变,适合服务器仅对内网 + 外网小范围开放的场景。
配置步骤
system-view
# 配置静态主机路由:访问公网映射IP时,下一跳指向内网服务器真实IP
ip route-static 203.0.113.10 32 192.168.1.100
# 验证路由
display ip routing-table 203.0.113.10
注意事项
需确保内网用户与服务器路由可达;
若有多个公网映射 IP,需分别配置对应的静态路由;
该方案不依赖 NAT hairpin,配置更简洁,但仅适用于内网访问场景。
方案三:通过域间策略与 NAT 会话绑定,固定内网源 IP
若需保留 NAT hairpin 功能,且部分内网 IP 需特殊保留,可通过域间策略绑定会话,强制内网回流流量不做源 NAT。
配置步骤
system-view
# 1. 创建专门的内网回流ACL
acl number 3002
rule permit ip source 192.168.1.0 0.0.0.255 destination 203.0.113.10 32 # 内网访问公网映射IP的流量
# 2. 配置域间策略(trust→trust,内网回流域间)
policy interzone trust trust inbound
policy 1
action pass # 直接放行,不做NAT
acl 3002
quit
# 3. 确保原有NAT hairpin的目的映射正常生效
nat server protocol tcp global 203.0.113.10 80 inside 192.168.1.100 80
原理:内网回流流量命中trust→trust域的放行策略,跳过源 NAT;外网访问流量仍走正常untrust→trust的 NAT 策略,互不影响。
配置验证与故障排查
验证源 IP 是否保留
访问服务器后,通过以下命令查看会话表,确认源 IP 是否为内网地址:
display nat session verbose # 查看NAT会话,检查源IP字段
display session table # 查看全局会话,确认流量路径
常见问题处理
若源 IP 仍被转换:检查 NAT 策略优先级,确保内网回流策略优先级高于全局源 NAT 策略;
访问失败:确认内网服务器防火墙是否放行内网源 IP,或路由是否存在环路;
hairpin 失效:重新确认外网接口的nat hairpin enable配置是否生效。
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作
举报
×
侵犯我的权益
×
侵犯了我企业的权益
×
抄袭了我的内容
×
原文链接或出处
诽谤我
×
对根叔社区有害的内容
×
不规范转载
×
举报说明
用户都是通过域名访问的