Masquerade- bzw. Router-Script erstellen

Aus Siduction Wiki DE
Wechseln zu: Navigation, Suche

Anmerkungen

In den siduction-Versionen ist das Masquerade-Script nicht vorhanden. Hier sind nun mehrere Möglichkeiten, dieses Script neu zu erstellen. Das für Euch interessante Script kopiert Ihr Euch am besten in einen Editor, den Ihr am besten als root öffnet:

Alt+F2
kdesu kedit

Das Script speichert Ihr am besten in /usr/local/sbin/ als masquerade.sh. Bitte nicht im /usr/sbin speichern, da dort apt "Zugriff" hat und das Script ohne nachfrage löschen darf. Dann müsst Ihr das Script noch ausführbar machen:

chmod u+x /usr/local/sbin/masquerade.sh

Einfaches Masqerade-Script

ausführen mit:

/usr/local/sbin/masquerade.sh

Script: <syntaxhighlight lang="bash">

#!/bin/sh

#  WICHTIG! Damit das Skript richtig funktioniert, muss zuerst eine der 
#  folgenden Zeilen entkommentiert werden. Und zwar genau die, 
#  die Schnittstelle definiert, mit der der Router mit dem 
#  Internet verbunden ist. 

#  INTERNET=ppp0     # Modem oder DSL-Karte
#  INTERNET=ippp0    # ISDN
#  INTERNET=eth0     # DSL über PPPoE (Netzwerkkarte -> DSL-Modem)
#  INTERNET=eth1     # DSL über PPPoE (wenn "eth0" nicht funktioniert)
#  INTERNET=wlan0    # WLan-Karte
#  INTERNET=ath0     # Manche PCMCIA und USB WLan-Karten
#  INTERNET=xxxX     # weitere individuelle Karten / Schnittstellen; xxxX ersetzen

echo "1" > /proc/sys/net/ipv4/ip_forward 
iptables -P FORWARD ACCEPT 
iptables -t nat -A POSTROUTING -o $INTERNET -j MASQUERADE

</syntaxhighlight>

Ausführliches Masquerade-Script

Ein ausführlicheres Script mit zusätzlichen Abfragen und Optionen. Insbesondere kann dieses Script wie ein normales Init/Boot Script gestartet/ gestoppt/ neu gestartet oder der Status abgefragt werden:

/usr/local/sbin/masquerade start
/usr/local/sbin/masquerade.sh stop
/usr/local/sbin/masquerade.sh restart
/usr/local/sbin/masquerade.sh status

Mit leichten Änderungen entnommen dem Kanotix Wiki <syntaxhighlight lang="bash">

#!/bin/sh 
# 
#  masquerade.sh Dieses Startupskript startet einfache Routingtabellen. 
#  Es werden keine Firewall-Regeln implementiert. 
# 
# Autoren: RanETo, BlueLupo und DarkTiger vom KanotixWiki 
# 
# Version: 0.3 2008-01-12 
# 
#  WICHTIG! Damit das Skript richtig funktioniert, muss zuerst eine der 
#  folgenden Zeilen entkommentiert werden. Und zwar genau jene, die
#  die Schnittstelle definiert, mit der der Router mit dem 
#  Internet verbunden ist. 
# 
#  INTERNET=ppp0     # Modem oder DSL-Karte 
#  INTERNET=ippp0    # ISDN 
#  INTERNET=eth0     # DSL über PPPoE (Netzwerkkarte -> DSL-Modem) 
#  INTERNET=eth1     # DSL über PPPoE (wenn "eth0" nicht funktioniert) 
#  INTERNET=wlan0    # WLan-Karte 
#  INTERNET=ath0     # Manche PCMCIA und USB WLan-Karten
#  INTERNET=xxxX     # weitere individuelle Karten / Schnittstellen; xxxX ersetzen

NAME=masquerade.sh 
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 
PROGRAMM=$(which iptables) 
PIDDATEI=/var/run/$NAME.pid 
SKRIPTNAME=/etc/init.d/$NAME 

if [ -z $INTERNET ] 
then 
 echo "$NAME: Die Internetschnittstelle wurde noch nicht definiert!" >&2 
 echo "       Bitte entkommentieren Sie die richtige Zeile!" >&2 
 exit 0 
fi 

if [ ! -x $PROGRAMM ] 
 then 
 echo "$NAME: Das Programm '$PROGRAMM' zur Steuerung des Routers ist nicht vorhanden!" >&2 
 exit 0 
fi 

router_start() { 
 echo "1" > /proc/sys/net/ipv4/ip_forward 
 $PROGRAMM --table filter --policy FORWARD ACCEPT 
 $PROGRAMM --table nat  --append POSTROUTING --out-interface $INTERNET --jump MASQUERADE 
} 

router_stop() { 
 echo "0" > /proc/sys/net/ipv4/ip_forward 
 $PROGRAMM --table filter --policy FORWARD ACCEPT 
 $PROGRAMM --table nat  --flush POSTROUTING 
} 

router_status() { 
 for TABELLE in filter nat mangle 
 do 
  echo "Tabelle \"$TABELLE\"" 
  $PROGRAMM --table $TABELLE --list 
  echo 
 done 
} 

case "$1" in 
  start) 
        echo -n "$NAME: starte Routing ..." 
        router_start 
        echo " fertig" 
        ;; 
  stop) 
        echo -n "$NAME: beende Routing ..." 
        router_stop 
        echo " fertig" 
        ;; 
  restart|force-reload) 
        echo -n "$NAME: starte Routing neu ..." 
        router_stop 
        router_start 
        echo " fertig" 
        ;; 
  status) 
   router_status 
 ;; 
  *) 
        echo "Aufruf: $SKRIPTNAME {start|stop|restart|force-reload|status}" >&2 
        exit 1 
        ;; 
esac 

exit 0

</syntaxhighlight>