LOADING

群晖DSM安装AdGuard Home显示真实客户IP地址

未分类3年前 (2022)更新 ypng
45 0 0

为什么要安装AdGuard Home?

AdGuard Home 是广告拦截与反跟踪软件,可以将广告与追踪相关的域名屏蔽,同时不再需要安装任何客户端;可以部署在公司内部网络当中或者家庭网络当中,一定程度上可以通过DNS上高效解决广告问题。

AdGuard Home 的工作原理是在 DNS 的域名解析过程中拦截网页上的广告。AdGuard Home 支持 DNS over TLS 和 DNS over HTTPS。本文主要讲解的是在群晖上部署AdGuardHome无法显示客户端真实IP地址的问题。

客户端无法显示真实IP地址如何解决?

群晖DSM安装AdGuard Home显示真实客户IP地址客户端显示单一IP地址

具体的表现就是在AdGuard Home的首页页面上的“客户端排行”板块中显示的是单一的IP地址,该IP地址是经过转换的,非网络中的客户端真是IP地址。

原因分析

Docker模式的网络连接是系统模式创建的Bridge网络,该网络虽然名为网桥,其实是打造了一个三层的网络环境;这个具体的内容,大家可以在网络搜索一下;我在网上找到了一个图,最能说明这个bridge的逻辑;

群晖DSM安装AdGuard Home显示真实客户IP地址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的镜像,创建容器

群晖DSM安装AdGuard Home显示真实客户IP地址启动镜像

第二步:创建容器中,在“高级设置”中设置网络相关的参数

群晖DSM安装AdGuard Home显示真实客户IP地址

第三步:勾选“网络”选项卡最下方的“使用与Docker Host相同的网络”,勾选成功后,页面中央会提醒“与Docker host使用相同网络时,无法再加入其他网络”

群晖DSM安装AdGuard Home显示真实客户IP地址选择网络模式

最后:创建成功后,就会发现后续无需设置端口的映射关系,而且在配置页面(:3000端口的页面),也可以看到监听IP地址的地方已经可以看到真实的服务器IP地址了(就是NAS的iP地址)

原理分析

因为这种设置的情况下,网络模式修改为了:Host模式。该模式下容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。

原文地址:https://post.smzdm.com/p/ad2rvnqk/

© 版权声明

相关文章

暂无评论

暂无评论...