深信服社区»版块 安全类 下一代防火墙NGAF 有个问题请教一下,“AF做了双向地址转换后如何让内网Ng ...

有个问题请教一下,“AF做了双向地址转换后如何让内网Nginx

查看数: 480 | 评论数: 6 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2025-11-13 09:33

正文摘要:

有个问题请教一下,“AF做了双向地址转换后如何让内网Nginx获取到转换前的公网地址”现在Nginx上看到的全是防火墙的IP地址,要怎样才能把真实的来源公网IP发给Nginx,Nginx就可以做实时记录日志,后续用于分析了。 ...

回复

王老师 发表于 2025-11-14 13:08
使用TOA(TCP Option Alignment)模块(适用于Linux内核)
原理:
TOA模块通过修改Linux内核,将公网源IP封装在TCP选项中传递,Nginx通过TOA模块解析后获取真实IP。此方案适用于高安全性场景,但需内核支持。

操作步骤
在AF上启用TOA功能
进入AF的【系统】-【高级设置】-【TOA设置】,勾选“启用TOA功能”。
确保AF与内网Nginx服务器之间的网络设备(如交换机)未过滤TCP选项字段。
在Nginx服务器上安装TOA模块
下载TOA模块:从深信服官方或开源社区获取适配当前Linux内核版本的TOA模块源码(如toa.ko)。
加载模块:
bash
insmod toa.ko  # 加载模块
echo "toa" > /etc/modules-load.d/toa.conf  # 设置开机自启
验证模块:
bash
lsmod | grep toa  # 检查模块是否加载成功
配置Nginx读取TOA解析的IP
修改Nginx配置,将$remote_addr替换为TOA解析的IP变量(需Nginx编译时支持TOA模块,或通过第三方补丁实现)。
若使用开源TOA补丁,配置示例:
nginx
log_format main '$toa_real_ip - $remote_user [$time_local] "$request" '
                '$status $body_bytes_sent "$http_referer" '
                '"$http_user_agent"';
access_log /var/log/nginx/access.log main;
验证结果
访问Nginx服务,检查日志中$toa_real_ip字段是否为真实公网IP。
王老师 发表于 2025-11-14 13:04
推荐方案:启用NAT日志中的X-Forwarded-For
原理:
通过AF的NAT策略配置,将公网源IP插入到HTTP请求头的X-Forwarded-For字段中,Nginx直接读取该字段即可获取真实IP。此方案无需修改应用代码,兼容性最佳。

操作步骤
配置AF的NAT策略
登录AF管理界面,进入【策略】-【NAT策略】-【新建】。
在源地址转换或目的地址转换规则中,勾选“添加X-Forwarded-For头部”选项(不同版本AF可能表述略有差异,如“记录真实源IP到HTTP头”)。
确保规则匹配内网Nginx的公网访问流量(如入站方向)。
配置Nginx读取X-Forwarded-For
修改Nginx配置文件(通常为nginx.conf或虚拟主机配置文件),在server或location块中添加:
nginx
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                '$status $body_bytes_sent "$http_referer" '
                '"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
重启Nginx服务:

systemctl restart nginx
许久昌 发表于 2025-11-13 11:49
配置2条地址转换,一条目的地址转换(公网过来的)放到上面。另一条内网过来的,正常配置双向地址转换,放到第一条下面。
小鱼学安全 发表于 2025-11-13 09:59
防火墙上
1. 【网络配置】→【路由】→【策略路由】
2. 添加策略路由:
   - 源区域:外部区域
   - 目的区域:内部区域  
   - 服务:HTTP/HTTPS
   - 动作:透明代理
3. 确保NAT规则中源地址转换选择"不转换"
带派 发表于 2025-11-13 09:57
在Nginx中配置X-Forwarded-For(XFF)头,传递真实IP地址。
信子_ 发表于 2025-11-13 09:45
双转那条,限制源ip-只允许内网ip范围用公网地址访问;
互联网侧过来的访问走目的转;
这样,从nginx上看到的,防火墙ip就是内网的pc,公网ip就是互联网的了。