|
MichiGreat
Anmeldungsdatum: 14. Mai 2007
Beiträge: Zähle...
|
Hi! Ich habe folgendes, vermeintlich triviales Problem: Meine Xubuntu-Maschine hat zwei Netzwerkschnittstellen, ppp0 und eth0. Port 80 von ppp0 soll auf einen Rechner 192.168.1.2 im Netz von eth0, wiederum Port 80, weitergeleitet werden. Nun habe ich im Ubuntu-Wiki das nette "nathelper"-Skript angefunden. Wenn ich dieses wie im Wiki beschrieben ausführe, führt es zwar einen iptables-Befehl aus der meines Erachtens vernünftig aussieht und lt. iptables-Dokumentation auch passen müsste, jedoch wird Port 80 weiterhin nicht weitergeleitet. Hat jemand eine Idee was da falsch läuft? LG, Michael
|
|
mreczio
Anmeldungsdatum: 1. Mai 2006
Beiträge: 1820
|
Wie wendest du das Script denn an und was zeigt nach der Anwendung ein iptables -L
|
|
MichiGreat
(Themenstarter)
Anmeldungsdatum: 14. Mai 2007
Beiträge: Zähle...
|
mreczio schrieb: Wie wendest du das Script denn an und was zeigt nach der Anwendung ein iptables -L
So starte ich das Skript: root@speedy:/# nathelper -i ppp0 -v -m 192.168.1.2 80:80
sysctl -w net/ipv4/ip_forward=1
net.ipv4.ip_forward = 1
/sbin/iptables -t nat -F
/sbin/iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
/sbin/iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.2:80
NAT erfolgreich aktiviert. Ausgabe von iptables (habe mir erlaubt -n dazuzugeben dass es schneller geht): root@speedy:/# iptables -n -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
LOG all -- 127.0.0.0/8 0.0.0.0/0 LOG flags 0 level 4
DROP all -- 127.0.0.0/8 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 255.255.255.255
ACCEPT all -- 192.168.1.0/24 0.0.0.0/0
ACCEPT !tcp -- 0.0.0.0/0 224.0.0.0/4
LOG all -- 192.168.1.0/24 0.0.0.0/0 LOG flags 0 level 4
DROP all -- 192.168.1.0/24 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 255.255.255.255
ACCEPT all -- 0.0.0.0/0 84.119.22.168
DROP all -- 0.0.0.0/0 224.0.0.1
LOG all -- 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 4
DROP all -- 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy DROP)
target prot opt source destination
ACCEPT all -- 192.168.1.0/24 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
LOG all -- 0.0.0.0/0 192.168.1.0/24 LOG flags 0 level 4
DROP all -- 0.0.0.0/0 192.168.1.0/24
DROP all -- 0.0.0.0/0 224.0.0.1
LOG all -- 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 4
DROP all -- 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 255.255.255.255
ACCEPT all -- 0.0.0.0/0 192.168.1.0/24
ACCEPT !tcp -- 0.0.0.0/0 224.0.0.0/4
LOG all -- 0.0.0.0/0 192.168.1.0/24 LOG flags 0 level 4
DROP all -- 0.0.0.0/0 192.168.1.0/24
ACCEPT all -- 0.0.0.0/0 255.255.255.255
ACCEPT all -- 84.119.22.168 0.0.0.0/0
DROP all -- 0.0.0.0/0 224.0.0.1
LOG all -- 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 4
DROP all -- 0.0.0.0/0 0.0.0.0/0 Nur die Liste nat: root@speedy:/# iptables -n -L -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DNAT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 to:192.168.1.2:80
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
target prot opt source destination Wäre sehr dankbar für jeden hilfreichen Tipp! ☺ LG, Michael
|
|
otzenpunk
Anmeldungsdatum: 17. Oktober 2005
Beiträge: 8691
|
Wie testest du denn, ob's klappt? Aus dem internen Netz geht das nämlich nicht. Es werden nur die Pakete weitergeleitet, die tatsächlich von außen über die ppp0-Schnittstelle kommen. Von innen die äußere IP testen funktioniert nicht.
|
|
MichiGreat
(Themenstarter)
Anmeldungsdatum: 14. Mai 2007
Beiträge: Zähle...
|
otzenpunk schrieb: Wie testest du denn, ob's klappt? Aus dem internen Netz geht das nämlich nicht. Es werden nur die Pakete weitergeleitet, die tatsächlich von außen über die ppp0-Schnittstelle kommen. Von innen die äußere IP testen funktioniert nicht.
Hm, finde ich interessant, dachte die Pakete die fürs Internet bestimmt sind, werden immer über ppp0 geroutet. Wie auch immer, habe jetzt mal probiert als Proxy 141.24.33.162:3128 zu verwenden. Dann muss die Verbindung auf alle Fälle von außen kommen. Dennoch, bei http://mkhome.mine.nu/ kommt nie eine Webseite.
|
|
MichiGreat
(Themenstarter)
Anmeldungsdatum: 14. Mai 2007
Beiträge: 133
|
otzenpunk schrieb: Wie testest du denn, ob's klappt? Aus dem internen Netz geht das nämlich nicht. Es werden nur die Pakete weitergeleitet, die tatsächlich von außen über die ppp0-Schnittstelle kommen. Von innen die äußere IP testen funktioniert nicht.
Hab nun auch ein
iptables -t filter -A INPUT -i ppp0 -p tcp --dport 80 -j ACCEPT
iptables -t filter -A FORWARD -i ppp0 -p tcp --dport 80 -j ACCEPT
iptables -t mangle -A INPUT -i ppp0 -p tcp --dport 80 -j ACCEPT
iptables -t mangle -A FORWARD -i ppp0 -p tcp --dport 80 -j ACCEPT
nachgeschossen. Hilft auch alles nix. :-/
|
|
MichiGreat
(Themenstarter)
Anmeldungsdatum: 14. Mai 2007
Beiträge: 133
|
otzenpunk schrieb: Wie testest du denn, ob's klappt? Aus dem internen Netz geht das nämlich nicht. Es werden nur die Pakete weitergeleitet, die tatsächlich von außen über die ppp0-Schnittstelle kommen. Von innen die äußere IP testen funktioniert nicht.
Jetzt habe ich mal
root@speedy:/home/mk# nathelper -i eth0 -v -m 192.168.1.2 80:80
sysctl -w net/ipv4/ip_forward=1
net.ipv4.ip_forward = 1
/sbin/iptables -t nat -F
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.2:80
NAT erfolgreich aktiviert.
befohlen. Wenn ich nun aber von einem anderen Host im Netz von eth0 http://192.168.1.1/ einebe, funktioniert's auch nicht. Irgendwas stimmt da nicht... :-/
|
|
MichiGreat
(Themenstarter)
Anmeldungsdatum: 14. Mai 2007
Beiträge: 133
|
MichiGreat schrieb: Jetzt habe ich mal
root@speedy:/home/mk# nathelper -i eth0 -v -m 192.168.1.2 80:80
sysctl -w net/ipv4/ip_forward=1
net.ipv4.ip_forward = 1
/sbin/iptables -t nat -F
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.2:80
NAT erfolgreich aktiviert.
befohlen. Wenn ich nun aber von einem anderen Host im Netz von eth0 http://192.168.1.1/ einebe, funktioniert's auch nicht. Irgendwas stimmt da nicht... :-/
Habe nun ähnliches (mit eth0 statt ppp0) auf einer Debian 4 Maschine ausprobiert, deren IP-Tables nach dem Hochfahren "leer" sind. Auch dort funktioniert es nicht!
|
|
otzenpunk
Anmeldungsdatum: 17. Oktober 2005
Beiträge: 8691
|
Liegt eher an den Filterregeln, als am NAT. Leider ist die Ausgabe von iptables -L immer ziemlich wertlos, weil dort keine Interfaces aufgelistet werden. iptables-save liefert bessere Ausgaben. Setz mal die Policies alle auf ACCEPT und flush die Chains und probiere dann nochmal. (Wo kommen die Filterregeln überhaupt her, und was möchtest du damit bewirken?)
|
|
MichiGreat
(Themenstarter)
Anmeldungsdatum: 14. Mai 2007
Beiträge: 133
|
otzenpunk schrieb: Liegt eher an den Filterregeln, als am NAT.
Ja, das denke ich auch. Habe nun mal folgende Kommandos ausgeführt:
iptables -t filter -F
iptables -t filter -A INPUT -m state --state ESTABLISHED -j ACCEPT
iptables -t filter -A INPUT -i lo -j ACCEPT
iptables -t filter -A INPUT -p icmp -j ACCEPT
iptables -t filter -A INPUT -p tcp -m tcp -m multiport --dports 25,80 -m state --state NEW -j ACCEPT
iptables -t filter -A INPUT -i eth0 -j ACCEPT
iptables -t filter -A INPUT -i ppp0 -p udp -m udp --sport 53 -j ACCEPT
iptables -t filter -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -t filter -A FORWARD -o ppp0 -p tcp -m tcp --tcp-flags SYN,RST SYN -m tcpmss --mss 1400:1536 -j TCPMSS --clamp-mss-to-pmtu
iptables -t filter -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A FORWARD -p icmp -j ACCEPT
iptables -t filter -A FORWARD -i eth0 -o ppp0 -m state --state NEW -j ACCEPT
iptables -t filter -A OUTPUT -m state --state ESTABLISHED -j ACCEPT
iptables -t filter -A OUTPUT -o lo -j ACCEPT
iptables -t filter -A OUTPUT -o eth0 -j ACCEPT
iptables -t filter -A OUTPUT -p icmp -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -m tcp -m multiport --dports 25,80 -m state --state NEW -j ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.2
Danach funktioniert das Portforwarding von Port 80! Jedoch funktioniert dann auf dem Router selbst die Internetverbindung nicht mehr. :-/ Es gilt für mich also, die "Schnittmenge" herauszufinden, sodass beides funktioniert. ☺ Setz mal die Policies alle auf ACCEPT und flush die Chains und probiere dann nochmal. (Wo kommen die Filterregeln überhaupt her, und was möchtest du damit bewirken?)
Wie setze ich denn alle Policies auf ACCEPT? Mit "flush die Chains" meinst du "iptables -t Tabelle -F"? Wenn ich das mit nat, filter und mangle mache, geht die Internetverbindung auch nicht mehr.
Das Problem ist, dass nachdem ich mit
pon dsl-provider
die Internetverbindung hergestellt habe, immer haufenweise Sachen in der Tabelle "filter" eingetragen sind, obwohl ich das Skript "ufw" schon längst deaktiviert habe. Soweit ich das analysiert habe, wird diese Tabelle nach dem Herstellen der Internetverbindung immer aufgebaut. Habe noch keine Möglichkeit gefunden, dies effizient zu unterbinden (d.h. die Internetverbindung soll danach noch benutzbar sein).
|
|
MichiGreat
(Themenstarter)
Anmeldungsdatum: 14. Mai 2007
Beiträge: 133
|
otzenpunk schrieb: Setz mal die Policies alle auf ACCEPT ...
Etwa so?
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
|
|
otzenpunk
Anmeldungsdatum: 17. Oktober 2005
Beiträge: 8691
|
MichiGreat schrieb:
die Internetverbindung hergestellt habe, immer haufenweise Sachen in der Tabelle "filter" eingetragen sind, obwohl ich das Skript "ufw" schon längst deaktiviert habe. Soweit ich das analysiert habe, wird diese Tabelle nach dem Herstellen der Internetverbindung immer aufgebaut. Habe noch keine Möglichkeit gefunden, dies effizient zu unterbinden (d.h. die Internetverbindung soll danach noch benutzbar sein).
Wahrscheinlich irgendein Skript in /etc/network/if-up.d/. Bzgl. Policies, Flushen, etc.: Ja, die Befehle sind korrekt.
|
|
MichiGreat
(Themenstarter)
Anmeldungsdatum: 14. Mai 2007
Beiträge: 133
|
otzenpunk schrieb: MichiGreat schrieb:
die Internetverbindung hergestellt habe, immer haufenweise Sachen in der Tabelle "filter" eingetragen sind, obwohl ich das Skript "ufw" schon längst deaktiviert habe. Soweit ich das analysiert habe, wird diese Tabelle nach dem Herstellen der Internetverbindung immer aufgebaut. Habe noch keine Möglichkeit gefunden, dies effizient zu unterbinden (d.h. die Internetverbindung soll danach noch benutzbar sein).
Wahrscheinlich irgendein Skript in /etc/network/if-up.d/. Bzgl. Policies, Flushen, etc.: Ja, die Befehle sind korrekt.
So, habe es nun hinbekommen:
#!/bin/sh
iptables -t filter -F
iptables -t filter -A INPUT -m state --state ESTABLISHED -j ACCEPT
iptables -t filter -A INPUT -p icmp -j ACCEPT
iptables -t filter -A INPUT -p tcp -m tcp -m multiport --dports 25,80,110 -m state --state NEW -j ACCEPT
iptables -t filter -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT
iptables -t filter -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -t filter -A INPUT -p tcp -m tcp --dport 110 -j ACCEPT
iptables -t filter -A INPUT -p tcp -i eth0 -j ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 25 -j DNAT --to-destination 192.168.1.2
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.2
iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 110 -j DNAT --to-destination 192.168.1.2
Ports 25, 80 und 110 von der Internetverbindung werden auf die Maschine im LAN weitergeleitet. Alle anderen Dinge funktionieren ebenso, d.h. die Maschinen im LAN können ins Internet und auf den Router selbst zugreifen. Juhuuu! ☺
Danke auch für deine (=otzenpunk) Tipps, die mir auch geholfen haben, das Problem zu lösen!
|