# Iptables NAT,DNAT dont works

## Wolfi

Hi! 

I have a litle problems to get my NAT working right.

I have WinXP >> Gentoo as router and firewal >> ADSL-Modem for Internet.

I have no problems to ping the Internet with my XP and the same is with my Gentoo. I can normaly work on the Internet with my XP, downloaden ok, surfing ok. But for one Game i need Ports the are acceptet from the Internet and go directliy to my XP. There are now my Firewall rules. The 3724er Port should go to my XP on 192.168.2.20. 

eth2 connected with XP, eht1 with the Modem and the Internet.

```
#!/sbin/runscript

# Copyright 1999-2006 Gentoo Foundation

# Distributed under the terms of the GNU General Public License v2

# $Header: $

opts="start stop reload status"

depend() {

   need logger net

}

start() {

   ebegin "So hier kommt der schlimme Finger sssssss!!"

# Statische Sachen:

   # Interfaces

   INET=ppp0

   LANS=eth2

   LANX=eth0

   # Adressen

   IP_SERVER=85.124.149.92

   IP_S=192.168.2.20

   IP_X=192.168.0.20

   IP_S_BEREICH=192.168.2.0/24

   IP_X_BEREICH=192.168.0.0/24

   # Nameserve

   NS1=192.168.2.1

   NS2=192.168.0.1

   NSpri=195.58.160.194

   NSsec=195.58.161.122

   # Ports

   UNPRIV="1024:65535"

   TRACEROUTE="33434:33999"

   # Private Adressbereiche

   CLASSA=10.0.0.0/8

   CLASSB=172.16.0.0/12

   CLASSC=192.168.0.0/16

# Kernelparameter setzen

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

   echo 1 > /proc/sys/net/ipv4/tcp_syncookies

   echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

   echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

   # Schutz vor ICMP-Redirect-Paketen aktivieren

   for f in /proc/sys/net/ipv4/conf/*/accept_redirects

   do

      echo 0 > $f

   done

   # Blocken von Source_Routed_Paketen

   for f in /proc/sys/net/ipv4/conf/*/accept_source_route

   do

      echo 0 > $f

   done

# Standart Police setzen und vorhandene Regeln löschen

   iptables -P INPUT DROP

   iptables -P FORWARD DROP

   iptables -P OUTPUT DROP

   iptables -F

   iptables -t nat -F

   iptables -t mangle -F

   iptables -X

# Lokale Prozesse erlauben

   iptables -A OUTPUT -o lo -j ACCEPT

   iptables -A INPUT  -i lo -j ACCEPT

# Eigene Regeln

# Log und Reject

   iptables -N rausdamit

   iptables -A rausdamit -p TCP   --syn   -j LOG --log-prefix "DROP-TCP-SYN "

   iptables -A rausdamit -p TCP   --syn   -m limit --limit 5/s -j REJECT --reject-with tcp-reset

   iptables -A rausdamit -p TCP   --syn   -j DROP

   iptables -A rausdamit -p TCP      -j LOG --log-prefix "DROP-TCP "

   iptables -A rausdamit -p TCP      -m limit --limit 5/s -j REJECT --reject-with tcp-reset

   iptables -A rausdamit -p TCP      -j DROP

   iptables -A rausdamit -p UDP      -j LOG --log-prefix "DROP-UDP "

   iptables -A rausdamit -p UDP      -m limit --limit 5/s -j REJECT --reject-with icmp-port-unreachable

   iptables -A rausdamit -p UDP      -j DROP

   iptables -A rausdamit -p ICMP      -j LOG --log-prefix "DROP-ICMP "

   iptables -A rausdamit -p ICMP      -j DROP

   iptables -A rausdamit         -j LOG --log-prefix "DROP-PROTO-ETC "

   iptables -A rausdamit         -m limit --limit 5/s -j REJECT --reject-with icmp-port-unreachable

   iptables -A rausdamit         -j DROP

# Firewall, NAT, Masquerading und solche Sachen

# komunikation zwischen Provider und ppp0 zulassen

#   iptables -A INPUT -p TCP -i $INET -s 10.0.0.138 --sport 1723 --dport $UNPRIV -m state --state NEW -j ACCEPT

# IP-Spoofing verhindern

   iptables -A INPUT -i $INET -s $CLASSA -j rausdamit

   iptables -A INPUT -i $INET -s $CLASSB -j rausdamit

   iptables -A INPUT -i $INET -s $CLASSC -j rausdamit

# WoW Regeln

   iptables -t nat -A PREROUTING -p TCP -s 80.239.233.100 --sport 3724 -j DNAT --to-destination 192.168.2.20:3724

   iptables -t nat -A PREROUTING -p TCP -s 80.239.233.100 --sport 8086 -j DNAT --to-destination 192.168.2.20:8086

   

# Generelle Regeln für Antwortpakete

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

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

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

# Gentoo rsync Port öffnen

   iptables -A OUTPUT    -p TCP -o $INET --dport 873 -m state --state NEW -j ACCEPT

   

# SSH erlauben für Internet   

   iptables -A OUTPUT   -p TCP -o $INET --sport $UNPRIV --dport 22 -m state --state NEW -j ACCEPT

   

# Unprivilegierte Ports von innen nach ausen (Verbindungsaufbau erlaubt)

   iptables -A FORWARD   -p TCP -i $LANS -o $INET --sport $UNPRIV --dport $UNPRIV -m state --state NEW -j ACCEPT

   iptables -A FORWARD   -p TCP -i $LANS -o $INET --sport $UNPRIV --dport $UNPRIV -m state --state NEW -j ACCEPT

   iptables -A FORWARD    -p TCP -i $LANS -o $INET --sport $UNPRIV --dport 80 -m state --state NEW -j ACCEPT

   iptables -A FORWARD     -p TCP -i $INET -o $LANS --sport 3724 -j ACCEPT

   iptables -A FORWARD    -p TCP -i $INET -o $LANS --sport 8086 -j ACCEPT

# Masquerading

   iptables -t nat -A POSTROUTING -o $INET -s 192.168.2.20 -j MASQUERADE

# ICMP-Ping Forwarden

   iptables -A FORWARD -p ICMP -j ACCEPT

# SMTP und POP3 Forwarden

   iptables -A FORWARD -p TCP -i $LANS -o $INET --sport $UNPRIV --dport 110 -m state --state NEW -j ACCEPT

   iptables -A FORWARD -p TCP -i $LANS -o $INET --sport $UNPRIV --dport 25 -m state --state NEW -j ACCEPT

# Ab hier ist jeder TCP-Verbindungsaufbau von ausen verboten

   iptables -A INPUT -p TCP -i $INET -j rausdamit

# http und https ins Internet

   iptables -A OUTPUT -p TCP -o $INET --sport $UNPRIV --dport 80 -m state --state NEW -j ACCEPT

   iptables -A OUTPUT -p TCP -o $INET --sport $UNPRIV --dport 443 -m state --state NEW -j ACCEPT

# http-proxy (Squid) im LAN auf Server freigeben

   iptables -A INPUT -p TCP -i $LANS --sport $UNPRIV --dport 3128 -m state --state NEW -j ACCEPT

   iptables -A INPUT -p TCP -i $LANX --sport $UNPRIV --dport 3128 -m state --state NEW -j ACCEPT

# DNS vom Server ins Internet freigeben

   iptables -A OUTPUT -p UDP -o $INET --sport $UNPRIV --dport 53 -m state --state NEW -j ACCEPT

   iptables -A OUTPUT -p TCP -o $INET --sport $UNPRIV --dport 53 -m state --state NEW -j ACCEPT

# DNS vom Lan auf Server zulassen

   iptables -A INPUT -p UDP -i $LANS --sport $UNPRIV --dport 53 -m state --state NEW -j ACCEPT

   iptables -A INPUT -p UDP -i $LANX --sport $UNPRIV --dport 53 -m state --state NEW -j ACCEPT

   iptables -A INPUT -p TCP -i $LANS --sport $UNPRIV --dport 53 -m state --state NEW -j ACCEPT

   iptables -A INPUT -p TCP -i $LANX --sport $UNPRIV --dport 53 -m state --state NEW -j ACCEPT

# DNS vom Server auf Lan zulassen

   iptables -A OUTPUT -p UDP -o $LANS --sport $UNPRIV --dport 53 -m state --state NEW -j ACCEPT

   iptables -A OUTPUT -p UDP -o $LANX --sport $UNPRIV --dport 53 -m state --state NEW -j ACCEPT

   iptables -A OUTPUT -p TCP -o $LANS --sport $UNPRIV --dport 53 -m state --state NEW -j ACCEPT

   iptables -A OUTPUT -p TCP -o $LANX --sport $UNPRIV --dport 53 -m state --state NEW -j ACCEPT

# ftp vi Squid

   iptables -A PREROUTING -t nat -p TCP -i $LANS -d 0/0 --dport 21 -j DNAT --to-destination 192.168.2.20:21

   iptables -A PREROUTING -t nat -p TCP -i $LANX -d 0/0 --dport 21 -j DNAT --to-destination 192.168.0.20:21

# ftp-Kommandokanal von Squid ins Internet

   iptables -A OUTPUT -p TCP --sport $UNPRIV --dport 21 -m state --state NEW -j ACCEPT

# ftp-Datenkanal des Proxys von hohen Ports zu hohen Ports

   iptables -A OUTPUT -p TCP -o $INET --sport $UNPRIV --dport $UNPRIV -m state --state NEW -j ACCEPT

# ftp-Kommandokanal von Lan zu Proxy

   iptables -A INPUT -p TCP -i $LANS --sport $UNPRIV --dport 21 -m state --state NEW -j ACCEPT

   iptables -A INPUT -p TCP -i $LANX --sport $UNPRIV --dport 21 -m state --state NEW -j ACCEPT

# ftp-Datenkanal von Lan zum Proxy

   iptables -A INPUT -p TCP -i $LANS --dport $UNPRIV --sport $UNPRIV -m state --state NEW -j ACCEPT

   iptables -A INPUT -p TCP -i $LANX --dport $UNPRIV --sport $UNPRIV -m state --state NEW -j ACCEPT

# Traceroute (vom Server ins I-Net)

   iptables -A OUTPUT -p UDP -o $INET --dport $TRACEROUTE -m state --state NEW -j ACCEPT

# SSH lokales Netz

   iptables -A OUTPUT -p TCP -o $LANS --sport $UNPRIV --dport 22 -m state --state NEW -j ACCEPT

   iptables -A OUTPUT -p TCP -o $LANX --sport $UNPRIV --dport 22 -m state --state NEW -j ACCEPT

# zu Lan

   iptables -A INPUT -p TCP -i $LANS --sport $UNPRIV --dport 22 -m state --state NEW -j ACCEPT

   iptables -A INPUT -p TCP -i $LANX --sport $UNPRIV --dport 22 -m state --state NEW -j ACCEPT

# DHCP von LAN auf Server

   iptables -A INPUT -p UDP -i $LANS --sport 67:68 --dport 67:68 -m state --state NEW -j ACCEPT

   iptables -A INPUT -p UDP -i $LANX --sport 67:68 --dport 67:68 -m state --state NEW -j ACCEPT

# DHCP von Server auf LAN erlauben

   iptables -A OUTPUT -p UDP -o $LANS --sport 67:68 --dport 67:68 -m state --state NEW -j ACCEPT

   iptables -A OUTPUT -p UDP -o $LANX --sport 67:68 --dport 67:68 -m state --state NEW -j ACCEPT

# Samba von Server auf LAN erlauben

   iptables -A INPUT -p UDP -i $LANS --sport 137:139 --dport 137:139 -m state --state NEW -j ACCEPT

   iptables -A INPUT -p UDP -i $LANX --sport 137:139 --dport 137:139 -m state --state NEW -j ACCEPT

   iptables -A INPUT -p TCP -i $LANS --sport $UNPRIV --dport 137:139 -m state --state NEW -j ACCEPT

   iptables -A INPUT -p TCP -i $LANX --sport $UNPRIV --dport 137:139 -m state --state NEW -j ACCEPT

   iptables -A INPUT -p UDP -i $LANS --sport 137:139 --dport 53     -m state --state NEW -j ACCEPT

   iptables -A INPUT -p UDP -i $LANX --sport 137:139 --dport 53     -m state --state NEW -j ACCEPT

# Samba ins Inet verbieten

   iptables -A OUTPUT -p UDP -o $INET --dport 137:139 -j DROP

# ICMP-Ping 8 und 0 ausgehend erlauben

   iptables -A OUTPUT -p ICMP      --icmp-type echo-request -j ACCEPT

   iptables -A OUTPUT -p ICMP      --icmp-type echo-reply    -j ACCEPT

   iptables -A OUTPUT -p ICMP      --icmp-type destination-unreachable -j ACCEPT

# ICMP-Ping 8 und 0 eingehend auf LAN erlaubt

   iptables -A INPUT -p ICMP -i $LANS   --icmp-type echo-request -j ACCEPT

   iptables -A INPUT -p ICMP -i $LANX   --icmp-type echo-request -j ACCEPT

   iptables -A INPUT -p ICMP -i $LANS   --icmp-type echo-reply  -j ACCEPT

   iptables -A INPUT -p ICMP -i $LANX    --icmp-type echo-reply  -j ACCEPT

# ICMP-Ping 8 und 0 eingehend auf ppp0 in Grenzen erlaubt

   iptables -A INPUT -p ICMP -i $INET    -m limit --limit 5/s --icmp-type echo-request -j ACCEPT

   iptables -A INPUT -p ICMP -i $INET    --icmp-type echo-request -j rausdamit

   iptables -A INPUT -p ICMP -i $INET    --icmp-type echo-reply -j ACCEPT

   iptables -A INPUT -p ICMP -i $INET    --icmp-type destination-unreachable -j ACCEPT

# So was nun bis hierher gekommen is wird rausgeschmissen oder zurückgewießen

   iptables -A INPUT   -j rausdamit

   iptables -A FORWARD   -j rausdamit

   iptables -A OUTPUT   -j rausdamit

   einfo "Der schlimme Finger is nu auf der Leitung drauf!!"

   eend $?

}

stop() {

   ebegin "Weg mit dem schlimmen Finger!!"

   iptables -F

   iptables -t nat -F

   iptables -t mangle -F

   iptables -X

   iptables -P INPUT ACCEPT

   iptables -P FORWARD ACCEPT

   iptables -P OUTPUT ACCEPT

   einfo "Der schlimme Finger ist wieder weg nun kann alles wieder durch!!"

   echo 0 > /proc/sys/net/ipv4/ip_forward

   einfo "Routing is aus"

   eend $?

}

reload() {

   ebegin "Regeln löschen"

   iptables -F

   iptables -t nat -F

   iptables -t mangle -F

   iptables -X

   einfo "Regeln neu laden"

   eend $?

   start

}

status() {

   ebegin "Die Filterregeln: "

   iptables -L -n -v

   iptables -v -n -t nat -L POSTROUTING

   iptables -v -n -t nat -L PREROUTING

   iptables -v -n -t mangle -L FORWARD

   iptables -v -n -t mangle -L PREROUTING

   iptables -v -n -t mangle -L POSTROUTING

   eend $?

}

```

