私が設定しているプライベート クラウドには、OpenStack 上に RHEL VM、ネットワーク、ルーターがいくつかあります。ルーターはパブリック インターネットに接続されており、ゲートウェイ ノードはルーターに接続され、eth0 経由でインターネットにアクセスできます。ノードは eth1 で内部ネットワークに接続されています。eth0 インターフェイスで内部ネットワークに接続された内部 RHEL ノードがいくつかあります。ノードはすべて相互に ping を実行でき、各ノードの ifcfg ファイルが正しく設定されていると思います。
IPTables を使用して、次のように内部ノードにインターネット アクセスを許可しようとしました。
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
また、カーネル レベルで IPv4 転送 (デフォルトでは無効) を有効にしました。設定を保存し、内部ノードに SSH 接続した後、外部アドレスに ping できません。
# ping 8.8.8.8
connect: Network is unreachable
OpenStackのルーターには、宛先CIDRが内部ネットワーク
、次ホップがゲートウェイノードの静的ルートがあります。
内部ノードでインターネットにアクセスできないのはなぜですか? 何が足りないのでしょうか?
答え1
カーネルで転送を有効にしていない可能性があります -
試す
echo 1 > /proc/sys/net/ipv4/forward
これで問題が解決した場合は、/etc/sysctl.confを編集して次の行を追加して永続化します。
net.ipv4.ip_forward = 1
答え2
Network is unreachable
8.8.8.8 に到達するためのルートが定義されていないことを意味します。これはおそらく VM によって直接返された問題であり、ホストではなく VM にあります。
OpenStack には、さまざまなネットワーク構成が可能です。「ネットワーク」とだけ記述しましたが、VM の IP に関する情報は提供していません。不明な設定 (中間 NAT が行われた中間ネットワーク) がないことを願って、各 VM で、ルーターのeth1
インターフェイスに設定された IP を介してデフォルト ルートを追加する必要があります。この IP がたとえば 10.0.2.1 の場合、次のようにします。
ip route add default via 10.0.2.1
永続的な設定については、特定の設定ファイルに追加する必要があります(静的ルートとデフォルトゲートウェイ(Redhat から)。