19 Eylül 2024 Perşembe

Birden fazla ip kullanılan sunucuda çıkış ip adresini değiştirmek

 Bu işlem için bir servis yazıyoruz.

/etc/systemd/system/set-route.service 

--------------------------------------------------------

# cat /etc/systemd/system/set-route.service
[Unit]
Description=Set Default Route with IP 10.62.150.120
After=network.target

[Service]
Type=oneshot
ExecStart=/usr/local/sbin/set-default-route.sh start
ExecStop=/usr/local/sbin/set-default-route.sh stop
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

--------------------------------------------------------------



# cat /usr/local/sbin/set-default-route.sh

----------------------------------------------------------------------------------------------------------------------------------


#!/bin/bash

# Rota ile ilgili değişkenler
ROUTE_IP="192.168.234.254"
SRC_IP="192.168.234.123"
INTERFACE="eno13"

start_route() {
    # Rota olup olmadığını daha güvenilir bir şekilde kontrol et
    EXISTING_ROUTE=$(ip route show default | grep "via $ROUTE_IP dev $INTERFACE src $SRC_IP")

    if [ -n "$EXISTING_ROUTE" ]; then
        echo "Rota zaten eklenmiş: default via $ROUTE_IP src $SRC_IP dev $INTERFACE"
        exit 0
    else
        echo "Rota ekleniyor: default via $ROUTE_IP src $SRC_IP dev $INTERFACE"
        ip route add default via $ROUTE_IP src $SRC_IP dev $INTERFACE
        if [ $? -eq 0 ]; then
            echo "Rota başarıyla eklendi."
            exit 0
        else
            echo "Rota eklenirken bir hata oluştu."
            exit 1
        fi
    fi
}

stop_route() {
    # Rota var mı kontrol et
    EXISTING_ROUTE=$(ip route show default | grep "via $ROUTE_IP dev $INTERFACE src $SRC_IP")

    if [ -n "$EXISTING_ROUTE" ]; then
        echo "Rota kaldırılıyor: default via $ROUTE_IP src $SRC_IP dev $INTERFACE"
        ip route del default via $ROUTE_IP src $SRC_IP dev $INTERFACE
        if [ $? -eq 0 ]; then
            echo "Rota başarıyla kaldırıldı."
            exit 0
        else
            echo "Rota kaldırılırken bir hata oluştu."
            exit 1
        fi
    else
        echo "Rota zaten yok."
        exit 0
    fi
}

# Betiğin hangi parametreyle çağrıldığını kontrol et
case "$1" in
    start)
        start_route
        ;;
    stop)
        stop_route
        ;;
    *)
        echo "Kullanım: $0 {start|stop}"
        exit 1
        ;;
esac

----------------------------------------------------------------------------------------------------------------------------------



Hiç yorum yok:

Yorum Gönder