異なるサブネットを持つブリッジネットワーク

異なるサブネットを持つブリッジネットワーク

このため、私はlxc / virshを使用してWebサーバーを仮想化し、IPをlxcコンテナに渡したいと思います。しかし、私のIPは別のサブネットにあるので試しましたが、成功しませんでした。

ウィッシュネットワーク:

<interface type='bridge'>
    <source bridge='br0'/>
    <model type='virtio'/>
</interface>

IP 1:xxx.xxx.184.96(専用サーバーIP)

xxx.xxx.37.220(LXC用)

/etc/ネットワーク/インターフェース:

auto lo
iface lo inet loopback

# The primary network interface
auto eth0


iface eth0 inet static
        address xxx.xxx.184.96
        netmask 255.255.255.128
        network xxx.xxx.184.0
        broadcast xxx.xxx.184.127
        gateway xxx.xxx.184.1
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 8.8.8.8 8.8.4.4

iface br0 inet static
        bridge_ports eth0
        bridge_stp on
        address xxx.xxx.37.220
        netmask 255.255.255.255

ベストアンサー1

ブリッジインターフェイスを使用してサブネット間でトラフィックを転送することはできません。ブリッジは、2つのサブネット(レイヤ3)ではなく、2つのレイヤ2ネットワークを接続するために使用されます。ネットワーク間でトラフィックをルーティングする必要があります。
技術的にはこれをブリッジできますが、これを行うには、2つのサブネットの各ホストにルーティングルールを追加して他のサブネットと直接通信できることを知らなければなりません。これは非常に面倒な作業であり、あなたが望むものではないようです。

したがって、トラフィックをルーティングします。デフォルトでは、ハイパーバイザーボックスを小さなルーターに置き換える必要があります。特定のポートに着信するすべてのトラフィックを仮想化インスタンスに転送する必要があることを知らせる必要があります。その後、仮想化されたインスタンスが再び表示されると、ハイパーバイザーボックスはトラフィックがそれ自体で発生するように見えるようにトラフィックを変更します。これはDNATによって行われる。

iptables -t nat -I PREROUTING -i eth0 -p tcp -m multiport --dports 80,443 -j DNAT --to-destination 172.0.0.2

このルールは、TCPポート80および443から着信トラフィックをリッスンして(仮想WebサーバーのIPに変更)転送するようeth0に指示します。172.0.0.2172.0.0.2


これで、システムの再起動時に復元するようにこのルールを保存する必要があります。この部分は異なります。 Ubuntuにはiptables-persistentこれを可能にするパッケージがあります/etc/init.d/iptables-persistent save。ただし、ファイアウォールを管理するために他のものを使用する場合は、それを使用する必要があります。

おすすめ記事