原始项目是dns-reverse-proxy ,我提了MR,但是对方认为不够通用没有接受,就放在我的项目维护了。

增加了DoH支持,适合某些办公场景,需要DNS分流,比如公司有内部专用dns解析内部域名,外部域名可以走公共dns,同时网络内又存在DNS过滤设备,UDP的解析会被污染,某些被过滤掉的域名可以走DoH。

当然也可以简单的把它当作UDP DNS转DoH,可以让你的的电脑的所有dns请求都走DoH,而不只是浏览器。

添加了passivedns格式的DNS日志

1644906118.454894||10.0.1.27:52639||114.114.114.114:53||IN||gsp64-ssl.ls.apple.com.||CNAME||gsp64-ssl.ls-apple.com.akadns.net.||2431||1
1644906118.454932||10.0.1.27:52639||114.114.114.114:53||IN||gsp64-ssl.ls-apple.com.akadns.net.||A||17.142.171.5||69||1
1644906118.454942||10.0.1.27:52639||114.114.114.114:53||IN||gsp64-ssl.ls-apple.com.akadns.net.||A||17.142.171.6||69||1
1644906118.454948||10.0.1.27:52639||114.114.114.114:53||IN||gsp64-ssl.ls-apple.com.akadns.net.||A||17.142.171.7||69||1

使用:

#!/bin/bash
# Get dns-reverse-proxy from https://github.com/notsobad/dns-reverse-proxy
pushd /xxx/dns-reverse-proxy
LAN_DNS=`systemd-resolve --status | grep 'DNS Servers'|cut -d ':' -f2|xargs`:53
echo "lan dns": $LAN_DNS
sudo go run dns_reverse_proxy.go \
    -address 0.0.0.0:53 \
    -default 114.114.114.114:53 \
    -route .baidu.com=https://dns.alidns.com \
    -route .aliyundrive.com=https://dns.alidns.com \
    -route .abc.com.=$LAN_DNS\
    -route .test.com.=$LAN_DNS