I have written myself an installation script for zerotier for my server (Raspberry Pi 4 running RPi OS 64-bit).
According to the zerotier instructions I based my script on, an apt remove and a switch to systemd is required. https://zerotier.atlassian.net/wiki/spaces/SD/pages/193134593/Bridge+your+ZeroTier+and+local+network+with+a+RaspberryPi
Unfortunately that breaks wifi. Does anybody know if this can be solved differently?
Thank you very much for our help :)
Alex
The whole script (I removed the name of network):
#!/bin/bash
echo "Install zerotier (y/n)?"
echo "This script will kill wifi capabilities, so the RasPi will only work via Ethernet!"
read user_input
if [ "$user_input" = "y" ]; then
sudo apt-get install iptables-persistent
curl -s https://install.zerotier.com | sudo bash
sudo zerotier-cli join d5e111111
echo "Did you allow client to zerotier network (y/n)?"
read user_input
if [ "$user_input" = "y" ]; then
sudo zerotier-cli listnetworks
sudo zerotier-cli set d5e111111111 allowManaged=0
#sudo apt remove --purge --auto-remove dhcpcd5 fake-hwclock ifupdown isc-dhcp-client isc-dhcp-common openresolv
sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf;
sudo systemctl enable systemd-networkd;
sudo systemctl enable systemd-resolved;
sudo systemctl enable systemd-timesyncd;
sudo zerotier-cli set d5e1111111 allowManaged=0
cat << EOF | sudo tee /etc/systemd/network/25-bridge-br0.network
[Match]
Name=br0
[Network]
Address=192.168.0.2/24
Gateway=192.168.0.1
DNS=192.168.0.1
EOF
cat << EOF | sudo tee /etc/systemd/network/br0.netdev
[NetDev]
Name=br0
Kind=bridge
EOF
cat << EOF | sudo tee /etc/systemd/network/25-bridge-br0-zt.network
[Match]
Name=ztw11111
[Network]
Bridge=br0
EOF
cat << EOF | sudo tee /etc/systemd/network/25-bridge-br0-eth0.network
[Match]
Name=eth0 # might be en*
[Network]
Bridge=br0
EOF
sudo zerotier-cli set d5e51111111 allowManaged=0
sudo tail -n+0 /etc/systemd/network/*
sudo echo "0" > /proc/sys/net/bridge/bridge-nf-call-iptables
sudo iptables -A FORWARD -p all -i br0 -j ACCEPT
sudo iptables-save
fi
echo "Adjust iptables for Zerotier (y/n)?"
read user_input
if [ "$user_input" = "y" ]; then
sudo iptables -I DOCKER-USER -p all -i br0 -j ACCEPT
sudo iptables-save
echo "Please add the following lines to crontab. DO NOT USE SUDO!"
echo "0 0 * * * sudo iptables -I DOCKER-USER -p all -i br0 -j ACCEPT"
echo "@reboot sudo iptables -I DOCKER-USER -p all -i br0 -j ACCEPT"
fi
echo "Ready (y/n)?"
read user_input
if [ "$user_input" = "y" ]; then
sudo crontab -l
sudo crontab -e
fi
echo "Step complete"
echo "Reboot now (y/n)?"
read user_input
if [ "$user_input" = "y" ]; then
sudo reboot
fi
fi
type or paste code here