从 NAT 设备和 UFW 重定向 DNS 查询

从 NAT 设备和 UFW 重定向 DNS 查询

我很难弄清楚这个问题。

我有以下网络:

(互联网)--(防火墙)--(PC1(Ubuntu 20.04))--(PC2(Fedora,192.168.0.2))

PC1有两个网卡,(enp4s0)面向防火墙,(eno0)面向PC2

显示的防火墙正在阻止所有传出 DNS 请求,我无法更改这一点。 PC2 需要访问 8.8.8.8,我也无法更改它。但是,只要 PC1 使用内部 DNS 服务器(我们将其称为 192.169.100.100)并且运行以下 UFW 配置,它就可以访问互联网。注意

# Nat table rules
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]

# Forward traffic from eno1 through enp4s0
-A PREROUTING -i enp4s0 -p udp --dport 53 -j DNAT --to-destination 192.169.100.100
-A POSTROUTING -s 192.168.0.0/24 -o enp4s0 -j MASQUERADE

# process the nat table rules
COMMIT

正如您所看到的,所有流量都是从 PC2 通过 PC1 转发的。效果很好。 PC2 可以 ping 通 8.8.8.8,没有问题。但是,由于 PC2 尝试使用 8.8.8.8 解析地址,并且这些地址被防火墙阻止,因此我无法按要求使用 PC2。我想做的是将 8.8.8.8 的任何 DNS 请求路由到 192.169.100.100,以便它们解析。

那可能吗?如果是这样,请告诉我我做错了什么,因为我很困惑。我已经盯着wireshark看数据包尝试到达8.8.8.8有一段时间了。

谢谢!

答案1

安装bind9或其他可以在Ubuntu机器上转发请求的dns服务器,并将Fedora的名称服务器条目指向Ubuntu机器的IP。

Debian 及其衍生版本(如 Ubuntu)上默认安装的 bind9 是充当查询根服务器的缓存名称服务器。如果您采用此路线并且 Ubuntu 盒子无法访问它们,请考虑使用forwarders中的选项/etc/bind/named.conf.options

请注意,由于 systemd“需要”工作的方式,您已经有了一个内部代理 dns 服务器,但我不知道是否可以将其作为 LAN 上的服务公开。

相关内容