ipmasqadm--- dynamische ip als variable????

Message
Author
Stefan99

ipmasqadm--- dynamische ip als variable????

#1 Post by Stefan99 »

also das ein binden eines host im localnet für das www klappt jetzt....
sbin/ipmasqadmin portfw -a -p tcp -L 217.80.163.221 80 -R 192.168.1.65 80
=dynam.ip =zielrechner/port

problem ist bei ändern der ip ist die regel nicht mehr gültig!
kann man die dynamische ip auch als variable einsetzen? das einsetzen von ipp0 oder hostname des gatewayrechners (router) funzt nicht...

cerberusger
Posts: 348
Joined: 28. Dec 2000 13:30
Location: Muenchen

Re: ipmasqadm--- dynamische ip als variable????

#2 Post by cerberusger »

in deinem firewall-script zu anfang einfuegen:

DYN_IP=$(ifconfig ippp0 | grep inet | awk {'print $2'} | cut -f2 -d":")

danach ueberall wo du auf die dyn-ip zugreifen willst, einfach $DYN_IP einsetzen. das ganze setzt natuerlich voraus, dass dein script NACH dem verbindungsaufbau und NACH dem verbindungsabbau ausgefuehrt wird. am besten also in ip-up an entsprechender stelle einbauen.

cheers,
dev0
Linux is a wigwam - no windows, no gates, apache inside <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">

Sebastian Ude

Re: ipmasqadm--- dynamische ip als variable????

#3 Post by Sebastian Ude »

@ dev0

Wenn er es schon in die ip-up einbaut, dann kann er sich auch diese Shellmagie ersparen.

dem ip-up-Script wird doch vom (i)pppd als $4 die lokale IP-Adresse übergeben ... warum nicht gleich damit arbeiten ?

Stefan99

Re: ipmasqadm--- dynamische ip variable????

#4 Post by Stefan99 »

@ Sebastian Ude:

kenn mich mit dem syntax von solchen scripten nicht so gut aus.
wie lautet der string für eine solche weiterleitung mit dem $4 (was ist das für eine variable)?

Sebastian Ude

Re: ipmasqadm--- dynamische ip als variable????

#5 Post by Sebastian Ude »

$[x] sind die Optionen, die einem Script übergeben werden (ähnlich wie argv[] in C / C++).

Dabei fängt man mit 0 beim Zählen an, und das erste Argument, also $0, ist der Programmname (inklusive Pfad oder auch nicht) selbst.


Nehmen wir an, ein Script würde wie folgt aufgerufen:

myscript -d tuz /abc/file1 /abc/file2

Dann wäre

$0 = myscript
$1 = -d
$2 = tuz
$3 = /abc/file1
$4 = /abc/file2


Da der pppd dem ip-up-Script folgende Parameter in folgender Reihenfolge übergibt

[Interface] [Gerät] [Geschwindigkeit] [lokale IP] [IP der Gegenstelle]

Kannst du im ip-up-Script unter $4 die lokale IP referenzieren, unter $5 die IP der Gegenstelle usw.

Stefan99

@sebastian ude:

#6 Post by Stefan99 »

@Sebastian Ude:

sieht das dann so aus in /etc/ppp/ip-up.local (oder muß das nur in die datei ip-up(ohne endung):

# trigger outgoing email
/usr/bin/killall -ALRM qmail-send


# Args are:
#interface-name tty-device speed local-IP-address remote-IP-address ipparam

#--------------------------------------------------
# Run these commands whenever a PPP connection is established.
#--------------------------------------------------
NEWIP=$4
EXTERNALIP=$(/sbin/e-smith/config get ExternalIP)
LOCALIP=$(/sbin/e-smith/config get LocalIP)

case $NEWIP in
$EXTERNALIP) ;; # No ip change - short-circuit
$LOCALIP) ;; # PPTP will call us with each connection
*) /sbin/e-smith/signal-event ip-change $4
esac

/sbin/e-smith/signal-event ip-up "$@"
/sbin/DYN_IP=$(ifconfig ppp0 | grep inet | awk {'print $2'} | cut -f2 -d":")
/sbin/ipmasqadm portfw -a -P tcp -L $4 10000 -R 192.168.1.65 10000

#------------------------------------------------------------
# TEMPLATE END
#------------------------------------------------------------

hab die variable $4 eingestzt, den string davor brauch ich eigentlich nicht mehr...
muß ich in ip-down auch was definieren?

Sebastian Ude

Re: ipmasqadm--- dynamische ip als variable????

#7 Post by Sebastian Ude »

>oder muß das nur in die datei ip-up(ohne endung)

Höchstwahrscheinlich ruft deine Distribution die ip-up.local am Ende der ip-up auf.
Dann gehört soetwas (userdefiniertes) in die ip-up.local, wenn man es sauber machen möchte.


>/sbin/DYN_IP=$(ifconfig ppp0 | grep inet | awk {'print $2'} | cut -f2 -d":")

Nein ... gerade *das* brauchen wir doch nicht mehr !
Wozu die Verrenkung, "ifconfig ppp0" aufzurufen, nach "inet" zu greppen, und dann mit awk und cut die IP herauszuholen, wenn wir die lokale IP bequem als $4 vorliegen haben ?

Also die Zeile kannst du schon einmal entfernen.


>/sbin/ipmasqadm portfw -a -P tcp -L $4 10000 -R 192.168.1.65 10000

Sieht gut aus.

Sebastian Ude

Re: ipmasqadm--- dynamische ip als variable????

#8 Post by Sebastian Ude »

Achso, da war ja noch was <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">:

>muß ich in ip-down auch was definieren?

Wäre schon besser so.
Die ipmasqadm-Regel sollte nach dem Trennen der Verbindung wieder entfernt werden.
Folgendes in der ip-down[.local] sorgt dafür:

/sbin/ipmasqadm portfw -f

(Wir sind mal faul (-f) ... sonst sind ja keine weiteren Regeln da ...).

Stefan99

Re: ipmasqadm--- dynamische ip als variable????

#9 Post by Stefan99 »

erstmal vielen dank!!!, werd es jetzt mal testen!

cerberusger
Posts: 348
Joined: 28. Dec 2000 13:30
Location: Muenchen

Re: ipmasqadm--- dynamische ip als variable????

#10 Post by cerberusger »

mmh, @sebastian,

ich ging davon aus, dass er ein etwas umfangreicheres firewall-script aufrufen will ... aber selbst damit hast mich auf ne idee gebracht ;) kann man doch jetzt dem firewall-scriptt sagen, dass es eine variable $1 entgegen nehmen soll, die es bei aufruf in ip-up uebergeben bekommt *g*

so nach dem motto:

/etc/rc.d/rc.firewall $4

na, wie auch immer, ich rufe mein script beim booten auf, da ich ne feste ip hab, und ne stande hab ... aber vor einiger zeit (mit isdn) haette das einiges einfacher gemacht.

cheers,
dev0
Linux is a wigwam - no windows, no gates, apache inside <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">

Stefan99

Re: ipmasqadm--- dynamische ip als variable????

#11 Post by Stefan99 »

irgendwie funzt das net:

auch wenn ich es auf dem prompt ausführe passiert das:

sbin/DYN_IP=$(ifconfig ippp0 | grep inet | awk {'print $2'} | cut -f2 -d":")
[root@gateway /sbin]# ipmasqadm -a -P tcp -L $DYN_IP 10000 -R 192.168.1.65 10000
dlopen(): ¼i@v@: cannot open shared object file: No such file or directory

woran kann das liegen?

Sebastian Ude

Re: ipmasqadm--- dynamische ip als variable????

#12 Post by Sebastian Ude »

Hm.

ipmasqadm funktionierte aber schon einmal, oder etwa nicht ?

Was passiert, wenn du einfach ein

ipmasqadm

absetzt ?

Falls du dann *nicht* die Meldung "cannot open shared object file:" bekommst, ist da irgendetwas faul.
Sofern du sie auch bekommst (sehr wahrscheinlich, nehme ich an) mach mal ein

which ipmasqadm | xargs ldd | grep "not found"

und schau mal welche Library da fehlt.

Stefan99

Re: ipmasqadm--- dynamische ip als variable????

#13 Post by Stefan99 »

reagiert gar nicht wird einfach so angenommen obiges kommando

wie gesagt ipmasadm mit eingetzter ip funktioniert nur als variable nicht...

Sebastian Ude

Re: ipmasqadm--- dynamische ip als variable????

#14 Post by Sebastian Ude »

Das ist merkwürdig.

Mach bitte folgendes:

DYN_IP=$(ifconfig ippp0 | grep inet | awk {'print $2'} | cut -f2 -d":")
echo $DYNIP

Das, was beim "echo $DYNIP" ausgegeben wird, wird beim ipmasqadm-Aufruf für $DYNIP eingesetzt.

Was ergibt denn das "echo $DYNIP" ?

Sebastian Ude

Re: ipmasqadm--- dynamische ip als variable????

#15 Post by Sebastian Ude »

Uups ... Tippfehler.

Ich meinte natürlich

'echo $DYN_IP'

statt

'echo $DYNIP'

an allen drei Stellen.

Post Reply