ifconfig tels me 

```
eth0      Protokoll:Ethernet  Hardware Adresse 00:04:75:DF:05:C3  

          inet Adresse:192.168.0.1  Bcast:192.168.0.255  Maske:255.255.255.0

          UP BROADCAST MULTICAST  MTU:1500  Metric:1

          RX packets:0 errors:0 dropped:0 overruns:0 frame:0

          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

          Kollisionen:0 Sendewarteschlangenlänge:1000 

          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

          Interrupt:10 Basisadresse:0x6f80 

eth1      Protokoll:Ethernet  Hardware Adresse 00:02:44:98:BF:A7  

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:411714 errors:0 dropped:0 overruns:0 frame:0

          TX packets:321080 errors:0 dropped:0 overruns:0 carrier:0

          Kollisionen:0 Sendewarteschlangenlänge:1000 

          RX bytes:515170946 (491.3 Mb)  TX bytes:64344092 (61.3 Mb)

          Interrupt:9 Basisadresse:0xdc00 

eth2      Protokoll:Ethernet  Hardware Adresse 00:E0:7D:C0:3E:1B  

          inet Adresse:192.168.2.1  Bcast:192.168.2.255  Maske:255.255.255.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:315689 errors:0 dropped:0 overruns:0 frame:0

          TX packets:405463 errors:0 dropped:0 overruns:0 carrier:0

          Kollisionen:0 Sendewarteschlangenlänge:1000 

          RX bytes:63310565 (60.3 Mb)  TX bytes:511429128 (487.7 Mb)

          Interrupt:5 Basisadresse:0xda00 

lo        Protokoll:Lokale Schleife  

          inet Adresse:127.0.0.1  Maske:255.0.0.0

          UP LOOPBACK RUNNING  MTU:16436  Metric:1

          RX packets:80 errors:0 dropped:0 overruns:0 frame:0

          TX packets:80 errors:0 dropped:0 overruns:0 carrier:0

          Kollisionen:0 Sendewarteschlangenlänge:0 

          RX bytes:9257 (9.0 Kb)  TX bytes:9257 (9.0 Kb)

ppp0      Protokoll:Punkt-zu-Punkt Verbindung  

          inet Adresse:85.124.151.193  P-z-P:172.25.46.73  Maske:255.255.255.255

          UP PUNKTZUPUNKT RUNNING NOARP MULTICAST  MTU:1492  Metric:1

          RX packets:674 errors:0 dropped:0 overruns:0 frame:0

          TX packets:594 errors:0 dropped:0 overruns:0 carrier:0

          Kollisionen:0 Sendewarteschlangenlänge:3 

          RX bytes:666951 (651.3 Kb)  TX bytes:67542 (65.9 Kb)

```

