私はこの質問について以前に100回以上答えたと思います。しかし、私は間違った方向を見ているとほとんど確信しています。私が望む設定は次のとおりです。
KVMとlibvirtを使用する仮想ホストがあります。サーバーネットワークに拡張したいシンプルな192.168.1.0/24ホームネットワークがあります。新しいネットワークとして192.168.12.0/24を使用します。しかし、通常のネットワークではまだ数台のサーバーが実行されるため、libvirtに仮想ネットワークを追加しました。基本的に私はbr0(eth0のブリッジ)とvirbr0(仮想ネットワークインターフェイス)の間をルーティングしたいと思います。 iptablesを使用してトラフィックをルーティングしようとしており、ネットワークにアクセスするために次のコマンドを使用してトラフィックを管理しました。
iptables -I FORWARD -d 192.168.12.0/24 -s 0.0.0.0/0 -j ACCEPT
iptables -I FORWARD -s 192.168.12.0/24 -d 0.0.0.0/0 -j ACCEPT
iptables -I FORWARD -s 192.168.1.0/24 -d 0.0.0.0/0 -j ACCEPT
iptables -I FORWARD -d 192.168.1.0/24 -s 0.0.0.0/0 -j ACCEPT
誰かが私に正しい方向を教えてもらえますか?
編集1:答えてくれてありがとう。カーネルルールを完全に忘れて適用しました。これで、192.168.1.0/24ネットワークでシステムをpingでき、その逆も同様です。しかし、残念ながら、このコンピュータにsshを送信することはできず、192.168.1.0/24(もちろん元のネットワークも含む)以外の他のコンピュータにpingを送信することはできません。 「コア」ルーターは、すべてをサーバーネットワークであるkvmハイパーバイザーにルーティングするように正しく構成されています。
また、ブリッジをルーティングされたインターフェイスにすることを検討し、「外部」インターフェイスである新しいインターフェイス(eth0:1)を追加しましたが、それでも何も変わりません。
答え1
iptables はトラフィック ポリシーを定義するために使用されます。転送ルールを追加しても転送は有効になりません。適切なsysctlキーを設定する必要があります。つまり、
sysctl net.ipv4.conf.br0.forwarding=1
sysctl net.ipv4.conf.virbr0.forwarding=1
同様に、発行できる
echo 1 > /proc/sys/net/ipv4/conf/br0/forwarding
echo 1 > /proc/sys/net/ipv4/conf/virbr0/forwarding
設定によっては、適切なルートテーブルエントリを追加する必要があります。