PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : IPTables und Symbolische Namen



fraegle
16.10.02, 16:22
Hi!

Was mach ich falsch ?
Kann mir jemand sagen warum das nicht funzt ?

Möchte die einzelnen Hosts dann nochmal Gruppieren.

Warum erkennt das Script nur $HOST1 und die anderen als" Bad argument '172.16.0.2` also alles hinter Host1.

Hier die wichtigen Zeilen:

-----------------------------------------------
#! /bin/bash

IPTABLES=/sbin/iptables

HOST1=172.16.0.1
HOST2=172.16.0.2
HOST3=172.16.0.3
HOST4=172.16.0.4
HOST5=172.16.0.5

ALL_HOSTS="$HOST1 $HOST2 $HOST3 $HOST4 $HOST5"

${IPTABLES} -t nat -A POSTROUTING -s $ALL_HOST -d 0/0 -o $INTERNET -j SNAT --to-source 120.12.12.12

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

Hoffe mir kann jemand helfen

Gruss

Fraegle

Jasper
16.10.02, 16:28
Original geschrieben von fraegle

HOST1=172.16.0.1
HOST2=172.16.0.2
HOST3=172.16.0.3
HOST4=172.16.0.4
HOST5=172.16.0.5

ALL_HOSTS="$HOST1 $HOST2 $HOST3 $HOST4 $HOST5"

${IPTABLES} -t nat -A POSTROUTING -s $ALL_HOST -d 0/0 -o $INTERNET -j SNAT --to-source 120.12.12.12


das klappt nicht, weil der resultierende befehl (nach expansion von $ALL_HOSTS) dann so aussieht:

${IPTABLES} -t nat -A POSTROUTING -s 172.16.0.1 172.16.0.2 172.16.0.3 172.16.0.4 172.16.0.5 -d 0/0 -o $INTERNET -j SNAT --to-source 120.12.12.12

wie man leicht sieht, ist das keine gültige syntax mehr.

baus in eine schleife ein:

for HOST in $ALL_HOSTS; do
${IPTABLES} -t nat -A POSTROUTING -s $HOST -d 0/0 -o $INTERNET -j SNAT --
to-source 120.12.12.12
done

damit wird pro host in $ALL_HOSTS eine iptables-regel generiert.

-j

fraegle
16.10.02, 16:32
Danke für die Schnelle Antwort.

Aber gibts nicht so was wie bei der tcsh

$HOSTS = ( $HOST1 $HOST2 ... )

?

Gibts keine andere Möglichkeit für eine Gruppierung ?

Fraegle

HangLoose
16.10.02, 16:48
hi

ich schätze mal mit dieser lösung, schieß ich am ziel vorbei, oder? ;)

set host=172.16.0.0/24


Gruß HangLoose

fraegle
16.10.02, 16:57
Hi!

Jo, will ja nicht alle zulassen, sondern gesondert gruppieren um das Script lesbarer zu machen.

Fraegle

Jasper
16.10.02, 17:01
Original geschrieben von fraegle
Danke für die Schnelle Antwort.

Aber gibts nicht so was wie bei der tcsh

$HOSTS = ( $HOST1 $HOST2 ... )

?

Gibts keine andere Möglichkeit für eine Gruppierung ?

Fraegle

das ist keine frage der shell sondern eine frage der iptables-parameter!
und iptables akzeptiert nunmal nur -s ip/mask. d.h. du kannst gruppieren soviel du willst, wenn du iptables mit den daten dann fütterst, musst du dich nach iptables richten.

-j

HangLoose
16.10.02, 17:09
hi

wäre es nicht möglich, die host's einzeln zu listen

HOST1=172.16.0.1
HOST2=172.16.0.2
HOST3=172.16.0.3
HOST4=172.16.0.4
HOST5=172.16.0.5

und wenn du alle brauchst, das folgendermaßen löst?

ALL_HOSTS=172.16.0.0/24


Gruß HangLoose

fraegle
16.10.02, 17:14
Hi!

Nein , das will ich ja nicht. Dann dürften ja zum Beispiel HOST6- HOST99 auch das was die ersten fünf dürfen.
Ich muss einzelne Rechte für die unterschiedlichen Hostgruppen aufsetzen.

Fraegle

HangLoose
16.10.02, 17:21
hi

nächster vorschlag, so schnell geb ich nicht auf ;)


HOST1=172.16.0.1
HOST2=172.16.0.2
HOST3=172.16.0.3
HOST4=172.16.0.4
HOST5=172.16.0.5


All_HOSTS=(172.16.0.1 172.16.0.2 172.16.0.3 172.16.0.4 172.16.0.5)

Jasper
16.10.02, 17:24
Original geschrieben von fraegle
Hi!

Nein , das will ich ja nicht. Dann dürften ja zum Beispiel HOST6- HOST99 auch das was die ersten fünf dürfen.
Ich muss einzelne Rechte für die unterschiedlichen Hostgruppen aufsetzen.

Fraegle

aehm, du meinst sicherlich HOST6-HOST254.

ich sehe dein problem nicht. erstelle deine gruppen:

DIE_DUERFEN="goodhost1 goodhost2 goodhost3"
DIE_DUERFEN_NICHT="badhost1 badhost2 badhost3"

und dann pro gruppe eine schleife die die regeln setzt. wo ist das problem?

-j