and route -n 

```
Kernel IP Routentabelle

Ziel            Router          Genmask         Flags Metric Ref    Use Iface

172.25.46.73    0.0.0.0         255.255.255.255 UH    0      0        0 ppp0

192.168.2.0     0.0.0.0         255.255.255.0   U     0      0        0 eth2

192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

127.0.0.0       127.0.0.1       255.0.0.0       UG    0      0        0 lo

0.0.0.0         172.25.46.73    0.0.0.0         UG    0      0        0 ppp0

```

Can someone tel me why the following Package dont will be NATed ?

Jul 21 06:22:20 gmundens DROP-TCP IN=ppp0 OUT= MAC= SRC=80.239.233.100 DST=85.124.151.193 LEN=1452 TOS=0x00 PREC=0x00 TTL=53 ID=39200 DF PROTO=TCP SPT=3724 DPT=1058 WINDOW=9376 RES=0x00 ACK URGP=0

----------

## Wolfi

I have done a smal test. Generated some Rules as follow

```
# WoW

   iptables -N WoW

   iptables -A WoW -j DROP

# Detour for WoW

   iptables -t nat -A PREROUTING    -p tcp -i ppp0  --sport 3724 -j DNAT --to-destination 192.168.0.20

   iptables -t nat -A PREROUTING    -p tcp -i ppp0  --sport 3724 -j ACCEPT

   iptables    -A FORWARD    -p tcp       --sport 3724 -j ACCEPT

   iptables    -A INPUT    -p tcp -i ppp0  --sport 3724 -j WoW 
```

