IPTables を使用した内部ネットワーク上のインターネット アクセス

IPTables を使用した内部ネットワーク上のインターネット アクセス

私が設定しているプラ​​イベート クラウドには、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 unreachable8.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 から)。

関連情報