如何通过 bind9 正确地将 http(s) 流量指向 squid 代理?

如何通过 bind9 正确地将 http(s) 流量指向 squid 代理?

我已经设置了一个运行 bind 和 squid 的 Ubuntu 服务器。在我的家庭网络中,我设置了一个运行 pi-hole 和 dnsmasq 的 raspi。Dnsmasq 的设置使其能够使用外部 Ubuntu 服务器的 IP 覆盖某些 dns 请求。我希望此服务器上的 bind 将所有进入的 dns 请求指向 squid 代理,这样这些流量就会通过代理,而无需在我的家庭网络中的每个设备上设置代理。基本上,就像所有这些 smartDNS 服务一样。

我无法让它正常工作。dns 服务器工作正常,并返回我的服务器的 IP 地址:

~$ nslookup google.com 123.456.789.111
Server:         123.456.789.111
Address:        123.456.789.111#53

当我在浏览器中设置代理时,它工作正常,Google 会报告123.456.789.111我的 IP 地址。但是,当我将服务器的 IP 实施到 raspi 的 dnsmasq 规则中时,它似乎不起作用。没有 DNS 请求解析。

我怀疑此问题的根源在于 http(s) 代理使用 connect 方法,而此设置无法做到这一点?

我该如何解决这个问题?有什么办法可以解决这个问题吗?我尝试了一些不同的指南,还尝试了使用 sniproxy 的一键安装 github 脚本。Sniproxy 在此设置下运行良好,但在 https 流量方面,似乎只有 http 可以工作。

我是否需要了解一下 squid 的 peek 和 splice 功能?

过去几周我对此进行了大量研究,但没有找到任何可以利用的东西。任何帮助都非常感谢!


配置


我的 squid.conf 是标准的,除了acl localnet允许来自我的本地 IP 的流量的条目之外。

我的named.conf:

// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local

include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";

我的named.conf.local:

//
// Do any local configuration here
//

// Consider adding the 1918 zones here, if they are not used in your
// organization

acl "trusted" {
    any;
};
include "/etc/bind/zones.override";

命名的.conf.选项:

options {
        directory "/var/cache/bind";

        forwarders {
            2001:4860:4860::8888;
            2001:4860:4860::8844;
            8.8.8.8;
            8.8.4.4;
        };

        dnssec-validation auto;

        auth-nxdomain no;    # conform to RFC1035
        listen-on-v6 { any; };

        allow-query { trusted; };
        allow-transfer { none; };

        allow-recursion { trusted; };
        recursion yes;
};

数据库.覆盖:

$TTL  86400

@   IN  SOA ns1 root (
            2022100701  ; serial
            604800      ; refresh 1w
            86400       ; retry 1d
            2419200     ; expiry 4w
            86400       ; minimum TTL 1d
            )

    IN  NS  ns1

ns1 IN  A   127.0.0.1
@   IN  A   123.456.789.111
*   IN  A   123.456.789.111

区域.覆盖:

zone "." { type master; file "/etc/bind/db.override"; };

相关内容