Normaly the NAT rules should capter the packages, but the go through to the INPUT rule and than the rule drop them. What should i do with this internet IP in my private Network range. The Log shows that no packages are nated.

```
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination         

 

    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp spt:3724

    0     0 rausdamit  all  --  *      *       0.0.0.0/0            0.0.0.0/0

Chain WoW (1 references)

 pkts bytes target     prot opt in     out     source               destination         

    6  8628 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain PREROUTING (policy ACCEPT 930 packets, 93843 bytes)

 pkts bytes target     prot opt in     out     source               destination         

    0     0 DNAT       tcp  --  ppp0   *       0.0.0.0/0            0.0.0.0/0           tcp spt:3724 to:192.168.0.20

    0     0 ACCEPT     tcp  --  ppp0   *       0.0.0.0/0            0.0.0.0/0           tcp spt:3724

    0     0 DNAT       tcp  --  eth2   *       0.0.0.0/0            0.0.0.0/0           tcp dpt:21 to:192.168.0.1:21

    0     0 DNAT       tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0           tcp dpt:21 to:192.168.0.1:21

```

I have no idea what i have to do to get this Packages through. Are ther some Kernel options, the i have to aktivate additional to do this, ore something els?

----------

## pteppic

That's a lot of scripting to read to understand what is going on there, can I see the output of 'iptables --list -nv -t nat' and 'iptables -nv --list'  it's easier to read.

