iptables VM QEMU - SMTP funktioniert nicht

GustlPC

Lt. Junior Grade
Registriert
Nov. 2008
Beiträge
338
Hallo zusammen,

ich habe einen Server (Ubuntu) auf dem 2 VMs laufen. Eine Ubuntu und eine Windows.
Von der Ubuntu möchte ich einen E-Mail Server erreichen. Also über SMTP E-Mails versenden.

Leider schaffe ich die Port Weiterleitung nicht.

SSH (Port 22), MySQL (3306), Port 80 etc. funktioniert, aber 25 (SMTP) bekomme ich so nicht hin.

Folgende Einträge habe ich in der /etc/libvirt/hooks/qemu:
Code:
Guest_Linux_ip="192.168.122.69"

iptables -t nat -I PREROUTING -p tcp --dport 2222 -j DNAT --to $Guest_Linux_ip:22
iptables -I FORWARD -d $Guest_Linux_ip/24 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
iptables -t nat -I PREROUTING -p tcp --dport 25 -j DNAT --to $Guest_Linux_ip:25
iptables -I FORWARD -d $Guest_Linux_ip/24 -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT
iptables -t nat -I PREROUTING -p tcp --dport 3306 -j DNAT --to $Guest_Linux_ip:3306
iptables -I FORWARD -d $Guest_Linux_ip/24 -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT

Habe leider nicht so viel Erfahrung mit den iptables.

Könnte mir wer bitte helfen?

Vielen Dank im Voraus.

Gruß
 
Ist bei dir das SMTP denn unverschlüsselt? Wenn nicht, dann würde ich es mal mit Port 587 und 465 (SMTPS) probieren.
 
Vom Server, also nicht VM die auf dem Server läuft, kann ich ohne Probleme auf den EMail Server über SMTP Port 25 zugreifen. (E-Mail -> Server -> E-Mail Server )

Es funktioniert nur die Portweiterleitung in der VM nicht.

Ich denke ich muss hier einen anderen iptables Befehl absetzen, da ich über den anderen Ports von außen zugreife ( http: Web -> Server -> VM ). Aber ich möchte jetzt direkt aus der VM raus eine E-Mail schreiben. ( E-Mail -> VM -> Server -> E-MailServer )
 
Ich weiß leider nicht so recht was du erreichen willst. Um eMails zu versenden, benötigt man keine Portweiterleitungen. Schließlich funktionieren Outlook und Co ja auch ohne Portweiterleitung im Router. Eine Portweiterleitung ist dann notwendig, wenn du selbst einen eMail-Server betreibst und dann von außen durch das NAT zu deinem Server verbinden willst.
 
Hallo, ich habe einen Server A wo 2 VMs laufen, einmal Windows AA und einmal eine Ubuntu VM AB. Ich möchte von außen über SSH auf dem Server A kommen (IP-ServerA Port 22) und auch auf AB per SSH. Deshalb habe ich auf Server A eine Portweiterleitung eingestellt. Port 2222 wird weitergeleitet auf VM AB Port 22.

Auch mit http / https brauch ich Port- Weiterleitungen, weil ich apache auf der Ubuntu VM AB laufen habe, aber auch IIS auf der Windows VM AA.

Das funktioniert auch alles, aber leider bekomme ich es nicht hin von der Ubuntu VM AB (z.b. aus einem Webscript) eine E-Mail über einen externen E-Mail Server über SMTP zu senden.

Vom Server A direkt aus kann ich den E-Mail Server erreichen und auch E-Mails versenden.

Demnach fehlt wohl eine Portweiterleitung von der Ubuntu VM AB Port 25 über Server A zu der eth zum externen E-Mail Server. Das funktioniert aber mit folgenden Eintrag nicht:

iptables -t nat -I PREROUTING -p tcp --dport 25 -j DNAT --to $Guest_Linux_ip:25
iptables -I FORWARD -d $Guest_Linux_ip/24 -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT
 
Eine Portweiterleitung ist dafür wie gesagt nicht erforderlich.

Punkt 1: Wenn du die Netzwerk-Adapter der VMs als Bridge konfigurierst, sind sie im selben Netzwerk wie der Host. Sie sind dann quasi wie eigenständige Geräte im LAN, nur dass sie nicht physikalisch vorhanden, sondern virtuell auf dem VM-Host laufen. Portweiterleitungen im Host wären dann hinfällig.
In deinem Fall sind sie offenbar als NAT konfiguriert und dann gibt es zwischen Host und VM ein eigenes, virtuelles Subnetz, das eben auch Portweiterleitungen im Host erforderlich macht. Darüberhinaus muss der Host alles was von den VMs rausgeht, per NAT maskieren.

Punkt 2: Durch das ausgehende NAT im Host, sieht der Kommunikationspartner der VM gar nicht, dass da eine VM mit anderem Subnetz werkelt, er sieht nur die IP vom Host. Die Antwort des Partners kommt ganz normal über den Reply-Port. Das ist im Internet-Router ja nichts anderes. Da brauchst du ja auch keine Portweiterleitungen für jedes Internet-fähige Gerät im Netzwerk, oder?

Punkt 3: Was heißt "funktioniert nicht"? Funktioniert die Portweiterleitung nicht oder kommt da unter Umständen gar nichts an? Wie gesagt, für das Versenden von eMails braucht es keine Portweiterleitung. Sonst könnte man ja vom heimischen PC aus mit Outlook und Co ja auch keine Mails verschicken. Port 25 ist der Port des eMail-Servers! Da du aber keinen eMail-Server betreibst, ist die Portweiterleitung so oder so hinfällig, da bei dir gar nichts auf Port 25 hört.



Wenn sich ein Client zB auf Port 80 mit einem Server verbindet, wird die Verbindung von einem Quell-Port aus hergestellt, der nicht 80 ist, sondern in der dynamischen Port-Range jenseits 49xxx. Der Server wiederum antwortet dann an diesen Port. Da der Quell-Port dynamisch bzw. zufällig ist, könnte man dafür gar keine Portweiterleitung einrichten. Der Router bzw. das NAT merkt sich den Port aber und reicht die Antwort auf diesem Port dann auch an den richtigen Client weiter.
 
Zuletzt bearbeitet:
Zurück
Oben