nginx和dns内网访问不了

检查防火墙规则、服务绑定地址及网络连通性,确认Nginx监听内网IP且DNS服务

Nginx与DNS内网访问故障排查指南

问题现象描述

在内网环境中部署的Nginx服务器和DNS服务器出现以下异常现象:

  1. 通过内网IP无法访问Nginx服务(默认80/443端口)
  2. 内网设备无法解析DNS服务器提供的域名解析服务
  3. 外网访问正常,排除服务器硬件故障

故障排查流程图

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和dns内网访问不了

  1. 检查Nginx配置文件中的allow/deny指令:
    grep E 'allow|deny' /etc/nginx/nginx.conf /etc/nginx/conf.d/*
  2. 使用不同网络的客户端进行测试:
    • 内网客户端:curl http://nginx_server_ip
    • 外网客户端:curl http://nginx_server_ip(需具有出口IP)
  3. 查看Nginx访问日志:
    tail f /var/log/nginx/access.log

    观察是否存在被拒绝的访问记录。

Q2:DNS服务器在内网解析正常但外网异常如何处理?

A:这种情况需要执行以下操作:

nginx和dns内网访问不了

  1. 检查视图(View)配置:
    grep 'view' /etc/named.conf

    确保存在internalviewexternalview区分配置

  2. 验证ACL规则:
    # 检查允许查询的IP范围
    grep 'allowquery' /etc/named.conf
  3. 测试外部解析:
    dig @external_dns_server www.example.com
  4. 同步区域文件:
    # 确保内外网使用相同区域文件版本
    ls l /var/named/domain.com.zone
  5. 检查递归设置:
    # 外网应禁用递归查询
    grep 'recursion' /etc/named

来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/197124.html

Like (0)
小编小编
Previous 2025年5月1日 15:07
Next 2025年5月1日 15:38

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注