检查防火墙规则、服务绑定地址及网络连通性,确认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 nginx systemctl start named |
网络连通 | 防火墙阻断 | firewallcmd listall |
开放端口:firewallcmd addport=80/tcp permanent firewallcmd 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 permanent firewallcmd reload |
UDP 53被阻断 | firewallcmd addport=53/udp permanent firewallcmd 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