PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Server Random outgoing ip einstellen



cluso
18.09.2016, 14:58
Moin!
Hoffentlich kann mir jemand weiterhelfen!
Ich habe grade einen Server mit 6 IPs gemietet darauf soll ein Skript laufen(php) per cronjob ausgeführt.
Jetzt finde ich aber nichts darüber wie man zufällig die ips einstellt also bei jedem Aufruf des Skriptes soll eine andere ip benutzt werden. Ich hatte mal vor längerer Zeit in irgendeinem Blog eine Anleitung gelesen nur finde ich die nicht wieder.

syrius
18.09.2016, 17:56
Habe für mein Subnet immer folgendes genutzt. Das ARRAY macht hier nur Sinn bei wenigen Andressen. Bei vielen, sollte man sich die "ifconfig" Ausgabe strippen und in einer Variable (IP_ARRAY) ablegen.


#!/bin/bash

IP_ARRAY="127.0.0.1 127.0.0.2 ..."
TIME_WAIT="45" # Sekunden bis zum Wechsel
ADAPTER="eth0" # Primärer Netzwerkadapter

while true; do
for IP_OUT in ${IP_ARRAY}; do
echo -e "\n :: Wechsle IP: ${IP_OUT}"
iptables -t nat -D POSTROUTING 1
iptables -t nat -A POSTROUTING -o ${ADAPTER} -j SNAT --to ${IP_OUT}
echo " :: Aktuelle IP-Adresse: `curl -sS -L "www.wieistmeineip.com" | grep "<h3>" | cut -d\> -f2 | cut -d\< -f1`"
sleep ${TIME_WAIT}s
done
done

Benötigte Pakete:


apt-get update && apt-get install curl iptables -y

Das "ip_changer.sh" Script mit


chmod +x ip_changer.sh

die nötigen Rechte geben und in einer Screen-Session ausführen.

Alternativ kann man noch einen Cronjob einfügen der prüft ob das Script "ip_changer.sh" noch läuft, und wenn nicht, automatisch gestartet wird. Alternativ kann auch das TIME_WAIT entfernt und per Cronjob alle x Minuten ausgeführt werden.

Ein minütlich prüfender Cronjob sähe wie folgt aus:


*/1 * * * * if [ -n "`ps aux | grep ip_changer | grep -v grep`" ]; then screen -dmS ip_changer ./path/to/ip_changer.sh; fi

Das macht natürlich nur Sinn wenn man die IP im Sekundentakt ändern möchte.

Grüße