-
-
Save sparkcodeuk/7715387829935b3c699892e926b931eb to your computer and use it in GitHub Desktop.
#!/bin/bash | |
# Force outbound traffic through the attached floating IP | |
NET_INT="eth0" | |
CURL_TIMEOUT=3 | |
echo -n "Setting floating IP as the default gateway: " | |
# Check there's a floating IP attached to this droplet | |
if [ "$(curl -s --connect-timeout $CURL_TIMEOUT http://169.254.169.254/metadata/v1/floating_ip/ipv4/active)" != "true" ]; then | |
echo "Error: this droplet doesn't have a floating IP assigned to it." | |
exit 1 | |
fi | |
# Get the gateway IP for the floating IP | |
GATEWAY_IP=$(curl -s --connect-timeout $CURL_TIMEOUT http://169.254.169.254/metadata/v1/interfaces/public/0/anchor_ipv4/gateway) | |
if [ -z "$GATEWAY_IP" ]; then | |
echo "Error: failed getting gateway IP for this droplet." | |
exit 1 | |
fi | |
# Check we haven't already got the floating IP as a default gateway | |
if [ ! -z $(ip route ls 0/0|awk '{print $3}'|grep "$GATEWAY_IP") ]; then | |
echo "Error: gateway IP already a default route." | |
exit 1 | |
fi | |
# Add the new route before we remove any | |
sudo route add default gw $GATEWAY_IP $NET_INT | |
# Delete any other default gatways for this interface | |
ip route ls 0/0 dev $NET_INT|awk '{print $3}'|grep -v "$GATEWAY_IP"|xargs -n1 -I{} sudo route del default gw {} | |
echo "Done." |
First thanks to @ufukty and @sparkcodeuk!
Second, is a way to revert this?
I made a script to revert this. It works on Ubuntu 20.04 for me. You can find it here.
It seems that do-agent stops sending metrics to the backend after this
It does create issues with the do-agent monitoring agent, which can be solved by adding a back a route for 169.254.169.254 via the original gateway :
ip route add 169.254.169.254 via [original_gateway_ip] dev eth0
After running this script my ssh session is frozen and I cannot access server via static ip. Also my domains that should resolve to static ip doesn't work. So seems inbound traffic is also affected. Or I'm doing it wrong?
@slonia Did you check your firewall settings? And try to use new ip address when connecting to server with SSH again.
@ufukty I'm looking for setup to make some app do requests from floating ip, while my static sites and other apps are using static ip
epic, thank you
First thanks to @ufukty and @sparkcodeuk!
Second, is a way to revert this?