libor74
Goto Top

OpenSuse 11.4 Port Forwarding funktioniert nicht!

Hallo zusammen!

ich habe einen Linux Router mit DSL Modem und fester IP Adresse. OpenSuse 11.4.
In der DMZ befindet sich ein Mailserver, der die Mails mit Postfix über Post 25 annimmt.

Router und Mailserver funktionieren!

Über YAST habe ich am Router Masquerading aktiviert und lasse alle Pakete über Port 25
weiter leiten:

Source Network: 0/0 Requested IP: 0/0 Requested Port: 25 Redirekt to 192.168.1.5 Redir to Port 25
Diesen Eintrag gibt es für tcp und udp

Wenn ich nun eine Verbindung über Telnet Port 25 aufbaue funktioniert das ganze leider nicht.

tail /var/log/firewall gibt folgende Meldungen aus:
Jun 27 14:19:56 gate kernel: [429715.972728] SFW2-FWDext-ACC-REVMASQ IN=dsl0 OUT=bond0 SRC=62.224.33.50 DST=192.168.1.5 LEN=48 TOS=0x00 PREC=0x00 TTL=121 ID=17569 DF PROTO=TCP SPT=11006 DPT=25 WINDOW=8192 RES=0x00 SYN URGP=0 OPT (020405AC01010402)

Somit versucht doch der Router die Pakete an 192.168.1.5 weiter zu leiten aber am Mailserver kommt nichts an! Über iftop sieht man, dass es zu LAN Verkehr kommt aber ich kann den Fehler nicht finden. Im Protokoll /var/log/mail am Mailserver wird kein Verbindungsaufbau dokumentiert.

Ich verstehe nicht woran es noch hängen kann. Was gibt es noch für Tools, die man hier einsetzen kann?

Danke für Eure Hilfe

Gruß

Libor

Content-ID: 168736

Url: https://administrator.de/forum/opensuse-11-4-port-forwarding-funktioniert-nicht-168736.html

Ausgedruckt am: 20.12.2024 um 03:12 Uhr

aqui
aqui 28.06.2011 um 11:04:56 Uhr
Goto Top
Eigentlich sieht der Syslog Eintrag gut aus ! Du solltest einmal mit tcpdump nachsehen ob das Paket wirklich auf der DMZ Seite also im DMZ Segment ankommt.
Noch besser wäre dort einen Rechner mit einem freien Wireshark Sniffer zu platzieren und wirklich physisch einmal zu prüfen ob diese Pakete wirklich nicht geforwardet werden oder ob doch und ggf. eine lokale Firewall am Mail Server zuschlägt.
Nach deinem o.a. Syslog Eintrag sollten die Pakete vom OpenSuse Router eigentlich schon sauber geforwardet werden !
Libor74
Libor74 28.06.2011 um 14:15:53 Uhr
Goto Top
Hallo,

danke für Deine Antwort.

tcpdump auf dem Mailserver gibt folgende Meldung aus wenn ich mit telnet eine Verbindung auf Port 25 aufbaue:
14:03:02.121131 IP p3ee022f2.dip0.t-ipconnect.de.6712 > mail2.smtp: S 10355405:10355405(0) win 8192 <mss 1452,nop,nop,sackOK>

Der Mailserver gibt aber keine Antwort zurück - kein ACK!

Wenn ich über Telnet eine Verbindung intern über Port 25 aufbaue erscheint folgende Meldung tauchen mehrere Meldungen auf und
unter anderem auch die ACK (Antwort) vom Mailserver an den Client.

Kann das ein Problem mit dem DNS Server sein?

Vielen Dank und schönen Gruß

Libor
aqui
aqui 28.06.2011 um 17:41:38 Uhr
Goto Top
Wenn dein Client dip0.t-ipconnect.de. ist sieht das ja gut aus, dann wird auch brav TCP 25 geforwardet an dem Mailserver.
Der böse Buhmann ist also dann dein Mailserver und eben nicht der Linux Router.
Nimm einen Wireshark und sniffer lokal den Verbindungsaufbau mit vom Client !
Vermutlich sind dort noch mehr Ports als einfach nur 25 TCP involviert die du forwarden musst. Ansonsten kann es ja dann wie immer nur die lokale Firewall des Mailservers sein die (wie im Default üblich) ja alles wegblockt was nicht mit einer lokalen IP Adresse kommt !!
Hitman4021
Hitman4021 28.06.2011 um 19:15:43 Uhr
Goto Top
Rein für den Mailversand reicht Port 25.

