Files
zerotierbridge/entrypoint.sh

50 lines
1.1 KiB
Bash

#!/bin/sh
grepzt() {
(find /proc -name exe | xargs -I{} readlink {}) 2>/dev/null | grep -q zerotier-one
return $?
}
echo "starting zerotier"
setsid /usr/sbin/zerotier-one &
while ! grepzt
do
echo "zerotier hasn't started, waiting a second"
sleep 1
done
# Set IPTables to allow NATting
sysctl -w net.ipv4.ip_forward=1 > /dev/null
echo "joining networks: $ZT_NETWORKS"
for n in $ZT_NETWORKS
do
echo "joining $n"
while ! zerotier-cli join "$n"
do
echo "joining $n failed; trying again in 1s"
sleep 1
done
if [ "$ZT_BRIDGE" = "true" ]
then
echo "Configuring iptables on $(zerotier-cli get $n portDeviceName)"
PHY_IFACE=eth0; ZT_IFACE=$(zerotier-cli get $n portDeviceName)
iptables -t nat -A POSTROUTING -o $PHY_IFACE -j MASQUERADE
iptables -t nat -A POSTROUTING -o $ZT_IFACE -j MASQUERADE
iptables -A FORWARD -i $PHY_IFACE -o $ZT_IFACE -j ACCEPT
iptables -A FORWARD -i $ZT_IFACE -o $PHY_IFACE -j ACCEPT
fi
done
# Give ZT a second realise it's online
sleep 10
# Print Client Info
echo "$(zerotier-cli info)"
sleep infinity