As a side note, what is the deal with people writing iptables scripts, the utilities iptables, iptables-restore and iptables-save are easy enough to use, even without /etc/init.d/iptables save|reload options. Is it snake oil or am I missing something?

----------

## Drunkula

 *pteppic wrote:*   

> As a side note, what is the deal with people writing iptables scripts, the utilities iptables, iptables-restore and iptables-save are easy enough to use, even without /etc/init.d/iptables save|reload options. Is it snake oil or am I missing something?

 

If you're missing something then so am I.  I use those as well.  Unfortunately I have no advice for the original poster.   :Confused:    NAT has always been a thorn in my side.  I really should read up on it!

----------

## Wolfi

Ok, ther is the outpost from iptables --list -nv -t nat

```
Chain PREROUTING (policy ACCEPT 152 packets, 10759 bytes)

 pkts bytes target     prot opt in     out     source               destination         

    0     0 DNAT       tcp  --  *      *       80.239.233.100       0.0.0.0/0           tcp spt:3724 to:192.168.2.20:3724 

    0     0 DNAT       tcp  --  *      *       80.239.233.100       0.0.0.0/0           tcp spt:8086 to:192.168.2.20:8086 

    0     0 DNAT       tcp  --  eth2   *       0.0.0.0/0            0.0.0.0/0           tcp dpt:21 to:192.168.2.20:21 

    0     0 DNAT       tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0           tcp dpt:21 to:192.168.0.20:21 

Chain POSTROUTING (policy ACCEPT 113 packets, 5196 bytes)

 pkts bytes target     prot opt in     out     source               destination         

    7   336 MASQUERADE  all  --  *      ppp0    192.168.2.20         0.0.0.0/0           

Chain OUTPUT (policy ACCEPT 13 packets, 1196 bytes)

 pkts bytes target     prot opt in     out     source               destination         

```

