You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Docker部署Pi-hole后网站子网免重定向功能异常排查求助

Docker部署Pi-hole后网站子网免重定向功能异常排查求助

大家好,最近我正在把一堆跑着简单服务的VM迁移到容器化环境,其中就包括我们的Pi-hole DNS服务器。原本一切都挺顺利,直到收到反馈说我们的某个网站重定向出问题了——按照供应商要求,外部流量要跳转到登录页,但我们子网内的员工和公共PC应该直接访问目标页面,可现在子网内的设备反而被错误重定向了。

我的Apache2 web服务器还在VM里,配置完全没改过,这个重定向规则已经正常运行一年多了。只要关掉Pi-hole容器、换回原来的Pi-hole VM,重定向就立刻恢复正常,所以我肯定问题出在Docker的网络处理上。

先给大家说下环境背景:

  • 物理局域网网段:10.0.0.0/24
  • 因为公司要求,Pi-hole容器用的是macvlan模式,直接接入物理网络,不是用Docker主机的IP
  • Pi-hole VM和容器的配置完全一致,我核对了三遍还找同事帮忙检查过,没有差异

下面是我创建Docker macvlan网络的命令:

sudo docker network create --config-only --subnet 10.0.0.0/24 --gateway 10.0.0.1 -o parent=eth0 --ip-range 10.0.0.0/26 --aux-address 'host=10.0.0.10' my_macvlan_config
sudo docker network create -d macvlan --config-from my_macvlan_config --attachable my_macvlan_network
sudo ip link add macvlan_shim link eth0 type macvlan mode bridge
sudo ip addr add 10.0.0.10/32 dev macvlan_shim
sudo ip link set macvlan_shim up
sudo ip route add 10.0.0.0/26 dev macvlan_shim

各设备的IP地址:

  • Docker主机:10.0.0.7
  • Pi-hole容器:10.0.0.3
  • Apache2 web服务器:10.0.0.2

附上Apache的重定向规则(敏感信息已打码):

RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^10\.0\.
RewriteCond %{REMOTE_ADDR} !^[REDACTED]
RewriteCond %{REMOTE_ADDR} !^[REDACTED]
RewriteCond %{REMOTE_ADDR} !^[REDACTED]
RewriteRule [REDACTED]\.html$ https://[REDACTED]

我试过把自己的IP直接加到重定向排除列表里,但还是没用。一开始我完全没想到是容器的问题,以为只有Apache配置会影响HTTP重定向,折腾了好久才定位到是Pi-hole容器导致的异常。

现在Pi-hole的DNS解析、广告拦截功能都正常,唯独这个子网免重定向的规则在容器模式下失效。有没有懂Docker网络的朋友能指点下,是不是macvlan的什么特性导致了这个问题?谢谢大家!

备注:内容来源于stack exchange,提问作者Tayotoka

火山引擎 最新活动