原创文章,转载请注明出处
https://qiedd.com/
安装并配置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.5和223.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 条评论