自建DNS server 同时屏蔽某些网站

1. 安装bind

yum -y install bind

2. 修改/etc/named.conf

在这里插入图片描述

3.新建域名,修改/etc/named.rfc1912.zones

在这里插入图片描述

4. 创建域名配置文件

# cp named.localhost qwj.com 
# cat qwj.com 
$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
@       IN      A    10.10.10.1
www     IN      A    10.10.10.1
game    IN      A    10.10.10.1

那么 qwj.com ,www.qwj.com ,game.qwj.com 指定了IP.

5. 本地域名服务器屏蔽某网站aaa.com

5.1 新建域名aaa.com,修改/etc/named.rfc1912.zones

将如下内容加入到该文件最后


zone "aaa.com" IN {
        type master;
        file "aaa.com";
        allow-update { none; };
};

5.2 创建域名配置文件

# cat aaa.com 
$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
@       IN      A    10.10.10.1
www     IN      A    10.10.10.1
game    IN      A    10.10.10.1

6.重启named服务并测试

service named restart
ping www.google.com
ping www.aaa.com
ping www.qwj.com
<think>嗯,用户之前问了如何检查443端口是否被阻止,现在他遇到了具体的问题,执行telnet命令时出现“Server lookup failure: registry-1.docker.io:443, 域名解析暂时失败”。我需要分析这个问题可能的原因和解决办法。 首先,用户使用的是telnet命令,但错误提示是域名解析失败,说明问题可能出在DNS解析上,而不是端口被阻止。那可能的原因有哪些呢? 可能一:DNS服务器配置问题。用户本地的DNS服务器无法解析registry-1.docker.io这个域名。需要检查系统的DNS配置,比如/etc/resolv.conf文件是否正确,或者是否使用了错误的DNS服务器。 可能二:网络连接问题。虽然用户能执行telnet,但可能网络连接不稳定,导致DNS查询无法完成。需要检查网络是否通畅,是否能ping通DNS服务器,或者尝试更换其他DNS如8.8.8.8测试。 可能三:域名拼写错误。用户可能输入了错误的域名,比如拼写错误,或者多打了空格。需要确认域名是否正确,比如registry-1.docker.io是否正确,或者是否存在其他类似的域名。 可能四:本地防火墙或安全软件干扰。有些防火墙可能会阻止DNS查询,导致解析失败。需要检查防火墙设置,是否放行了DNS查询的53端口。 可能五:DNS缓存问题。系统可能有旧的DNS缓存,导致无法解析最新的记录。可以尝试清除DNS缓存,或者使用不同的DNS查询工具如dig或nslookup来确认。 可能六:ISP或网络提供商的问题。用户的网络提供商可能DNS服务出现故障,或者被限制访问某些域名。尝试更换其他DNS服务器,比如Google的8.8.8.8,或者使用HTTP DNS服务。 接下来,我需要为用户提供逐步的解决方案。首先确认域名是否正确,然后检查DNS解析,使用nslookup或dig测试,然后检查网络连接,最后建议更换DNS服务器或检查防火墙设置。 另外,用户之前使用过registry-1.docker.io这个地址,可能是在Docker相关的操作中,比如拉取镜像,所以需要确保这个域名确实存在且可解析。可能还需要考虑这个域名是否被某些网络策略屏蔽,尤其是在企业网络或某些地区。 还需要提醒用户,如果更换DNS后仍无法解析,可能需要联系网络管理员,或者使用代理/VPN绕过可能的限制。另外,使用ping命令检查是否能解析域名,或者直接使用IP地址测试端口连通性,但需要注意HTTPS需要SNI,直接使用IP可能不适用,但测试端口是否开放可以使用telnet IP 443。 总结下来,用户的当前问题是DNS解析失败,而非端口被阻止,所以需要重点解决DNS相关的问题,而不是之前的端口检测方法。需要分步骤引导用户检查DNS配置,测试解析,更换DNS服务器,检查网络连接等。</think>根据你提供的错误信息 `Server lookup failure: registry-1.docker.io:443, 域名解析暂时失败`,问题出在 **DNS 解析阶段**,即系统无法将域名 `registry-1.docker.io` 解析为对应的 IP 地址,而非 443 端口被阻止。以下是排查和解决步骤: --- ### **1. 检查域名拼写和有效性** - **确认域名是否正确**:`registry-1.docker.io` 是 Docker Hub 的官方镜像仓库域名,确保没有拼写错误(如多余的符号或空格)。 - **手动验证域名是否有效**: ```bash ping registry-1.docker.io ``` - 若返回 `unknown host` 或超时,表明 DNS 解析失败。 - 若返回 IP 地址(如 `52.54.23.126`),说明域名解析成功。 --- ### **2. 检查 DNS 解析配置** - **查看当前 DNS 服务器**: ```bash cat /etc/resolv.conf ``` 检查 `nameserver` 行是否指向有效的 DNS 服务器(如 `8.8.8.8`、`114.114.114.114`)。 - **手动指定 DNS 服务器测试**: ```bash # 使用 Google DNS 解析域名 nslookup registry-1.docker.io 8.8.8.8 # 或使用 dig 工具(需安装 dnsutils) dig @8.8.8.8 registry-1.docker.io ``` - 如果成功返回 IP 地址,说明本地 DNS 服务器配置有问题。 - 如果仍失败,可能是网络限制或域名被封锁。 --- ### **3. 检查网络连接** - **确认网络是否连通**: ```bash ping 8.8.8.8 ``` - 若无法 ping 通,说明网络连接异常(检查网卡、路由、防火墙)。 - 若能 ping 通但 DNS 解析失败,问题集中在 DNS 配置或域名本身。 --- ### **4. 清除 DNS 缓存** - **Linux 系统**: ```bash systemd-resolve --flush-caches # 适用于 systemd-resolved ``` - 若未使用 systemd,重启网络服务: ```bash systemctl restart networking # Debian/Ubuntu systemctl restart NetworkManager # CentOS/RHEL ``` --- ### **5. 排查防火墙或代理干扰** - **检查本地防火墙是否允许 DNS 流量(UDP/TCP 53 端口)**: ```bash # 查看 iptables 规则 iptables -L -n -v | grep 53 ``` - **检查是否配置了代理**: - 若使用代理(如 `http_proxy` 环境变量),需确保代理服务器允许 DNS 解析。 - 临时关闭代理测试: ```bash unset http_proxy https_proxy ``` --- ### **6. 更换 DNS 服务器** 如果本地 DNS 不可靠,修改 `/etc/resolv.conf` 使用公共 DNS: ```bash # 备份原文件 cp /etc/resolv.conf /etc/resolv.conf.bak # 替换为 Google DNS echo "nameserver 8.8.8.8" > /etc/resolv.conf echo "nameserver 8.8.4.4" >> /etc/resolv.conf ``` --- ### **7. 使用 IP 地址直接测试端口** 若 DNS 解析持续失败,可尝试通过已知 IP 地址直接测试 443 端口: ```bash # 获取 registry-1.docker.io 的 IP 地址(需在可解析的设备上查询) dig +short registry-1.docker.io # 假设获取到 IP 为 52.54.23.126,测试端口连通性 telnet 52.54.23.126 443 ``` - 若连接成功,说明 443 端口开放,问题仅在于 DNS 解析。 - 若连接失败,可能是 IP 失效或端口被阻止。 --- ### **总结:可能的原因** 1. **本地 DNS 配置错误**:`/etc/resolv.conf` 中的 DNS 服务器不可用。 2. **网络限制**:企业网络或 ISP 封锁了 DNS 请求或特定域名。 3. **域名失效**:`registry-1.docker.io` 暂时不可用(可能性较低)。 4. **代理或防火墙干扰**:拦截DNS 查询或 UDP 53 端口的流量。 --- ### **解决方案** 1. **更换 DNS 服务器**(如 `8.8.8.8` 或 `1.1.1.1`)。 2. **检查网络代理设置**,确保 DNS 查询不被拦截。 3. **联系网络管理员**,确认是否限制了对 Docker 相关域名的访问。 4. 使用 `IP + 端口` 临时绕过 DNS 解析(需确保 IP 有效)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值