群晖DSM安装AdGuard Home显示真实客户IP地址
为什么要安装AdGuard Home?
AdGuard Home 是广告拦截与反跟踪软件,可以将广告与追踪相关的域名屏蔽,同时不再需要安装任何客户端;可以部署在公司内部网络当中或者家庭网络当中,一定程度上可以通过DNS上高效解决广告问题。
AdGuard Home 的工作原理是在 DNS 的域名解析过程中拦截网页上的广告。AdGuard Home 支持 DNS over TLS 和 DNS over HTTPS。本文主要讲解的是在群晖上部署AdGuardHome无法显示客户端真实IP地址的问题。
客户端无法显示真实IP地址如何解决?
具体的表现就是在AdGuard Home的首页页面上的“客户端排行”板块中显示的是单一的IP地址,该IP地址是经过转换的,非网络中的客户端真是IP地址。
原因分析
Docker模式的网络连接是系统模式创建的Bridge网络,该网络虽然名为网桥,其实是打造了一个三层的网络环境;这个具体的内容,大家可以在网络搜索一下;我在网上找到了一个图,最能说明这个bridge的逻辑;
Bridge模式的工作原理:当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。从docker0子网中分配一个IP给容器使用,并设置docker0的IP地址为容器的默认网关。在主机上创建一对虚拟网卡veth pair设备,Docker将veth pair设备的一端放在新创建的容器中,并命名为eth0(容器的网卡),另一端放在主机中,以vethxxx这样类似的名字命名,并将这个网络设备加入到docker0网桥中。可以通过brctl show命令查看。bridge模式是docker的默认网络模式,不写--net参数,就是bridge模式。使用docker run -p时,docker实际是在iptables做了DNAT规则,实现端口转发功能。可以使用iptables -t nat -vnL查看。
问题解决
第一步:启动adguardhome的镜像,创建容器
第二步:创建容器中,在“高级设置”中设置网络相关的参数
第三步:勾选“网络”选项卡最下方的“使用与Docker Host相同的网络”,勾选成功后,页面中央会提醒“与Docker host使用相同网络时,无法再加入其他网络”
最后:创建成功后,就会发现后续无需设置端口的映射关系,而且在配置页面(:3000端口的页面),也可以看到监听IP地址的地方已经可以看到真实的服务器IP地址了(就是NAS的iP地址)
原理分析
因为这种设置的情况下,网络模式修改为了:Host模式。该模式下容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。






ren者
校验提示文案
bao3
校验提示文案
gottenall
校验提示文案
CP制造
校验提示文案
Hi王蕴
校验提示文案
兔兔那么可爱da
校验提示文案
神奇萝卜
校验提示文案
gottenall
校验提示文案
神奇萝卜
校验提示文案
bao3
校验提示文案
ren者
校验提示文案
兔兔那么可爱da
校验提示文案
Hi王蕴
校验提示文案
CP制造
校验提示文案