我有一个 Raspberry PI 4B,它正在执行 DNS(PiHole+Bind9)、DHCP、Wireguard 等。RPi 位于 192.168.1.2,它将 192.168.1.1(路由器)作为互联网流量的默认网关。
我的 Chromecast(可能还有其他设备)正在使用硬编码的 DNS 服务器,所以我想将该流量重定向回我自己的 DNS。我的路由器无法拦截 DNS 流量,所以唯一的选择是将所有流量路由到 Raspberry Pi 并用来iptables
拦截 DNS 请求。我想从 DHCP 服务器指定 192.168.1.2 作为默认网关,并使用 iptables 将所有流量(DNS 除外)转发到路由器。我知道这不是 100% 安全的,因为用户可以手动将网关设置为 192.168.1.1 来防止这种情况。我认为设备不会聪明到做到这一点。
我有几个问题:
- Raspberry Pi 4B 的速度是否足以处理 1Gbit/s 上行链路?我有一个 1Gbit/s 光纤连接,在当前设置下可以达到 950Mbit/s。
- 如何设置我的 RPI 以将所有传入流量(不适用于 192.168.1.2)转发至 192.168.1.1?
- 我如何拦截 DNS 请求(TCP/UDP 上的端口 53 并将其路由到 192.168.1.2 上的 DNS)。
答案1
它应该能够工作;通常家用路由器也是软件路由器,几乎没有硬件加速,而且处理器比 RasPi 4B 弱很多。但这也取决于许多配置细节。只需尝试并测试它即可。
只需在 RPi 上设置默认路由并启用 IPv4 转发(
sysctl.conf
,net.ipv4.ip_forward = 1
),基本上就是这样。然后,您将能够将其指定为其他系统上的默认网关,它就会工作。但我不知道 RPi 上的默认网络配置,您可能还需要禁用重定向(在 中sysctl.conf
,您启用转发的位置,设置net.ipv4.conf.all.send_redirects = 0
和net.ipv4.conf.default.send_redirects = 0
)。RPi 可能需要不向主机发出通知:“我为您转发了这个数据包,但您可以自己做,直接使用 .1.1”。这个问题已在另一个网站上得到解答: https://askubuntu.com/questions/592042/iptables-redirect-dns-queries 这完全适用于您的情况。