Router mit IPTABLES
Hallo,
ich möchte gerne mit einem Linux-Server (Ubuntu) einen kleinen Router machen.
Das ganze sieht so aus:
LINUX-Server (ROUTER) --------------------------------------------> Client
ppp0 (10.x.x.x) und eth0 (192.168.10.1) -----------> 192.168.10.2 (und 192.168.10.1 als Gateway)
Wie kann ich das mit IPTABLES am umsetzen? Gibt es ev. eine andere Lösung die ich auf dem Ubuntu-Server einsetzen kann?
LG. Dextha
ich möchte gerne mit einem Linux-Server (Ubuntu) einen kleinen Router machen.
Das ganze sieht so aus:
LINUX-Server (ROUTER) --------------------------------------------> Client
ppp0 (10.x.x.x) und eth0 (192.168.10.1) -----------> 192.168.10.2 (und 192.168.10.1 als Gateway)
Wie kann ich das mit IPTABLES am umsetzen? Gibt es ev. eine andere Lösung die ich auf dem Ubuntu-Server einsetzen kann?
LG. Dextha
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 135739
Url: https://administrator.de/forum/router-mit-iptables-135739.html
Ausgedruckt am: 03.04.2025 um 19:04 Uhr
10 Kommentare
Neuester Kommentar

Hallo,
was willst du genau machen, ein portforwarding oder nur routing für den client?
http://wiki.ubuntuusers.de/Router
was willst du genau machen, ein portforwarding oder nur routing für den client?
http://wiki.ubuntuusers.de/Router
IPTables fordert einiges an Erfahrung und kann manchmal, wenn man es DIREKT nutzt, sehr nervtötend sein. Um beispielweise HTTP von Intern nach Extern zu erlauben und die entsprechenden rücklaufenden Pakete durchzulassen, kannst du folgendes verwenden:
Und das ist NUR ein Protokoll. Dazu kommt, das es nicht wirklich geprüft wird ob da auch tatsächlich HTTP über Port80 läuft. Was hälst du von ipcop oder anderen reinen Firewall-Distributionen die dir das Leben einfacher machen? Oder du lernst IPTables von Grund auf.
Es gibt da auch noch Hilfsmittel und Scriptsammlungen die das erstellen der Regeln einfacher machen (bei suSE gibt es die SuSEFirewall2, die über Yast grafisch konfiguriert werden kann).
iptables -A FORWARD -i eth0 -o ppp0 -p tcp --sport 1024: --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i ppp0 -o eth0 -p tcp --sport 80 --dport 1024: -m state --state ESTABLISHED -j ACCEPT
Und das ist NUR ein Protokoll. Dazu kommt, das es nicht wirklich geprüft wird ob da auch tatsächlich HTTP über Port80 läuft. Was hälst du von ipcop oder anderen reinen Firewall-Distributionen die dir das Leben einfacher machen? Oder du lernst IPTables von Grund auf.
Es gibt da auch noch Hilfsmittel und Scriptsammlungen die das erstellen der Regeln einfacher machen (bei suSE gibt es die SuSEFirewall2, die über Yast grafisch konfiguriert werden kann).
Moin,
versuchs mal hiermit:
Zeile 1+2 löschen alle Regeln
Zeile 3 aktiviert Masquerading (=NAT)
Zeile 4 erlaubt alles nach draussen
Zeile 5 verbietet alle verbdinungen auf ppp0
ungetestet, verwendung auf eigene Gefahr
edit:
lg,
Slainte
versuchs mal hiermit:
iptables -F
iptables -F -t net
iptables -t nat -A POSTROUTING -s 192.168.10.0/255.255.255.0 -o ppp0 -j MASQUERADE
iptables -P FORWARD ACCEPT
iptables -A INPUT -i ppp0 -j DROP
Zeile 1+2 löschen alle Regeln
Zeile 3 aktiviert Masquerading (=NAT)
Zeile 4 erlaubt alles nach draussen
Zeile 5 verbietet alle verbdinungen auf ppp0
ungetestet, verwendung auf eigene Gefahr
edit:
Wie ist das dann beim Client? Welches Gateway muss ich da definieren? Ist das dann die IP von eth0 am Linux-Server?
Ja, eth0 ist das gw des Clients.lg,
Slainte
Wenn schon so, dann mindestens:
Das ist aber immernoch löchrig wie ein Schweizer Käse und berücksichtigt keine Sonderprotokolle, MTU-Probleme und so weiter.
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -F
iptables -F -t nat
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o ppp0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i ppp0 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth0 -o lo -j ACCEPT
iptables -A FORWARD -i eth0 -o eth0 -j ACCEPT
iptables -A FORWARD -i lo -o lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i eth0 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -P FORWARD DROP
iptables -P INPUT DROP
Das ist aber immernoch löchrig wie ein Schweizer Käse und berücksichtigt keine Sonderprotokolle, MTU-Probleme und so weiter.

warum machst du es nicht einfach wie in meinem link?
Huch, da steht ja alles 
Eventuell auch mal hier schauen. Ist zwar für Gentoo, der IPTables Teil ist aber unabhängig von der Distri.
Eventuell auch mal hier schauen. Ist zwar für Gentoo, der IPTables Teil ist aber unabhängig von der Distri.