サーバーの再起動後に iptables と NAT/ポート転送が機能しない

サーバーの再起動後に iptables と NAT/ポート転送が機能しない

私は NAT と iptables の初心者です。物理サーバーには CentOS 6 が稼働しており、KVM がインストールされています。さらに 2 つの Linux ボックスが VM (VM2 と VM3) として起動されており、それぞれの IP は 192.168.122.2 と 192.168.122.3 です。実際の IP は 1 つしかないため、NAT は外部リクエストを VM のアプリケーションにポート転送するために使用されます (例: ポート 30022 を VM3 の ssh (ポート 22) に転送)。セットアップ後はすべて正常に動作し、すでに 1 か月間稼働していますが、RAM をアップグレードしてサーバーを再起動すると、NAT/ポート転送が再び機能しなくなりました。

詳しくは:

  • Iptables はホスト OS では実行されますが、ゲスト OS では実行されません。
  • ホスト OS の iptables は NAT を次のように構成します。
ターゲット 利益 選択 ソース 宛先
DNAT tcp -- どこでもどこでも tcp dpt:30022 to:192.168.122.3:22
DNAT tcp -- どこでもどこでも tcp dpt:20022 to:192.168.122.2:22(22)
  • コマンド iptables -t nat -L -v -n の結果:
パケット バイト ターゲット プロテクション オプトイン アウト ソース 宛先
6 304 LOG tcp -- br0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:30022 LOGフラグ0レベル4プレフィックスROUTE APP3
6 304 DNAT tcp -- br0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:30022 から:192.168.122.3:22
3 152 DNAT tcp -- br0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:20022 から:192.168.122.2:22
  • つまり、ローカルPC(別のネットワーク)から30022にtelnetしようとしている間、パッケージはNATルールによって処理されます。

数日間苦労しています。何か助けはありますか?

答え1

を使用して、ホスト上で IP 転送が有効になっていることを確認する必要がありますcat /proc/sys/net/ipv4/ip_forward。このコマンドは と出力します1。有効になっていない場合は、 を使用して有効にする必要があります echo 1 > /proc/sys/net/ipv4/ip_forward

関連情報