In einer privaten Cloud, die ich gerade einrichte, habe ich einige RHEL-VMs, Netzwerke und einen Router auf OpenStack. Mein Router ist mit dem öffentlichen Internet verbunden und mein Gateway-Knoten ist mit dem Router verbunden und hat über eth0 Internetzugang. Der Knoten ist mit dem internen Netzwerk auf eth1 verbunden. Ich habe einige interne RHEL-Knoten, die über ihre eth0-Schnittstellen mit dem internen Netzwerk verbunden sind. Die Knoten können sich alle gegenseitig anpingen und ich glaube, dass die ifcfg-Dateien für jeden Knoten richtig eingerichtet sind.
Mithilfe von IPTables habe ich versucht, den internen Knoten Internetzugriff zu gewähren, indem ich:
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -i eth0 -o eth1 -m conntrack -ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Ich habe auch die IPv4-Weiterleitung (standardmäßig deaktiviert) auf Kernelebene aktiviert. Nachdem ich die Konfiguration gespeichert und per SSH auf einen internen Knoten zugegriffen habe, kann ich externe Adressen nicht mehr anpingen:
# ping 8.8.8.8
connect: Network is unreachable
Mein Router in OpenStack hat eine statische Route mit
Ziel-CIDR: mein internes Netzwerk.
Nächster Hop: mein Gateway-Knoten.
Warum kann ich auf meinen internen Knoten nicht auf das Internet zugreifen? Was übersehe ich hier?
Antwort1
Es könnte sein, dass Sie die Weiterleitung im Kernel nicht aktiviert haben -
Versuchen
echo 1 > /proc/sys/net/ipv4/forward
Wenn das Problem dadurch behoben wird, können Sie es dauerhaft beheben, indem Sie /etc/sysctl.conf bearbeiten und die Zeile hinzufügen
net.ipv4.ip_forward = 1
Antwort2
Network is unreachable
bedeutet, dass keine Route definiert ist, um 8.8.8.8 zu erreichen. Dies ist höchstwahrscheinlich ein Problem, das direkt von der VM zurückgegeben wird und das in der VM und nicht im Host liegt.
OpenStack bietet viele verschiedene mögliche Netzwerkkonfigurationen. Sie haben nur „Netzwerke“ geschrieben und keine Informationen zu den IPs der VMs angegeben. In der Hoffnung, dass es keine unbekannte Einstellung gibt (Zwischennetzwerke mit Zwischen-NATs sind fertig), müssen Sie auf jeder VM eine Standardroute über die auf der eth1
Schnittstelle Ihres Routers festgelegte IP hinzufügen. Wenn diese IP beispielsweise 10.0.2.1 wäre, würde dies funktionieren:
ip route add default via 10.0.2.1
Für permanente Einstellungen muss es in der entsprechenden Konfigurationsdatei hinzugefügt werden (sieheStatische Routen und das Standard-Gatewayvon Redhat).