libvirt の助けを借りずに、1 つのホスト物理ポートを 1 つのゲスト仮想ポート専用に使用できます。
ホストは次のとおりです。
- 2つの物理インターフェイス:eth0とeth1
- すべてのVMの仮想インターフェイスを含む1つの仮想ブリッジ(vmbr0)
- eth0 と vmbr0 はブリッジモードになっています。。これは、すべてのゲストとホストが同じサブネット(192.168.247.0/24)にあるためです。
これが私の設定です。/etc/network/interfaces
auto lo
iface lo inet loopback
iface eth0 inet manual
iface eth1 inet manual
auto vmbr0
iface vmbr0 inet static
address 192.168.247.2
netmask 255.255.255.0
gateway 192.168.247.1
bridge_ports eth0
bridge_stp off
bridge_fd 0
eth1はISPモデムに接続する必要があります。したがって、eth1はインターネットを終了します。ホストの仮想マシンの1つである仮想ファイアウォールにeth1を専用に使用したいと思います。仮想ファイアウォールは、ホストではなくすべてのルーティング操作を実行します。
私が知っている限り、これを行うにはMacVTap(macvlan)を使用する必要がありますが、私が見るすべてのガイドはKVM + libvirtについてです。そして私はlibvirtを持っていません!Proxmoxは「ユーザーフレンドリーな作業」をすべて行っています。
以下に示すように、インターフェイスTap101i0とTap101i1の1つのVMのみがアクティブになりました。ここで、Tap101i0 は vmbr0 にあり、ホストの eth0 と同じサブネットマスクを共有すると仮定します。そして、tap101i1はホストのeth1に100%バインドする必要があるため、インターネットはシャットダウンされます。
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master vmbr0 state UP mode DEFAULT group default qlen 1000
link/ether 00:15:17:50:95:66 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether 00:15:17:50:95:67 brd ff:ff:ff:ff:ff:ff
6: tap101i0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 1000
link/ether 06:97:77:30:cc:a7 brd ff:ff:ff:ff:ff:ff
7: tap101i1: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 1000
link/ether ce:b4:f3:40:38:0d brd ff:ff:ff:ff:ff:ff
8: vmbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
link/ether 00:15:17:50:95:66 brd ff:ff:ff:ff:ff:ff
答え1
この目的のためにmacvlanを使用することができます。
- eth1にmacvlanインターフェースを作成します。
ip link add link eth1 name macvlan1 type macvlan mode bridge
- macvlan インターフェイスに IP アドレスを割り当てます。 VM は次の IP アドレスを使用します。
ip addr add 192.168.247.3/24 dev macvlan1
- macvlan インターフェイスを呼び出します。
ip link set macvlan1 up
- 仮想マシンのPIDを取得します(
vm-name
実際の名前に置き換えます)。ps aux | grep [v]m-name
- 仮想マシンのネットワークネームスペースにmacvlanインターフェイスを追加します(
PID
実際のPIDに置き換えます)。ip link set macvlan1 netns PID
- 仮想マシンでmacvlanインターフェイスを開きます(PIDを交換し直します)。
ip netns exec PID ip link set macvlan1 up
これで、仮想マシンはまるでeth1に直接接続されているかのように使用できます。仮想マシンのIPアドレスは192.168.247.3で、eth1を介してインターネットと通信できます。