Skip to content

Instantly share code, notes, and snippets.

@mrjk
Created September 16, 2021 12:01
Show Gist options
  • Save mrjk/0949ff4377ced326e358bee0880a5f97 to your computer and use it in GitHub Desktop.
Save mrjk/0949ff4377ced326e358bee0880a5f97 to your computer and use it in GitHub Desktop.
Iodine Scripts
#!/bin/bash
# Author: https://gist.github.com/mrjk/
# License: MIT
IODINE_PASS=mypass
IODINE_DOMAIN=t.mydomain.org
IODINE_GW=10.18.0.1
IODINE_FORWARD=true
IODINE_SERVER=w.x.y.z
get_default_gw ()
{
ip route | grep ^default | awk '{ print $3 }' | head -n 1
}
apply_routes ()
{
# WAit for tunnel to be ready
echo "INFO: Waiting for $IODINE_GW ..."
while ! timeout 0.2 ping -c 1 -n $IODINE_GW &> /dev/null
do
echo "INFO: Waiting for $IODINE_GW ..."
done
# Apply default route
echo "INFO: Creating default routes via $IODINE_GW -> $IODINE_SERVER"
ip route add $IODINE_SERVER via $GW
ip route del default via $GW
ip route add default via $IODINE_GW
echo "INFO: Default route has been changed!"
}
restore_routes ()
{
echo -e "\nINFO: Restoring default routes from $IODINE_GW to $GW"
ip route del $IODINE_SERVER via $GW
ip route del default 2>/dev/null
ip route add default via $GW
echo "INFO: Default route has been restored to $GW!"
}
main ()
{
if $IODINE_FORWARD; then
# Get current default gateway
GW=$(get_default_gw)
if [[ -z "$GW" ]]; then
echo "ERROR: Can't find default gateway :/"
return 1
fi
# Wrap tunnel functions
apply_routes &
trap restore_routes EXIT
fi
# Start tunnel
echo "INFO: Starting iodine client on $IODINE_DOMAIN"
iodine -f -P $IODINE_PASS $IODINE_DOMAIN
}
main $@
#!/bin/bash
# Author: https://gist.github.com/mrjk/
# License: MIT
IODINE_PASS=mypass
IODINE_DOMAIN=t.mydomain.org
IODINE_GW=10.18.0.1
IODINE_FORWARD=true
IODINE_MASK=28
IODINE_INTERFACE=eno1
enable_forwarding ()
{
echo "INFO: Enabling forwarding"
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o $IODINE_INTERFACE -s $IODINE_GW/$IODINE_MASK -j MASQUERADE
}
disable_forwarding ()
{
echo "INFO: Disabling forwarding"
iptables -t nat -D POSTROUTING -o $IODINE_INTERFACE -s $IODINE_GW/$IODINE_MASK -j MASQUERADE
}
main ()
{
if $IODINE_FORWARD; then
enable_forwarding &
trap disable_forwarding EXIT
fi
# Start server
echo "INFO: Starting iodine"
iodined -f -c -P $IODINE_PASS $IODINE_GW $IODINE_DOMAIN
}
main $@
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment