Ich bin neu bei NAT und iptables. Auf meinem physischen Server läuft CentOS 6 mit installiertem KVM, 2 weitere Linux-Boxen sind als VM gestartet – VM2 und VM3, und ihre IPs sind dementsprechend 192.168.122.2 und 192.168.122.3. Da ich nur eine echte IP habe, wird NAT für die Portweiterleitung externer Anfragen an die VM-Anwendung verwendet, z. B. Port 30022 an VM3s SSH (Port 22). Nach der Einrichtung funktioniert alles einwandfrei, es läuft bereits seit einem Monat, aber nachdem ich ein RAM-Upgrade und einen Serverneustart durchgeführt habe, funktioniert NAT/Portweiterleitung nicht mehr.
Mehr Informationen:
- Iptables läuft auf dem Host-Betriebssystem, aber NICHT auf Gast-Betriebssystemen.
- Das Host-Betriebssystem iptables hat NAT wie folgt konfiguriert:
Ziel Schutz Option Quelle Ziel DNAT tcp -- überall überall tcp dpt:30022 bis:192.168.122.3:22 DNAT tcp -- überall überall tcp dpt:20022 bis:192.168.122.2:22(22)
- Ergebnis des Befehls iptables -t nat -L -v -n:
Pakete Bytes Ziel Schutz Opt-in Out Quelle Ziel 6 304 LOG tcp -- br0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:30022 LOG-Flags 0 Ebene 4 Präfix ROUTE APP3 6 304 DNAT tcp -- br0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:30022 bis:192.168.122.3:22 3 152 DNAT tcp -- br0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:20022 bis:192.168.122.2:22
- Das bedeutet, dass das Paket von der NAT-Regel behandelt wird, während ich versuche, von meinem lokalen PC (separates Netzwerk) aus eine Telnet-Verbindung mit 30022 herzustellen.
Ich kämpfe seit ein paar Tagen... irgendjemand Hilfe?
Antwort1
Sie sollten mit überprüfen, ob die IP-Weiterleitung auf Ihrem Host aktiviert ist cat /proc/sys/net/ipv4/ip_forward
. Dieser Befehl sollte ausgeben 1
. Wenn sie nicht aktiviert ist, sollten Sie sie mit aktivieren echo 1 > /proc/sys/net/ipv4/ip_forward
.