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