and the from iptables -nv --list

```
Chain INPUT (policy DROP 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination         

    0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           

    0     0 rausdamit  all  --  ppp0   *       10.0.0.0/8           0.0.0.0/0           

    0     0 rausdamit  all  --  ppp0   *       172.16.0.0/12        0.0.0.0/0           

    0     0 rausdamit  all  --  ppp0   *       192.168.0.0/16       0.0.0.0/0           

    3   544 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 

   62 15708 rausdamit  tcp  --  ppp0   *       0.0.0.0/0            0.0.0.0/0           

    0     0 ACCEPT     tcp  --  eth2   *       0.0.0.0/0            0.0.0.0/0           tcp spts:1024:65535 dpt:3128 state NEW 

    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0           tcp spts:1024:65535 dpt:3128 state NEW 

    1    67 ACCEPT     udp  --  eth2   *       0.0.0.0/0            0.0.0.0/0           udp spts:1024:65535 dpt:53 state NEW 

    0     0 ACCEPT     udp  --  eth0   *       0.0.0.0/0            0.0.0.0/0           udp spts:1024:65535 dpt:53 state NEW 

    0     0 ACCEPT     tcp  --  eth2   *       0.0.0.0/0            0.0.0.0/0           tcp spts:1024:65535 dpt:53 state NEW 

    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0           tcp spts:1024:65535 dpt:53 state NEW 

    0     0 ACCEPT     tcp  --  eth2   *       0.0.0.0/0            0.0.0.0/0           tcp spts:1024:65535 dpt:21 state NEW 

    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0           tcp spts:1024:65535 dpt:21 state NEW 

    0     0 ACCEPT     tcp  --  eth2   *       0.0.0.0/0            0.0.0.0/0           tcp spts:1024:65535 dpts:1024:65535 state NEW 

    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0           tcp spts:1024:65535 dpts:1024:65535 state NEW 

    0     0 ACCEPT     tcp  --  eth2   *       0.0.0.0/0            0.0.0.0/0           tcp spts:1024:65535 dpt:22 state NEW 

    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0           tcp spts:1024:65535 dpt:22 state NEW 

    0     0 ACCEPT     udp  --  eth2   *       0.0.0.0/0            0.0.0.0/0           udp spts:67:68 dpts:67:68 state NEW 

    0     0 ACCEPT     udp  --  eth0   *       0.0.0.0/0            0.0.0.0/0           udp spts:67:68 dpts:67:68 state NEW 

    9  1143 ACCEPT     udp  --  eth2   *       0.0.0.0/0            0.0.0.0/0           udp spts:137:139 dpts:137:139 state NEW 

    0     0 ACCEPT     udp  --  eth0   *       0.0.0.0/0            0.0.0.0/0           udp spts:137:139 dpts:137:139 state NEW 

    0     0 ACCEPT     tcp  --  eth2   *       0.0.0.0/0            0.0.0.0/0           tcp spts:1024:65535 dpts:137:139 state NEW 

    0     0 ACCEPT     tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0           tcp spts:1024:65535 dpts:137:139 state NEW 

    0     0 ACCEPT     udp  --  eth2   *       0.0.0.0/0            0.0.0.0/0           udp spts:137:139 dpt:53 state NEW 

    0     0 ACCEPT     udp  --  eth0   *       0.0.0.0/0            0.0.0.0/0           udp spts:137:139 dpt:53 state NEW 

    0     0 ACCEPT     icmp --  eth2   *       0.0.0.0/0            0.0.0.0/0           icmp type 8 

    0     0 ACCEPT     icmp --  eth0   *       0.0.0.0/0            0.0.0.0/0           icmp type 8 

    0     0 ACCEPT     icmp --  eth2   *       0.0.0.0/0            0.0.0.0/0           icmp type 0 

    0     0 ACCEPT     icmp --  eth0   *       0.0.0.0/0            0.0.0.0/0           icmp type 0 

    0     0 ACCEPT     icmp --  ppp0   *       0.0.0.0/0            0.0.0.0/0           limit: avg 5/sec burst 5 icmp type 8 

    0     0 rausdamit  icmp --  ppp0   *       0.0.0.0/0            0.0.0.0/0           icmp type 8 

    0     0 ACCEPT     icmp --  ppp0   *       0.0.0.0/0            0.0.0.0/0           icmp type 0 

    0     0 ACCEPT     icmp --  ppp0   *       0.0.0.0/0            0.0.0.0/0           icmp type 3 

    5   413 rausdamit  all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain FORWARD (policy DROP 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination         

 1599  179K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 

    5   240 ACCEPT     tcp  --  eth2   ppp0    0.0.0.0/0            0.0.0.0/0           tcp spts:1024:65535 dpts:1024:65535 state NEW 

    0     0 ACCEPT     tcp  --  eth2   ppp0    0.0.0.0/0            0.0.0.0/0           tcp spts:1024:65535 dpts:1024:65535 state NEW 

    2    96 ACCEPT     tcp  --  eth2   ppp0    0.0.0.0/0            0.0.0.0/0           tcp spts:1024:65535 dpt:80 state NEW 

    0     0 ACCEPT     tcp  --  ppp0   eth2    0.0.0.0/0            0.0.0.0/0           tcp spt:3724 

    0     0 ACCEPT     tcp  --  ppp0   eth2    0.0.0.0/0            0.0.0.0/0           tcp spt:8086 

    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           

    0     0 ACCEPT     tcp  --  eth2   ppp0    0.0.0.0/0            0.0.0.0/0           tcp spts:1024:65535 dpt:110 state NEW 

    0     0 ACCEPT     tcp  --  eth2   ppp0    0.0.0.0/0            0.0.0.0/0           tcp spts:1024:65535 dpt:25 state NEW 

    0     0 rausdamit  all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy DROP 0 packets, 0 bytes)

 pkts bytes target     prot opt in     out     source               destination         

    0     0 ACCEPT     all  --  *      lo      0.0.0.0/0            0.0.0.0/0           

   60  3121 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 

    0     0 ACCEPT     tcp  --  *      ppp0    0.0.0.0/0            0.0.0.0/0           tcp dpt:873 state NEW 

    0     0 ACCEPT     tcp  --  *      ppp0    0.0.0.0/0            0.0.0.0/0           tcp spts:1024:65535 dpt:22 state NEW 

    0     0 ACCEPT     tcp  --  *      ppp0    0.0.0.0/0            0.0.0.0/0           tcp spts:1024:65535 dpt:80 state NEW 

    0     0 ACCEPT     tcp  --  *      ppp0    0.0.0.0/0            0.0.0.0/0           tcp spts:1024:65535 dpt:443 state NEW 

    2   163 ACCEPT     udp  --  *      ppp0    0.0.0.0/0            0.0.0.0/0           udp spts:1024:65535 dpt:53 state NEW 

    0     0 ACCEPT     tcp  --  *      ppp0    0.0.0.0/0            0.0.0.0/0           tcp spts:1024:65535 dpt:53 state NEW 

    0     0 ACCEPT     udp  --  *      eth2    0.0.0.0/0            0.0.0.0/0           udp spts:1024:65535 dpt:53 state NEW 

    0     0 ACCEPT     udp  --  *      eth0    0.0.0.0/0            0.0.0.0/0           udp spts:1024:65535 dpt:53 state NEW 

    0     0 ACCEPT     tcp  --  *      eth2    0.0.0.0/0            0.0.0.0/0           tcp spts:1024:65535 dpt:53 state NEW 

    0     0 ACCEPT     tcp  --  *      eth0    0.0.0.0/0            0.0.0.0/0           tcp spts:1024:65535 dpt:53 state NEW 

    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp spts:1024:65535 dpt:21 state NEW 

    0     0 ACCEPT     tcp  --  *      ppp0    0.0.0.0/0            0.0.0.0/0           tcp spts:1024:65535 dpts:1024:65535 state NEW 

    0     0 ACCEPT     udp  --  *      ppp0    0.0.0.0/0            0.0.0.0/0           udp dpts:33434:33999 state NEW 

    0     0 ACCEPT     tcp  --  *      eth2    0.0.0.0/0            0.0.0.0/0           tcp spts:1024:65535 dpt:22 state NEW 

    0     0 ACCEPT     tcp  --  *      eth0    0.0.0.0/0            0.0.0.0/0           tcp spts:1024:65535 dpt:22 state NEW 

    0     0 ACCEPT     udp  --  *      eth2    0.0.0.0/0            0.0.0.0/0           udp spts:67:68 dpts:67:68 state NEW 

    0     0 ACCEPT     udp  --  *      eth0    0.0.0.0/0            0.0.0.0/0           udp spts:67:68 dpts:67:68 state NEW 

    0     0 DROP       udp  --  *      ppp0    0.0.0.0/0            0.0.0.0/0           udp dpts:137:139 

    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           icmp type 8 

    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           icmp type 0 

    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           icmp type 3 

    0     0 rausdamit  all  --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain rausdamit (8 references)

 pkts bytes target     prot opt in     out     source               destination         

   53  2640 LOG        tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp flags:0x17/0x02 LOG flags 0 level 4 prefix `DROP-TCP-SYN ' 

   53  2640 REJECT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp flags:0x17/0x02 limit: avg 5/sec burst 5 reject-with tcp-reset 

    0     0 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp flags:0x17/0x02 

    9 13068 LOG        tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           LOG flags 0 level 4 prefix `DROP-TCP ' 

    9 13068 REJECT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           limit: avg 5/sec burst 5 reject-with tcp-reset 

    0     0 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           

    5   413 LOG        udp  --  *      *       0.0.0.0/0            0.0.0.0/0           LOG flags 0 level 4 prefix `DROP-UDP ' 

    5   413 REJECT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           limit: avg 5/sec burst 5 reject-with icmp-port-unreachable 

    0     0 DROP       udp  --  *      *       0.0.0.0/0            0.0.0.0/0           

    0     0 LOG        icmp --  *      *       0.0.0.0/0            0.0.0.0/0           LOG flags 0 level 4 prefix `DROP-ICMP ' 

    0     0 DROP       icmp --  *      *       0.0.0.0/0            0.0.0.0/0           

    0     0 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0           LOG flags 0 level 4 prefix `DROP-PROTO-ETC ' 

    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           limit: avg 5/sec burst 5 reject-with icmp-port-unreachable 

    0     0 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0           

