Created
September 16, 2021 12:01
-
-
Save mrjk/0949ff4377ced326e358bee0880a5f97 to your computer and use it in GitHub Desktop.
Iodine Scripts
This file contains 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 | |
# 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 $@ |
This file contains 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 | |
# 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