# iptables Portforwarding verwenden (solved)

## benjamin200

Hi,

laut Gentoo Home Router Guide wird Portforwarding wie folgt verwendet:

 *Quote:*   

> 
> 
> HTTP forwarding to an internal host
> 
> # iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth1 -j DNAT --to 192.168.0.56
> ...

 

Da ich mich exakt an den Guide gehalten habe erhalte ich bei der Ausgabe von iptables -L -v keine Information über PREROUTING. Kann es sein das ich die CHAIN PREROUTING erst erstellen muss und das im HowTo nicht erwähnt wird? Wie realisiere ich dies? Danke im voraus.

----------

## NightDragon

Hellöle.

versuchs mal so:

```
iptables -I FORWARD -i eth1 -p TCP -d 192.168.0.56 --dport 80 -j ACCEPT

iptables -t nat -A PREROUTING -i eth1 -p TCP --dport 80 -j DNAT --to-destination 192.168.0.56
```

bei dir steht --to und nicht --to-destination

[EDIT]

In der ersten zeile --> meine IP gelöscht, die 192er eingetragen

[/EDIT]

----------

## benjamin200

 *Quote:*   

> 
> 
> versuchs mal so:
> 
> Code:
> ...

 

Hi NightDragon,

wie schon angesprochen denke ich das es daran liegt ,das keine Chain PREROUTING erstellt wurde. Ein iptables -L -v zeigt mir lediglich INPUT, OUTPUT und FORWARD. Eine Fehlermeldung beim Absetzen des Kommandos erscheint nicht.

Wieso eigentlich zwei iptables eingaben für Port-Forwarding - kannst du das bitte genauer definieren.

----------

## slick

Die wirst Du auch so nicht finden, PRE|POSTROUTING ist keine normale Chain. "Gibts" bei mir auch nicht, dennoch funktioniert sie.

```
# iptables -L -v | grep Chain

Chain INPUT (policy DROP 0 packets, 0 bytes)

Chain FORWARD (policy DROP 0 packets, 0 bytes)

Chain OUTPUT (policy DROP 12 packets, 564 bytes)

Chain FWD_EXT_INT (1 references)

Chain FWD_INT_EXT (1 references)

Chain HACKS (1 references)

Chain INP_EXT (1 references)

Chain INP_INT (1 references)

Chain LOGHACKS (19 references)

Chain OUT_EXT (1 references)

Chain OUT_INT (1 references)
```

 *Quote:*   

> Wieso eigentlich zwei iptables eingaben für Port-Forwarding - kannst du das bitte genauer definieren.

 

Pakete auf lokale IP umbiegen:

iptables -t nat -A PREROUTING -i eth1 -p TCP --dport 80 -j DNAT --to-destination 192.168.0.56

diese Pakete auch reinlassen:

iptables -A FORWARD -i eth1 -p TCP -d 192.168.0.56 --dport 80 -j ACCEPT

ggf. hier weiterlesen: http://www.netfilter.org/documentation/HOWTO/packet-filtering-HOWTO.html

----------

## NightDragon

Ursprünglich hatte das Script alles auf "DROP".

Also ne totales Block von allen Daten die da rumsausen.

Miit ersterem soll erreicht werden, das die Packete nicht verworfen werden.

und mit 2. wird direkt forgewartet.

Hm. Wie slick schon sagte - dem ist nicht hinzuzufügen.

*g* Wenn du willst, dann kann ich dir gern das Script zukommen lassen.

Mit dem Script wird das gesamte Netz hier ans Internet angebunden.

----------

## benjamin200

Hab mich gerade zwei Stunden mit meiner neuen Domain und dem SMTP Relay von 1und1 rumschlagen müssen. 

SMTP_AUTH über Relay, grrrr. Aber jetzt läufts  :Smile: 

 *Quote:*   

> 
> 
> Die wirst Du auch so nicht finden, PRE|POSTROUTING ist keine normale Chain. "Gibts" bei mir auch nicht, dennoch funktioniert sie.
> 
> Code:
> ...

 

Ok bei FWD_EXT_INT sehe ich das du jeweils einen Eintrag. Wie lässt man sich einen sollchen Anzeigen, 

um diesen eventuell zu löschen bzw. zu editieren?

 *Quote:*   

> 
> 
> *g* Wenn du willst, dann kann ich dir gern das Script zukommen lassen.
> 
> Mit dem Script wird das gesamte Netz hier ans Internet angebunden.
> ...

 

Nee lass mal, ich will angebunden werden, aber nicht das Internet an mich  :Smile: 

----------

## benjamin200

Irgenwie klappt das bei mir nicht  :Sad: 

```

server benjamin # iptables -t nat -A PREROUTING -p tcp --dport 2354 -i ppp0 -j DNAT --to 192.168.0.33

server benjamin # iptables -L -v | grep Chain

Chain INPUT (policy ACCEPT 43084 packets, 3145K bytes)

Chain FORWARD (policy ACCEPT 133 packets, 56517 bytes)

Chain OUTPUT (policy ACCEPT 106K packets, 17M bytes)

server benjamin #    

```

----------

## slick

 *benjamin200 wrote:*   

> 
> 
> Ok bei FWD_EXT_INT sehe ich das du jeweils einen Eintrag. Wie lässt man sich einen sollchen Anzeigen, 
> 
> um diesen eventuell zu löschen bzw. zu editieren?

 

Anzeigen normalerweise mit 

```
iptables -L  -n $CHAIN
```

allerdings zeigt es Dir den nicht so an wie Du den eingegeben hast. Sondern den aktuellen Status.

Du könntest aber mit 

```
iptables-save | grep $CHAIN
```

die jeweilige Regel finden. Rauslöschen könntest Du die dann so

```
iptables -D $CHAIN $REGEL
```

Einfügen kannst Du sie jedoch nur immer am Ende einer Chain.

Aber willst Du wirklich zur Laufzeit die iptables-Regeln anpassen?

 *benjamin200 wrote:*   

> Irgenwie klappt das bei mir nicht 
> 
> ```
> server benjamin # iptables -t nat -A PREROUTING -p tcp --dport 2354 -i ppp0 -j DNAT --to 192.168.0.33
> 
> ...

 

Was daran geht nicht? Das Du die PREROUTING nicht siehst hatten wir ja schon geklärt. Oder kommen keine Pakete durch?

EDIT: Mach mal cat /proc/sys/net/ipv4/ip_forward ,das muss 1 sein.

----------

## benjamin200

 *Quote:*   

> 
> 
> Was daran geht nicht? Das Du die PREROUTING nicht siehst hatten wir ja schon geklärt. Oder kommen keine Pakete durch? 
> 
> 

 

Genau "iptables-save | grep $CHAIN" das habe ich gesucht  :Smile: 

 *Quote:*   

> 
> 
> EDIT: Mach mal cat /proc/sys/net/ipv4/ip_forward ,das muss 1 sein.
> 
> 

 

```

server benjamin # cat /proc/sys/net/ipv4/ip_forward

1

server benjamin #

```

Tread solved, da ich nun die Einträge für PREROUTING auslesen kann  :Smile:  Danke slick & NightDragon

----------

