Merkwürdiges Firewall-Problem

Lord Gurke

Nur echt mit 32 Zähnen
(gelöst) Merkwürdiges Firewall-Problem

Hallo zusammen,

ich habe derzeit zwei Server bei Hetzner. Auf einem ist ein IPv4-Subnetz geroutet, auf dem anderen nicht.
Da ich die ganzen Dienste lieber in Ruhe nacheinander umziehen möchte, habe ich beide Server per PPTP-Tunnel verbunden und route einzelne Adressen aus dem IPv4-Subnetz durch den Tunnel an den neuen Server.

Das funktioniert zumindest teilweise, ich bin nun echt langsam am Ende meiner Ideeen...
Der Firewall-Fehler stellt sich so dar:

Ich kann die weggerouteten IP-Adressen anpingen und da antwortet mir auch das richtige System. Umgekehrt funktionieren auch Pings nach außen zu allen möglichen Adressen.
UDP-Pakete kommen auf dem neuen Server ebenfalls an, ebenso kann ich welche rausschicken die ankommen (UDP-Traceroute).

Was nicht geht ist TCP: Wenn ich versuche, von außen auf die geroutete IP über TCP zuzugreifen, kommt das SYN-Paket am alten Server an, wird jedoch dort nicht mehr weitergeroutet.
Umgekehrt gehen ausgehende SYN-Pakete bis zum Ziel raus, der SYN-ACK kommt jedoch auch wieder nur bis zum alten Server und versandet dort. Ergo kommt in keinem Fall eine Verbindung zustande. Selbst wenn ich versuche, eine SSH-Verbindung von der gerouteten IP auf das alte System zu öffnen, läuft das ins Leere.


Die Routingtabelle sollte eigentlich korrekt sein, denn immerhin kommen ja ICMP- und UDP-Pakete problemlos durch. Meine Vermutung liegt jetzt bei der Firewall, die aber eigentlich alles forwarden sollte:
(12.34.56.78 ist jetzt mal beispielhaft die geroutete IP)

Code:
# iptables -L -n

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
Z_FW_INPUT  all  --  0.0.0.0/0            0.0.0.0/0

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
Z_FW_FORWARD  all  --  0.0.0.0/0            0.0.0.0/0

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
Z_FW_OUTPUT  all  --  0.0.0.0/0            0.0.0.0/0


Chain Z_FW_FORWARD (1 references)
target     prot opt source               destination
TCPMSS     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp flags:0x06/0x02 TCPMSS clamp to PMTU
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp flags:0x06/0x04
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp flags:0x03/0x01
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp flags:0x22/0x20
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp flags:0x0A/0x08
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp flags:0x12/0x10
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
ACCEPT     all  --  0.0.0.0/0            12.34.56.78         state NEW,RELATED,ESTABLISHED
ACCEPT     all  --  12.34.56.78          0.0.0.0/0           state NEW,RELATED,ESTABLISHED
ACCEPT     tcp  --  0.0.0.0/0            12.34.56.78         state NEW,RELATED,ESTABLISHED
ACCEPT     udp  --  0.0.0.0/0            12.34.56.78         state NEW,RELATED,ESTABLISHED
ACCEPT     tcp  --  12.34.56.78          0.0.0.0/0           state NEW,RELATED,ESTABLISHED
ACCEPT     udp  --  12.34.56.78          0.0.0.0/0           state NEW,RELATED,ESTABLISHED
LOG        tcp  --  0.0.0.0/0            0.0.0.0/0           LOG flags 0 level 4 prefix `FW-FWD4|'
LOG        udp  --  0.0.0.0/0            0.0.0.0/0           LOG flags 0 level 4 prefix `FW-FWD4|'
Schalte ich die Firewall "auf Durchzug", also setze die Forward-Policy auf ACCEPT, funktioniert es auch nicht. Erst wenn ich alle Regeln lösche und alle Policies auf ACCEPT setze, geht es.

Vielleicht ist ja ein IPTables-Mufti hier, der direkt mit dem Finger drauf zeigen und "Aaaah, da ist der Fehler" schreien kann ;)
Ich sehe vermutlich gerade den Wald vor lauter Bäumen nicht mehr...


Vielen Dank und viele Grüße aus dem Tal
Max
 
Last edited by a moderator:
Ich habe den Fehler gerade selber gefunden!
Aus irgendeinem obskuren Grund wurde auf dem PPTP-Server das Device ppp0 mit einer MTU von 0 Bytes angelegt. Ich habe daraufhin in der Config vom pptpd die MTU fix hinterlegt und die Verbindung neu aufgebaut - jetzt funktioniert auch TCP!
Vermutlich haben UDP und ICMP nur deshalb funktioniert, weil für die Systemseitig keine Fragmentierungsschwelle hinterlegt ist oder der pptpd an der Stelle irgendwie unterscheidet...

Ergo: Erledigt :)
 
Back
Top