Forked from xirixiz/pihole-macvlan-synology-docker.txt
Created
January 20, 2020 01:53
-
-
Save devloco/ad46c3e9d25319a479dc6b5b3787c2e0 to your computer and use it in GitHub Desktop.
Add a PiHole instance on a macvlan enabled Docker network (Synology eth0 example)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# NAS IP: 192.168.1.10 in this example | |
# DHCP scope reservation for macvlan: 192.168.1.208/28 (Details below) | |
## Network: 192.168.1.208/28 11000000.10101000.00000001.1101 0000 (Class C) | |
## HostMin: 192.168.1.209 11000000.10101000.00000001.1101 0001 | |
## HostMax: 192.168.1.222 11000000.10101000.00000001.1101 1110 | |
## Hosts/Net: 14 (Private Internet) | |
# Create a macvlan Docker network using eth0 | |
docker network create --driver=macvlan --gateway=192.168.1.1 --subnet=192.168.1.10/24 -o parent=eth0 macvlan | |
# Create a Synology macvlan0 bridge network attached to the physical eth0, and add the ip range scope (sudo) | |
ip link add macvlan0 link eth0 type macvlan mode bridge | |
ip addr add 192.168.1.208/28 dev macvlan0 | |
ifconfig macvlan0 up | |
# It's also possible to create a scheduled task at startup as the root user, it's wise to append the following in front of the above commands | |
while ! ip link show eth0 | grep -q 'state UP'; do | |
sleep 1 | |
done | |
# Perform a basic test with NGINX | |
docker run --net=macvlan -d --ip=192.168.1.210 -p 80:80 nginx | |
# Browse to http://192.168.1.210 in your local network, you should see the nginx welcome page! ...Don't forget to remove the container afterwards... | |
# Now start PiHole on a macvlan enabled IP address f.e. | |
# Also I've added a fake mac address so the container always uses the samen mac, handy to make a reservation in your DHCP scope or do whatever you like to do with it. | |
DOCKERHOME=<some path> | |
NAME=pihole-macvlan | |
IMAGE=pihole/pihole | |
docker run --detach \ | |
--name ${NAME} \ | |
--restart always \ | |
--volume /etc/localtime:/etc/localtime:ro \ | |
--volume ${DOCKERHOME}/data/${NAME}/config:/etc/pihole \ | |
--volume ${DOCKERHOME}/data/${NAME}/dnsmasq.d:/etc/dnsmasq.d \ | |
--cap-add NET_ADMIN \ | |
--dns=127.0.0.1 \ | |
--dns=1.1.1.1 \ | |
--env "DNS1=1.1.1.1" \ | |
--env "DNS2=1.0.0.1" \ | |
--env "ServerIP=192.168.1.210" \ | |
--env "DNSMASQ_LISTENING=all" \ | |
--env "WEBPASSWORD=<secret>" \ | |
--env "TZ=Europe/Amsterdam" \ | |
--network macvlan \ | |
--ip "192.168.1.210" \ | |
--mac-address "02:42:c0:a8:01:d7" \ | |
${IMAGE} | |
# Happy days! |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment