PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : protweiterleitung iptables



timon
22.03.03, 10:32
hallo zusammen,

ich habe folgende generelle fragen :

kann ich von meinem netzwerk aus überprüfen, ob eine weiterleitung der prots funktioniert oder muss dies von ausserhalb des netzwerkes erfolgen ?

wenn es nur von ausserhalb geht, habe ich irgendwie die möglichkeit dieses auf dem server zu "kontrollieren" ( iptables -L etc ) ob das weiterleiten eingerichtet ist und funktioniert ?

vielen dank

timon

heikop
23.03.03, 19:13
Hallo,

für Weiterleitung von Ports muss DNAT (Destination NAT) eingerichtet sein. Den genauen Befehl für die Weiterleitung von expliziten Ports kenn ich jetzt auch nicht ad hoc. Aber 'man iptables' ist Dein Freund ;-)
Zur Kontrolle könnte man 'cat /proc/net/ip_conntrack' nehmen. Dort werden alle Verbindungen aufgelistet.

timon
23.03.03, 21:45
hallo heikop.

thx für die antwort :)


Aber 'man iptables' ist Dein Freund ;-)

joa, wenn man richtig gut englisch kann :) aber jetzt habe ich wieder was zum googlen .

danke

timon

heikop
24.03.03, 15:20
Hallo,



joa, wenn man richtig gut englisch kann aber jetzt habe ich wieder was zum googlen.


Hier gibts auch deutsche Anleitungen ;)

http://www.netfilter.org/documentation/index.html#HOWTO


Gruss
Heiko

timon
24.03.03, 18:47
vielen daaaaannnk :)

timon
24.03.03, 19:40
ich werde mit deisen iptables noch wahnsinnig. vielleicht kann mir ja jemand helfen . ich habe folgende zwei systeme:

1. server

eth0 (intern) 192.168.20.5
eth1 netzwerkkarte für :
ppp0

2. workstation
eth0 (intern) 192.168.20.50

auf beiden läuft ein apache, auf dem server auf port 80, auf der workstation auf port 8085

ich möchte nur, das mein dynds-acc, wenn er mit port :8085 aufgerufen wird auf die workstation umleitet. diverse prerouting etc haben nicht geholfen bzw funktioniert. mein skript, um die workstation über den server ins inet zu lassen sieht so aus :


#!/bin/sh

#

# rc.firewall-2.4

#

IPTABLES=/sbin/iptables

EXTIF="ppp0"

INTIF="eth0"

/sbin/insmod ip_tables

/sbin/insmod ip_conntrack

/sbin/insmod ip_conntrack_ftp

/sbin/insmod ip_conntrack_irc

/sbin/insmod iptable_nat

/sbin/insmod ip_nat_ftp

echo "1" > /proc/sys/net/ipv4/ip_forward

echo "1" > /proc/sys/net/ipv4/ip_dynaddr

$IPTABLES -P INPUT ACCEPT

$IPTABLES -F INPUT

$IPTABLES -P OUTPUT ACCEPT

$IPTABLES -F OUTPUT

$IPTABLES -P FORWARD DROP

$IPTABLES -F FORWARD

$IPTABLES -t nat -F

$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT

$IPTABLES -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT

$IPTABLES -A FORWARD -j LOG


$IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE


das funktioniert auch prima.



iptables -t nat -A PREROUTING -p tcp --dport 8085 -i ppp0 \
-j DNAT --to 192.168.20.50:8085

hat keinerlei auswirkung.

iptables -L server :


Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT all -- anywhere anywhere
LOG all -- anywhere anywhere LOG level warning
ACCEPT tcp -- anywhere anywhere tcp dpt:8085 state NEW,RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp spt:8085 state RELATED,ESTABLISHED
ACCEPT all -- workstation anywhere state RELATED,ESTABLISHED

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

iptables -L workstation


Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere workstation.local state NEW,RELATED,ESTABLISHED tcp spt:8085 dpt:8085

Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED


das muss doch zu schaffen sein... wenn ich "programme" zum forwarden des ports 8085 benutze, klappt es mit dyndns:8085, allerdings nur bei mir und nicht von ausserhalb dem netzwerk.

ich wäre für anregungen echt dankbar.

gruss

timon

Matzetronic
24.03.03, 20:16
iptables -t nat -A PREROUTING -p tcp --dport 8085 -i ppp0 \
-j DNAT --to 192.168.20.50:8085

scheint soweit i.o., allerdings musst du voher noch eingehenden verkehr auf diesem port erlauben:
iptables -A FORWARD -i ppp0 -p tcp --dport 8085 -j ACCEPT

mfg,
matze

edit: hier der zweizeiler aus meinem paketfilterscript:


$ipt -A FORWARD -i $EXT_DEV -o $INT_DEV -p tcp --dport $tport -j ACCEPT
$ipt -t nat -A PREROUTING -p tcp -i $EXT_DEV --dport $tport -j DNAT --to $adresse:$tport


edit2: menno, wasn heut mit mir los :confused:
setz mal die forward-policy auf accept...

timon
24.03.03, 21:35
hallo matzetronic,

danke erstmal für deine antwort.. habe den eingehendden verkehr sowohl auf dem server als auch der workstation gemäss deinem posting durchgeführt und dein zweiten edit ( ganz verstanden habe ich den nicht :) ) wie folgt geändert und ausgeführt:

iptables -A FORWARD -i ppp0 -o eth0 -p tcp --dport 8085 -j ACCEPT

funktioniert leider immer noch nicht .

gruss

timon

Matzetronic
25.03.03, 05:57
hi,
möglicherweise dropst du irgendwo vorher, und das paket kommt gar nicht erst bis dahin....
poste mal dein komplettes script

mfg,
matze

timon
25.03.03, 07:30
guten morgen,

öhh, das skript , welches auf dem server läuft steht oben, auf der workstation habe ich keins.


gruss

timon

N.D.
25.03.03, 14:13
hallo!
ich misch mich jetzt einfach mal ein ;)

steht möglicherweise diese zeile:
$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT

vor dieser:
iptables -A FORWARD -i ppp0 -p tcp --dport 8085 -j ACCEPT

dann wird es wahrscheinlich vorher gedropt!

vg

timon
25.03.03, 14:15
hi n.d. ,

danke für die einmischung :) die steht definitiv vorher, da die zeile ja im skript ausgeführt wurde und ich alles andere hinterher "manuell" in die bash tippe. wie kann ich diesen denn wieder "rückgangig" machen ?

gruss

timon

Matzetronic
25.03.03, 15:58
denselben befehl eintippen, aber statt -A tippst du -D


mfg,
matze

Matzetronic
25.03.03, 16:04
ich noch mal...

dein konstrukt:
$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT

läßt ja keine neuen verbindungen von außen zu...

probiere mal meinen zweizeiler (natürlich variablen ersetzen) und setz vorher mal die forward-policy auf accept.

matze

Harry
25.03.03, 16:54
Original geschrieben von Matzetronic
ich noch mal...

dein konstrukt:
$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT

läßt ja keine neuen verbindungen von außen zu...

So ist es.



probiere mal meinen zweizeiler (natürlich variablen ersetzen) und setz vorher mal die forward-policy auf accept.
Nunja - Abhilfe sollten auch die folgende Zeile schaffen:

iptables -A FORWARD -i ppp0 -p tcp -d 192.168.20.50 --dport 8085 -j ACCEPT
und anstelle der dortigen ESTABLISHED,RELATED-Regel die folgende:

iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

Dann sollte es ebenfalls funktionieren.

Harry

timon
27.03.03, 07:01
@ all juhu, es klappt ( nachdem ich gelernt habe dass man bei iptables auch die reihenfolge beachten muss :) ) . vielen , vielem dank.

gruss

timon
l