Allerdings wenn der SuSe Router die Rückroute ändert kann das Ding auch niht antworten.

Und das ist nichts anderes wie ein Iptables Ding das heist wenn du nicht mit den verschiedenen Verbindungsstatus Meldungen arbeitest musst du die Rückrouten auch erlauben

Gruß
Hitman
Lochkartenstanzer
Lochkartenstanzer 28.06.2011 um 22:32:06 Uhr
Goto Top
Zitat von @Libor74:

Der Mailserver gibt aber keine Antwort zurück - kein ACK!

Wenn ich über Telnet eine Verbindung intern über Port 25 aufbaue erscheint ...
... auch die ACK (Antwort) vom Mailserver an den Client.

Check mal die Routingtabellen auf dem Mailserver. Wenn die stimmen, dann die Firewall-Einstellungen. ggf. könnte auch dein MTA nichtlokale Adressen blocken, wobei es dann aber ungewöhnlich ist, daß er gar keine Antwort zurückgibt. eventuell könnte da noch ein tcp-wrapper laufen, nur die lokalen Verbindungswünsche durchläßt, und, und und, ...

Kannt Du ein tcpdump/wireshark/snoop auf dem mailer laufen lassen?
Libor74
Libor74 29.06.2011 um 11:54:38 Uhr
Goto Top
... das ganze sieht so aus: Der Mailserver ist ein openSuse 11.1 auf dem Postfix mit Spamassassin und Antivir läuft. Dieser verarbeitet
bereits eingehende Mails über eine DSL Leitung mit fester IP Adresse. Das ganze funktioniert schon eine ganze Weile fehlerfrei.
Die Mails, die hier durchgelassen werden, werden über eine andere LAN Karte an einen Exchange Server weiter geleitet.
Wie gesagt, das ganze funktioniert wunderbar.

Nun habe ich eine zweite (deutlich schnellere) DSL Leitung mit fester IP bekommen. Hierfür habe ich als Router eben diesen
openSUSE 11.4 installiert. Als Router funktioniert das prima. An Diesem Router habe ich nun eben noch das Port Forwarding aktiviert
und das funktioniert nicht.
Wenn ich an der Konsole des Routers eine Telnet Verbindung auf den Mailserver mit Port 25 aufbaue, funktioniert es ja prima aber nicht mit
den Anfragen, die von extern kommen. Ich habe das ganze mit YAST konfiguriert und nach all den Tests habe ich so langsam den Eindruck
dass das womöglich das Problem ist.

Ich werde jedanfalls weiter testen...

Gruß

Libor
Lochkartenstanzer
Lochkartenstanzer 29.06.2011 um 14:59:38 Uhr
Goto Top
Und warum läßt Du den nicht einfach als relay arbeiten? Wäre imho angemessener.