```

I have never used this implementet Iptables script. I dont know why.

Maby it was about 4 years ago as I writen my script on a 2.4kernel and all works right. Recently there was bad wether and a lightning damaged my old gentoo PC. After this i bild all new with new (old) hardware. Now i have a 2.6.17.6 kernel with mutch more options for iptables with this X-Tables. So i adapted my old script to the new kernel. All works fine but this damn NAT wount work.

----------

## pteppic

If you are trying got get the XP box to act as some kind of server then the criteria should be --dport as there is no guarantee what the source port is going to be (ie http server runs on port 80, therefore if browser uses port 80 to recieve it will conflict)

If you are trying to connect to a server there should be no need to have any DNAT at all

so acting as server 

```
iptables -t nat -A PREROUTING -p tcp -i ppp0 -s 80.239.233.100 -m tcp --dport 3724 -j DNAT --to-destination 192.168.2.20 
```

----------

## Wolfi

Ok, I have done some tests in the last time and I know now i dont need the NAT rules. I connect me to a server and all packages from the XP box are Masqueraded on the Gentoo-Router. The conntrack modles does the rest. Packages from the outside will be Forwarded to the XP box.

At the moment i dont know why the connection to the gameserver alltimes dies in short time. I used tcpdump to see the networkpackages and to analys it and i think all is ok but there are many lines in this form

18:44:41.911130 00:0f:24:dd:47:0c > 01:00:0c:cc:cc:cd SNAP Unnumbered, ui, Flags [Command], length 50

can someone tel me what are this is ?

----------

## phil_r

I've just had a similar problem but not sure my solution will help.

I've just built a new Gentoo server to act as my firewall, router etc replacing a FC3 box.  I kept the firewall rules and just ported them over.  Everything worked fine - except NAT.  I had everything compiled in the kernel, all the modules were loaded, it just would not NAT.  Out of desperation, I emerged Shorewall because I was convinced it was the firewall script even though I'd spent 2 days checking it (and a previous post about what the [xx:xx] means).  Upon emerging shorewall, the deps tell me iproute2 needs to be installed.  Light bulb!  Install a routing package!

Installed that, scrapped shorewall, rebooted, made sure IP forwarding was enabled (/etc/sysctl.conf) and hey ho, I'm NAT'ting happily so all my P2P stuff works right now  :Smile: 

HTH.

Phil.

----------

