背景

线上环境计划稍后上CDN,但是对于业务稳定性不确定,之前与研发沟通初步认为没有问题。但是,为了确保线上使用CDN后不影响业务运行,还是觉着可以在本地办公环境下,对目标域名进行fake。

问题出现

2024-03-20T09:13:50.png

在操作的过程中:

  • 对dnsmasq的配置内容进行新增

将目标域名解析为CDN域名的A记录。

  • 调整办公网络DNS

修改出口路由器DHCP配置的DNS

修改为DNS服务器192.168.124.198

如果没有问题,那么问题就来了。

先是后面的同事,说电脑卡,重启后还是卡。我一看,简直除了拖动窗口无法点击其他东西了,关机也是ctrl alt delete,然后右下角选择关机。

这时候,办公室的其他同事也发现,除了电脑微信可以使用,网站无法打开。

毫无意外,势必是刚刚修改的DNS的问题。

赶紧进行切换,稍后就慢慢恢复了。

破案过程

部署 dnsmassq监控

本地有categraf监控客户端,直接跑起来dnsmasq_exporter,然后使用input.exec插件将数据通过categraf打给夜莺监控就可以看了。

wget -O /usr/bin/dnsmasq_exporter http://vip.123pan.cn/1815238395/download/categraf/dnsmasq/dnsmasq_exporter
chmod a+x /usr/bin/dnsmasq_exporter

cat <<'EOF'>/usr/lib/systemd/system/dnsmasq_exporter.service
[Unit]
Description=DNS caching server.
After=network.target

[Service]
ExecStart=/usr/bin/dnsmasq_exporter --log.path=/var/log/dnsmasq.log

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl restart dnsmasq_exporter


cat <<'EOF'>/opt/categraf/conf/input.exec/dnsmasq_exporter.sh
#!/bin/bash
curl http://127.0.0.1:9153/metrics
EOF
chmod a+x /opt/categraf/conf/input.exec/dnsmasq_exporter.sh

2024-03-20T09:15:55.png

尝试在出口机房部署dnsmasq

已经部署好了。俩机器从ping的角度看也没啥问题。

2024-03-22T08:15:22.png

查看防火墙对于访问源的session速度限制

也没有限制哦。
2024-03-22T08:14:56.png

好像确实是dnsmasq的性能问题

用一会儿就断线了

切换bind

yum install -y bind

cat <<'EOF'>/etc/named.conf
options {
    listen-on port 53 { any; };
    listen-on-v6 port 53 { ::1; };
    directory     "/var/named";
    dump-file     "/var/named/data/cache_dump.db";
    statistics-file "/var/named/data/named_stats.txt";
    memstatistics-file "/var/named/data/named_mem_stats.txt";
    recursing-file  "/var/named/data/named.recursing";
    secroots-file   "/var/named/data/named.secroots";
    allow-query     { any; };
    recursion yes;
    dnssec-enable yes;
    dnssec-validation no;
    bindkeys-file "/etc/named.root.key";
    managed-keys-directory "/var/named/dynamic";
    pid-file "/run/named/named.pid";
    session-keyfile "/run/named/session.key";
    max-cache-size 256M;
    forwarders {
        223.5.5.5;
    };
    forward only;
};
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
zone "." IN {
    type hint;
    file "named.ca";
};
statistics-channels {
    inet 127.0.0.1 port 8053 allow { 127.0.0.1; };
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
EOF

named-checkconf
rndc reload

部署监控

wget --no-check-certificate -O /bin/bind_exporter http://vip.123pan.cn/1815238395/download/bind/bind_exporter
chmod a+x /bin/bind_exporter

cat <<'EOF'>/etc/systemd/system/bind_exporter.service
[Unit]
Description=BIND Exporter for Prometheus
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
ExecStart=/bin/bind_exporter --bind.stats-url=http://localhost:8053/
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable bind_exporter
systemctl start bind_exporter

好像一会儿也断,但是比dnsmasqs要好一些

担心同事上不去网,中午就测试了一小会儿。有机会再测试。

2024-03-26T06:12:19.png

切换另一台openeuler + dnsmasq

不行。能看到服务器收到包,但是就是不想应。而且ifconfig查看网卡接口的drop包不断上涨。
这个ifconfig的drop是网卡综合丢包的计数器。
偶然的机会,发现openeuler的yum仓库中的dnsmasq有问题。
2024-03-26T06:13:17.png
2024-03-26T06:16:18.png

最后修改:2024 年 05 月 11 日
如果觉得我的文章对你有用,请随意赞赏