我正在运行 Raspberry Pi,并试图Pi孔工作。我正在跑步容器从 Podman 中新建一个 pi-hole 用户(非 root 用户)。我发布了以下端口:
- 127.0.0.1:5053:53/tcp
- 127.0.0.1:5053:53/udp
- 127.0.0.1:8080:80
Web 仪表板(端口80在容器中)在主机的 8080 端口上可用,我设置通过 Nginx 访问它:这已经完美运行了。我特意制作53可通过端口获取端口5053在主机上,因为pi 孔用户无法绑定到子1024 个端口(非 root)。我的计划是配置ufw
从主机端口转发数据包53到127.0.0.1:5053但我似乎无法让这个设置正常工作。
目前我可以使用端口从容器内部和主机解析名称5053但是我进入了connection refused
ufw 转发端口:
# Working
> podman exec pi-hole nslookup pi-hole.net 127.0.0.1
Server: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
Name: pi-hole.net
Address: 3.18.136.52
# Working
> nslookup -port=5053 pi-hole.net 127.0.0.1
Server: 127.0.0.1
Address: 127.0.0.1#5053
Non-authoritative answer:
Name: pi-hole.net
Address: 3.18.136.52
# Not working
> nslookup pi-hole.net 127.0.0.1
;; communications error to 127.0.0.1#53: connection refused
;; communications error to 127.0.0.1#53: connection refused
;; communications error to 127.0.0.1#53: connection refused
;; no servers could be reached
我设置ufw
如下本指南。我还将端口列入了白名单ufw
,请参见以下输出:
> sudo ufw status
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
53/udp ALLOW Anywhere
53/tcp ALLOW Anywhere
5053 ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)
53/udp (v6) ALLOW Anywhere (v6)
53/tcp (v6) ALLOW Anywhere (v6)
5053 (v6) ALLOW Anywhere (v6)
我在/etc/ufw/before.rules像这样:
...
*nat
:PREROUTING ACCEPT [0:0]
-A PREROUTING -p tcp --dport 53 -j DNAT --to-destination 127.0.0.1:5053
-A PREROUTING -p udp --dport 53 -j DNAT --to-destination 127.0.0.1:5053
COMMIT
...
我还尝试了以下方法:
- 我确定
net/ipv4/ip_forward=1
存在/etc/ufw/sysctl.conf。 - 我确定
net.ipv4.ip_forward=1
存在/etc/sysctl.conf。 - 我确定
DEFAULT_FORWARD_POLICY="ACCEPT"
存在/etc/默认/ufw。