检查防火墙规则、服务绑定地址及网络连通性,确认Nginx监听内网IP且DNS服务
Nginx与DNS内网访问故障排查指南
问题现象描述
在内网环境中部署的Nginx服务器和DNS服务器出现以下异常现象:
- 通过内网IP无法访问Nginx服务(默认80/443端口)
- 内网设备无法解析DNS服务器提供的域名解析服务
- 外网访问正常,排除服务器硬件故障
故障排查流程图
graph TD
A[服务状态检查] > B{Nginx/DNS服务}
B >|未运行| C[服务启动]
B >|已运行| D[网络连通性验证]
D > E[防火墙规则检查]
D > F[网络配置核查]
E > G[规则调整]
F > H{DNS解析异常}
H >|是| I[DNS配置检查]
H >|否| J[Nginx配置检查]
I > K[DNS服务重启]
J > L[Nginx配置修正]
核心问题分析表
| 问题维度 | 可能原因 | 验证方法 | 解决措施 |
|---|---|---|---|
| 服务状态 | 进程未启动/异常终止 | systemctl status | 启动服务:systemctl start nginxsystemctl start named |
| 网络连通 | 防火墙阻断 | firewallcmd listall |
开放端口:firewallcmd addport=80/tcp permanentfirewallcmd addport=53/udp permanent |
| SELinux限制 | getenforce |
临时关闭:setenforce 0永久修改: /etc/selinux/config |
|
| 网络配置错误 | ip a查看IP配置 |
修正子网掩码/网关配置 | |
| DNS解析 | 客户端配置错误 | 检查/etc/resolv.conf |
添加DNS服务器IP |
| 区域文件损坏 | namedcheckzone |
修复区域文件语法错误 | |
| Nginx配置 | 访问控制限制 | 检查nginx.conf中的allow/deny |
添加内网IP段到允许列表 |
关键配置检查点
Nginx核心配置项
# 典型访问控制配置示例
http {
server {
listen 80;
server_name _;
# 允许内网访问配置
allow 192.168.1.0/24; # 允许整个C段
deny all; # 拒绝其他所有访问
# 其他配置...
}
}
DNS服务配置要点
# named.conf关键配置片段
options {
directory "/var/named";
# 允许内网递归查询
allowquery { 192.168.1.0/24; };
# 禁止外部递归查询
allowquerycache { none; };
};
典型故障场景处理
场景1:防火墙规则导致访问阻断
| 检查命令 | 预期输出 | 处理方案 |
|---|---|---|
firewallcmd listall |
80/tcp 未出现在放行列表 | firewallcmd addport=80/tcp permanentfirewallcmd reload |
| UDP 53被阻断 | firewallcmd addport=53/udp permanentfirewallcmd reload |
场景2:SELinux策略限制
# 查看当前模式 getenforce # 输出:Enforcing # 临时关闭测试 setenforce 0 # 如果访问恢复,需永久修改配置 sed i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
网络连通性验证方法
Nginx服务检测
# 基础连通性测试 ping 192.168.1.100 # 替换为实际服务器IP curl http://192.168.1.100 # 直接IP访问测试 # HTTPS测试(如果配置SSL) openssl s_client connect 192.168.1.100:443
DNS解析验证
# 客户端配置检查 cat /etc/resolv.conf # 应包含类似:nameserver 192.168.1.50 # 域名解析测试 dig @192.168.1.50 www.internal.com # 预期返回:Query response from 192.168.1.50
常见问题处理汇总表
| 故障现象 | 可能原因 | 处理步骤 | 预期结果 |
|---|---|---|---|
| 能ping通但无法访问Nginx | 防火墙规则/SELinux限制 | 检查firewalld规则 验证SELinux状态 查看Nginx错误日志 |
正常打开网页/API响应 |
| DNS解析超时 | DNS服务未启动/配置错误 | systemctl status named检查 named.log日志验证区域文件语法 |
成功返回解析结果 |
| 间歇性访问失败 | 网络ACL策略/负载过高 | 检查QoS策略 监控服务器负载 查看连接数限制 |
持续稳定访问 |
相关问题与解答
Q1:如何验证Nginx是否仅限制特定网络访问?
A:可以通过以下步骤验证:

- 检查Nginx配置文件中的
allow/deny指令:grep E 'allow|deny' /etc/nginx/nginx.conf /etc/nginx/conf.d/*
- 使用不同网络的客户端进行测试:
- 内网客户端:
curl http://nginx_server_ip - 外网客户端:
curl http://nginx_server_ip(需具有出口IP)
- 内网客户端:
- 查看Nginx访问日志:
tail f /var/log/nginx/access.log
观察是否存在被拒绝的访问记录。
Q2:DNS服务器在内网解析正常但外网异常如何处理?
A:这种情况需要执行以下操作:

- 检查视图(View)配置:
grep 'view' /etc/named.conf
确保存在
internalview和externalview区分配置 - 验证ACL规则:
# 检查允许查询的IP范围 grep 'allowquery' /etc/named.conf
- 测试外部解析:
dig @external_dns_server www.example.com
- 同步区域文件:
# 确保内外网使用相同区域文件版本 ls l /var/named/domain.com.zone
- 检查递归设置:
# 外网应禁用递归查询 grep 'recursion' /etc/named
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/197124.html