-
-
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." |
This literally has saved my day! Confirmed to work on CentOS 7.6 with the update of @ufukty
First thanks to @ufukty and @sparkcodeuk!
Second, is a way to revert this?
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
Line #30 looks like outdated.
Change it with:
Works on ubuntu 18.04.3
And, since its
replace
, notadd
; you don't have to remove the old gateway separately.Thank you for the code btw.