安装并配置docker

安装docker

pacman -S docker

启动并设置开机启动docker

systemctl start docker
systemctl enable docker

设置docker网络

#ens18请换成你的网卡,开启网卡混杂模式
ip link set ens18 promisc on

#创建macvlan
docker network create -d macvlan --subnet=192.168.123.0/24 --gateway=192.168.123.1 -o parent=ens18 macvlan

部署pihole

拉取镜像并部署

docker run -d --name pihole --network macvlan --ip 192.168.123.5 \
-e TZ="Asia/Shanghai" \
-v /opt/pihole/pihole/:/etc/pihole/ \
-v /opt/pihole/dnsmasq.d/:/etc/dnsmasq.d/ \
--dns=1.1.1.1 --dns=1.0.0.1 \
--restart=unless-stopped pihole/pihole:latest 

设置密码

docker exec -it pihole pihole -a -p

配置pihole

浏览器打开 http://192.168.123.5

进入容器设置(Settings-DNS)

可以把Custom DNS设置成 223.5.5.5223.6.6.6

然后下面的 “Interface listening behavior
更改成“Listen on all interfaces, permit all origins

然后拉到最下面,save

部署adguard

拉取镜像并部署

docker run --name adguardhome -d --network macvlan \
--ip 192.168.123.6 -e TZ="Asia/Shanghai" \
-v /opt/adguardhome/workdir:/opt/adguardhome/work \
-v /opt/adguardhome/confdir:/opt/adguardhome/conf \
--restart=unless-stopped adguard/adguardhome

配置adguard

浏览器进入 http://192.168.123.6:3000

配置网络

此时如果你在arch内ping 192.168.123.5和192.168.123.6是无法ping通的

root@ArchLinux ~# ping 192.168.123.5
PING 192.168.123.5 (192.168.123.5) 56(84) bytes of data.
From 192.168.123.142 icmp_seq=1 Destination Host Unreachable
From 192.168.123.142 icmp_seq=2 Destination Host Unreachable
From 192.168.123.142 icmp_seq=3 Destination Host Unreachable

因为docker的macvlan为了安全,宿主机不能直接与容器通信,但是macvlan之间可以

因此我们可以在宿主机上也创建一个macvlan

首先我们的arch需要有NetworkManager
注:不适用于用其他网路管理器的小伙伴

创建macvlan并设置ip

nmcli connection add type macvlan dev ens18 mode bridge ifname macvlan ip4 192.168.123.4/24 gw4 192.168.123.1 save yes

现在可以指定网卡ping通容器,但是还是不能直接与容器通信,因为还没设置路由

root@ArchLinux ~ [1]# ping 192.168.123.5 -I macvlan
PING 192.168.123.5 (192.168.123.5) from 192.168.123.4 macvlan: 56(84) bytes of data.
64 bytes from 192.168.123.5: icmp_seq=1 ttl=64 time=0.201 ms
64 bytes from 192.168.123.5: icmp_seq=2 ttl=64 time=0.041 ms

然后通过nmcli con我们看看macvlan的uuid

root@ArchLinux ~# nmcli con
NAME                UUID                                  TYPE      DEVICE  
Wired connection 1  19a07ae4-c935-304b-b1bb-c0000d6e962b  ethernet  ens18   
macvlan-macvlan     34db7cf2-2027-42e2-b598-c486808fb625  macvlan   macvlan 
docker0             19b917c8-8824-41f2-9fa2-934d4db3651e  bridge    docker0 

配置macvlan

#通过uuid进行设置
nmcli con edit 34db7cf2-2027-42e2-b598-c486808fb625

#然后设置路由
#设置到pihole的路由
nmcli> set ipv4.routes 192.168.123.0/24 192.168.123.5 1
                                             
#设置到adguard的路由
nmcli> set ipv4.routes 192.168.123.0/24 192.168.123.6 1                                               

#保存配置
nmcli> save                                                                                         
Connection 'macvlan-macvlan' (34db7cf2-2027-42e2-b598-c486808fb625) successfully updated.

#退出
nmcli> q                                                                                           

#最后重启一下arch
reboot

重启后就发现能ping通了

检查一下是否能够使用

#安装dnsutils
pacman -S dnsutils

#测试
nslookup baidu.com 192.168.123.5

nslookup baidu.com 192.168.123.6

Openwrt中DHCP通告DNS

网络->接口->lan,下方DHCP服务器->高级设置->DHCP选项
填入6,192.168.123.5,192.168.123.6,点击+号,保存&应用

然后重启路由器


0 条评论

发表评论

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据