Probleme mit Iptables-Router

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
Benutzeravatar
cga
Beiträge: 3
Registriert: 05.07.2007 19:33:39

Probleme mit Iptables-Router

Beitrag von cga » 05.07.2007 19:54:18

Hallo,
ich hab gerade auf meinem Router-PC auf Debian 4.0 umgestiegen.

Unter FreeBSD, was vorher drauf lief, war die Firewall/NAT-Software PF, jetzt unter Linux hab ich iptables/netfilter.

Ich hab nicht so viel Erfahrung mit iptables. Ich habe nun folgendes Skript geschrieben:

Code: Alles auswählen

# Definiere einige Befehle:
IPTABLES="/sbin/iptables"
ECHO="/bin/echo"

# Netzwerkkarten und LAN-IPs:
EXTDEV="eth0"
INTDEV="eth1"
LOOP="lo"
CLIENTS=192.168.1.0/24

# Alle eventuell vorhanden Regeln geloescht:
$IPTABLES -F
$IPTABLES -t nat -F

# Verwerfe erstmal alles,
# indem die Default-Policy auf DROP gesetzt wird.
$IPTABLES -P INPUT DROP
$IPTABLES -P FORWARD DROP

# Alle Pakete aus dem Router selbst, werden durchgelassen
$IPTABLES -P OUTPUT ACCEPT

# Auf dem Loopback-Interface sind eingehende Verbindungen erlaubt.
$IPTABLES -A INPUT -i $LOOP -j ACCEPT

# Alle ICMP Anfragen an den Router werden durchgelassen, auch von Aussen.
$IPTABLES -A INPUT -p icmp --icmp-type any -j ACCEPT

# Pakete aus dem LAN nach Draussen werden durchgelassen.
$IPTABLES -A FORWARD -i $INTDEV -o $EXTDEV -m state --state NEW -j ACCEPT

# Alle Pakete vom LAN zum Router werden durchgelassen.
$IPTABLES -A INPUT -i $INTDEV -j ACCEPT

# Alle Pakete, die Antworten sind, werden durchgelassen, auch von Aussen.
$IPTABLES -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Das Paket-Forwarding wird aktiviert.
$ECHO "1" > /proc/sys/net/ipv4/ip_forward

# NAT: 
$IPTABLES -t nat -A POSTROUTING -o $EXTDEV -j MASQUERADE

Es schien zu funktionieren...
Aber oft erscheinen Webseiten erst nach erneuten Laden und die meisten Downloads brechen mittendrin ab. :(

Das Problem besteht auch auf dem Router-PC selbst. Ist die Firewall aus, geht auf dem Router-PC alles ohne Probleme.

Ich weiß nicht was ich da falsch gemacht habe.

Vielleicht kann jemand helfen,

Vielen Dank!!!
8O C. G. A. :)
Das Drama-Lama

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von rendegast » 06.07.2007 00:45:50

Es fehlen doch noch Regeln für die PREROUTING-table, denke ich.

Alle Regeln werden Dir gelistet

Code: Alles auswählen

iptables -v -n -L filter
iptables -v -n -L nat
iptables -v -n -L mangle
iptables -v -n -L raw
Hast Du schon fwbuilder versucht?
Ich habe mit dem Skript /sbin/SuSEfirewall2 angefangen.
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Benutzeravatar
cga
Beiträge: 3
Registriert: 05.07.2007 19:33:39

Beitrag von cga » 06.07.2007 14:35:38

Also eigentlich brauche ich keine Regeln in der PREROUTING-Tabelle ich mache ja [noch] kein Portforwarding, sondern will nur ein simples Source-NAT. Für ein Source-NAT braucht man nur POSTROUTING-Regeln.

Und mit dem fwbuilder komm ich nicht klar, da find ich es einfacher von Hand.

Ich habe mir gedacht, wo kann ich mein Skript noch vereinfachen? ...probier ich doch mal SNAT statt MASQUERADE und nun heißt mein Skript in der letzten Zeile:

Code: Alles auswählen

# NAT: 
$IPTABLES -t nat -A POSTROUTING -o $EXTDEV -j SNAT --to-source <meine öffentliche IP> 
und es funktioniert wunderbar!!! :D keine abbrechenden Downloads mehr.

Nur hab ich keine statische IP, ich werd jeden Tag von meinem Provider disconnected, jedes Mal das Skript zu ändern ist auf Dauer keine Lösung.

Kennt jemand einen Weg ohne greppen und awken der Ausgabe von "ifconfig eth0" in einem Shellskript (oder Perl) an die IP von eth0 zu kommen?

Und ist das ein Bug in MASQUERADE oder warum funktioniert das so schlecht??

PS: Ich hab jetzt gemerkt, dass es hier auch ein "Internetrouter und Proxies" Forum gibt, vll wär der Beitrag da besser aufgehoben
8O C. G. A. :)
Das Drama-Lama

Benutzeravatar
mistersixt
Beiträge: 6601
Registriert: 24.09.2003 14:33:25
Lizenz eigener Beiträge: GNU Free Documentation License

Beitrag von mistersixt » 06.07.2007 15:03:43

Ich habe:

Code: Alles auswählen

...
$IPTABLES -A POSTROUTING -t nat -s 10.4.1.0/24 -o $EXTIF            -j MASQUERADE
...
10.4.1.0/24 ist halt mein LAN, das musst Du natürlich adjustieren. Dann ist Deine aktuelle IP-Adresse Wurst.

Gruss, mistersixt.
--
System: Debian Bookworm, 6.11.x.-x-amd64, ext4, AMD Ryzen 7 3700X, 8 x 3.8 Ghz., Radeon RX 5700 XT, 32 GB Ram, XFCE

Benutzeravatar
cga
Beiträge: 3
Registriert: 05.07.2007 19:33:39

Beitrag von cga » 06.07.2007 17:10:38

Es geht doch gerade darum, dass MASQUERADE bei mir aus irgendeinem Grund nicht funktioniert, und dass ich SNAT nehmen muss. Und für SNAT braucht man seine öffentliche IP.
Und es funktioniert auch mit

Code: Alles auswählen

 $IPTABLES -t nat -A POSTROUTING -s 192.168.1.0/24 -o $EXTDEV -j MASQUERADE 
genausowenig wie mit

Code: Alles auswählen

 $IPTABLES -t nat -A POSTROUTING -o $EXTDEV -j MASQUERADE 
.

Downloads brechen mittendrin ab, ich kann mir noch nicht mal ein youtube-Video zu Ende anschauen.

Mit SNAT funktioniert dagegen alles.
8O C. G. A. :)
Das Drama-Lama

diedl2003
Beiträge: 111
Registriert: 01.04.2004 00:23:36
Wohnort: Frankfurt
Kontaktdaten:

Beitrag von diedl2003 » 06.07.2007 23:42:28

Hmm..ich verstehe nicht ganz: du hast diesen router mit einem NIC an einem DSL-Modem hängen? Mich wundert etwas das

Code: Alles auswählen

EXTDEV="eth0"
..ich meine, ich nehme dafür pppoe
Falls du doch pppoe nimmst könntest du mal probieren, die MTU herab zu setzen.
Aber grundsätzlich kann ich sagen, dass ich mit masquerade noch nie ein Problem hatte.Weder zum Internet noch im LAN bei mehr Durchsatz.

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 07.07.2007 10:57:33

Oder du schaust mal nach PMTU. Es gibt da für iptables nen speziellen Schalter, der da Probleme mit einigen Adressen beseitigt.

Antworten