Und zu deinem eigentliche Problem sagt meien Kristallkugel, daß

  • entweder die default-Route falsch ist und daher die Pakete falsch zurückgeroutet und daher an der ersten DSl-leitung verworfen werden (Du hast vermutlich NAT auf beiden DSL-Leitungen und für die TCP-Session hat der erste Router kein SYN gesehen und blockt das. Selbst wenn er es nicht blockt, kann der Initiator das ACK-Paket keinem TCP-Verbindung zuordnen, weil es von einer anderen IP-Adresse kommt. Würde kein NAT gemacht, wäre es unerheblich auf welchem Weg die Rückpakete laufen.

  • oder Deine Iptables nicht damit rechnen, daß die Pakete auf einem anderen Intferace als gewöhnlich für externe SMTP-Verbindungen kommen.

Du solltest also auf dem Mailserver auf jeden Fall sniffen, um zu schauen, wo die Pakete reinkommen und auf welchem Weg sie den Mailsrver wieder verlassen.
Hitman4021
Hitman4021 29.06.2011 um 17:01:33 Uhr
Goto Top
Zitat von @Lochkartenstanzer:
  • oder Deine Iptables nicht damit rechnen, daß die Pakete auf einem anderen Intferace als gewöhnlich für externe
SMTP-Verbindungen kommen.
Halte ich am ehesten für das Problem das bei den IPTables ein Fehler ist.

Außerdem ist ein Open Suse das auch noch andere Dienste anbietet definitiv kein Firewall/Router OS.

Gruß Hitman
Lochkartenstanzer
Lochkartenstanzer 29.06.2011 um 22:14:31 Uhr
Goto Top
Noch ein paar Nachfragen:

Zitat von @Libor74:

... das ganze sieht so aus: Der Mailserver ist ein openSuse 11.1 auf dem Postfix mit Spamassassin und Antivir läuft. Dieser
verarbeitet bereits eingehende Mails über eine DSL Leitung mit fester IP Adresse.

Hängt er direkt an der DSL-Leitung dran und hat quasi diese öffentliche IP-Adresse oder ist er im internen Netz mit einer internen IP-Adresse. Wie sieht seine routingtabelle aus (netstat -r)?

Die Mails, die hier durchgelassen werden, werden über eine andere LAN Karte an einen Exchange Server weiter geleitet.

Wieviele "LANKarten" sind denn eingebau? wie ist die Topologie?

Nun habe ich eine zweite (deutlich schnellere) DSL Leitung mit fester IP bekommen. Hierfür habe ich als Router eben diesen
openSUSE 11.4 installiert. Als Router funktioniert das prima. An Diesem Router habe ich nun eben noch das Port Forwarding
aktiviert und das funktioniert nicht.

Woraus schließt Du, daß Port-forwarding nicht funktioniert? Hast Du am Ziel geprüft, z.B. mit tcpdump oder wireshark, ob die Pakete ankommen? Du hast doch selbst gesagt, daß die SYN-Pakete durchgehen, aber kein ACK zurückkommt. Also muß das forwarding zumindest funktionieren.

Wenn ich an der Konsole des Routers eine Telnet Verbindung auf den Mailserver mit Port 25 aufbaue, funktioniert es ja prima aber
nicht mit
den Anfragen, die von extern kommen. Ich habe das ganze mit YAST konfiguriert und nach all den Tests habe ich so langsam den
Eindruck
dass das womöglich das Problem ist.

YAST war schon immer das Problem von SuSE. Deswegen bin ich ja auch in den 90ern zu debian gewechselt. Aber das führt uz weit vom Thema weg.

Also:

  • Topologie aufzeichen und posten.
  • Routing-tabelle(n) posten
  • mit tcpdump/wireshark mitschneiden, ob die syn-pakete im Mailserver ankommen und auf welchem weg die ack-pakete das System verlassen.


lks
Libor74
Libor74 30.06.2011 um 09:41:39 Uhr
Goto Top
Hallo zusammen!

ich habe mir wohl selber ein Bein gestellt!

Das ganze sieht so aus: Es gibt eine synchrone DSL Leitung mit fester IP. Daran hängt ein openSuse 11.1 Router mit 192.168.1.1.
Der macht nur Firewall, Routing und Port Forwarding für SMTP Port 25.
Das Port Forwarding geht auf den 192.168.1.5 und das ist auch ein openSuse mit Postfix, Spamassassin und Antivir. Dieser nimmt die Mails an, verarbeitet sie und schickt die, die
nicht SPAM sind, über eine andere Netzwerkkarten an den Exchange Server 192.168.2.5 im LAN weiter.
Das funktioniert alles einwandfrei.

Jetzt habe ich eine schnellere DSL Leitung bekommen mit fester IP zusätzlich bekommen und wollte eben auch über diese Mails empfangen. An diese Leitung habe ich einen neu
installieren openSuse 11.4 gehängt. Auch dieser macht Firewall, Routing und Port Forwarding für SMTP. Um das an dem echten Mailserver testen zu können, habe ich diesem
Router die 192.168.1.50 gegeben und auch hier ein Port Forwarding an die 192.168.1.5 (Mailserver) eingetragen. Wenn ich an der Konsole eine Telnet Verbindung auf 192.168.1.5 Port 25
aufbaue, funktioniert es. Wenn ich aber über eine dritte Leitung von extern komme, nimmt der Router die Anfrage an und schickt sie an den Mailserver weiter.
Dieser schickt die Antwort aber an sein Standard Gateway, also an die alte (langsamere) Leitung zurück .und somit kommt die Verbindung nicht zustande.

Ich verstehe aber immer noch nicht warum das so ist!

Um das ganze zu überprüfen, habe ich ein kleines LAN aufgebaut. Der neue Router mit schneller DSL Leitung 192.168.50.1 und ein weiterer Linux Rechner mit Postfix und 192.168.50.2.
Für diesen Mailserver ist der Router 192.168.50.1 das Gateway und in dieser Konstellation funktioniert auch die Verbindungsaufbau auf Port 25 von extern.

Vielen Dank für Eure Tips und Eure Mühe

Libor
Lochkartenstanzer
Lochkartenstanzer 30.06.2011 um 11:21:01 Uhr
Goto Top
Zitat von @Libor74:
Dieser schickt die Antwort aber an sein Standard Gateway, also an die alte (langsamere) Leitung zurück .und somit kommt die
Verbindung nicht zustande.

Ich verstehe aber immer noch nicht warum das so ist!

Eben das ist der Grund. Der Ablauf ist folgender:

  • Absender erzeugt SYN-Paket mit Ziel Router-neu
  • SYN-Paket komm über Router-neu herein.
  • RouterNeu trägt in NAT-Tabelle SYN-Paket ein.
  • Router leitet SYN-Paket an Mailer weiter.
  • Erzeugt SYN-ACK-Paket
  • Mailer schaut in Routing-Tabelle nach wo das Paket hin soll.
  • Mailer schickt an default Router -> Router-ALT
  • Router alt bekommt SYN-ACK-Paket und je nach iptables gibt es zwei Varianten:

Variante 1:

  • Zum-SYN-ACK-Paket gibt es keine passenden Eintrag in der NAT-Tabelle, weil da kein SYN druchgekommen ist. -> Schmeiß weg das Paket.
  • ENDE-Gelände.

Variante 2:

  • Router-ALT denkt Wir habe zwar in der Zustandtabelle keinen Eintrag, aber wir machen halt einfach einen neuen und schicken das Paket mit unserer IP-Adresse im Source weiter. (NAT).
  • Absender bekommt ein SYN-ACK-Paket von einer IP-Adresse an die er kein SYN geschickt hat.
  • Absender denkt Wer bist'n Du und schmeißt das Paket weg.

Jetzt klarer?

Um dem abzuhelfen mußt Du entweder dein Setup ändern z.B. indem Du die Router als Relay konfigurierst und kein Port-Forwarding machst, oder Du mußt per IP-Tables-regeln Dir merken, über welchen Router welches Paket kommt und Deine Routingtabelle dynamisch anpassen (sehr kompliziert und fehleranfällig). Du könntest natürlich auch NAT in zwei Richtungen machen, aber dann würde deine SPAM-Erkennung, sofern sie auch mit auf IP-Adressen basiert, auf die Schnauze fallen.

Zum Testen kannst Du ja für einen einzelnen Absender die Route auf den neuen Router setzen und dann den Telnet-versuch erneut machen. dann sollte es gehen. oder Du änderst deien default-Route auf demMailer, dann muß Du aber auch gleich den MX ändern, da ansonsten die Systeme versuchen noch über den alten Router reinzukommen und dann auf die Schnauze fallen.

lks

Nachtrag: Falls Du mehr Untersützung brauchst: Ich bin IT-Dienstleister. face-smile
Libor74
Libor74 30.06.2011 um 13:37:05 Uhr
Goto Top
Hallo,

Danke nochmals für Deine Erläuterung. Ich wollte das ganze nur vorab schon mal testen, denn der neue Router wird den alten ja mal ersetzen und dann funktioniert das ja auch wieder. Nur dieser Parallelbetrieb wollte nicht so richtig.

Hat zwar viel Zeit und Nerven gekostet aber man hat mal wieder ne Menge gelernt. face-wink

Tschüss und Gruß

Libor