web-dev-qa-db-ja.com

2つの仮想マシン間にブリッジを構築するにはどうすればよいですか?

virt-installを使用して、CentOS7ホストコンピューター上に2つのCentOS7仮想マシンゲストを作成しました。 1つの仮想マシンはwebvmと呼ばれ、プライベートネットワーク上でWebサイトをホストします。もう1つの仮想マシンはdatavmと呼ばれ、webvmでホストされるWebアプリの仮想データベースサーバーになることを唯一の目的としています。 datavmwebvmからのデータ接続のみを許可し、それらのデータ接続が物理サーバーボックス内で発生するようにネットワークを設定するにはどうすればよいですか?作成したいwebvmdatavmの間のデータベーストランザクションがローカルネットワークを通過しないようにしてください。

ブリッジネットワークはすでにホストOSを各ゲストOSにリンクしていることに注意してください。

webvmのローカルエリアネットワークIPは10.0.0.6であり、datavmのネットワークIPは10.0.0.5です。 webvmでホストされている一般的なWebアプリの接続文字列は次のとおりです。

jdbc:mysql://localhost:3306/somedb?autoReconnect=true

localhostwebvmを参照していることがわかります。接続文字列がjdbc:mysql://10.1.1.1:3306/somedb?autoReconnect=trueになるように、10.1.1.xアドレスを使用して新しい2番目のブリッジネットワークを設定する必要があるようです。

追加する新しいブリッジネットワークコードは、既存のブリッジネットワークと競合してはなりません。

では、datavmwebvmの間に1対1の排他的データ接続を設定するにはどうすればよいですか?


進行中の更新された作業:


@derobertは、次の手順を提案しました。

1.) Add a second bridge to the Host. 
2.) Add a second network interface to webvm, connected to the new Host bridge. 
3.) Add a second network interface to datavm, connected to the new Host bridge.
4.) Configure the new network interfaces inside each guest.  

この目的に向けて、Hostで以下を実行してベースラインを取得しました。

[root@localhost ~]# nmcli con show
NAME               UUID                                  TYPE            DEVICE 
bridge-slave-eno1  c36fd051-cacc-4e91-944f-a98f4fee26ff  802-3-ethernet  eno1   
bridge-br0         d472bc86-0f75-4dd5-bfee-5b8208b3fed2  bridge          br0    
System eno1        abf4c85b-57cc-4484-4fa9-b4a71689c359  802-3-ethernet  --     
vnet1              ea985e89-94fb-403c-af33-7daefb378ca5  generic         vnet1  
vnet0              06deb20d-b0b7-4233-8abc-cbb285165082  generic         vnet0  
[root@localhost ~]# 

次に、次の内部を実行しましたwebvm

[root@localhost ~]# nmcli con show
NAME  UUID                                  TYPE            DEVICE 
eth0  71bf7ff1-7574-4364-8c83-5878ed30d028  802-3-ethernet  eth0   
[root@localhost ~]# 

次に、次の内部を実行しましたdatavm

[root@localhost ~]# nmcli con show
NAME  UUID                                  TYPE            DEVICE 
eth0  d976f7ca-ab7f-4fd0-ab2b-6213815bd1a1  802-3-ethernet  eth0   
[root@localhost ~]# 

次に、ホストに次のコマンドを実装しました。

[root@localhost ~]# nmcli con add type bridge ifname br1
Connection 'bridge-br1' (8b9fd6d9-bcb4-4e1c-85ab-55905d08667e) successfully added.
[root@localhost ~]# nmcli con show
NAME               UUID                                  TYPE            DEVICE 
bridge-slave-eno1  c36fd051-cacc-4e91-944f-a98f4fee26ff  802-3-ethernet  eno1   
bridge-br0         d472bc86-0f75-4dd5-bfee-5b8208b3fed2  bridge          br0    
System eno1        abf4c85b-57cc-4484-4fa9-b4a71689c359  802-3-ethernet  --     
bridge-br1         8b9fd6d9-bcb4-4e1c-85ab-55905d08667e  bridge          br1    
vnet1              ea985e89-94fb-403c-af33-7daefb378ca5  generic         vnet1  
vnet0              06deb20d-b0b7-4233-8abc-cbb285165082  generic         vnet0  
[root@localhost ~]# virsh
Welcome to virsh, the virtualization interactive terminal.
virsh # list
 Id    Name                           State
----------------------------------------------------
 2     public4-centos7                running
 4     data-centos7                   running

virsh # attach-interface data-centos7 bridge br1
Interface attached successfully

virsh # attach-interface public4-centos7 bridge br1
Interface attached successfully

virsh # 

次に、各仮想マシンに個別にログインすると、ブリッジネットワークへの新しい接続が次のようにWired connection 1という名前で表示されました。

Web VMの場合:

[root@localhost ~]# nmcli con show
NAME                UUID                                  TYPE            DEVICE 
Wired connection 1  44f1f791-0d86-4587-8a2d-48dfa217ee99  802-3-ethernet  ens7   
eth0                71bf7ff1-7574-4364-8c83-5878ed30d028  802-3-ethernet  eth0   
[root@localhost ~]# nmcli con modify 'Wired connection 1' ipv4.addresses "10.1.1.2"

そして、データvmでは:

[root@localhost ~]# nmcli con show
NAME                UUID                                  TYPE            DEVICE 
Wired connection 1  448101d7-1f8f-4b78-ad90-7efd5be23b08  802-3-ethernet  ens7   
eth0                d976f7ca-ab7f-4fd0-ab2b-6213815bd1a1  802-3-ethernet  eth0   
[root@localhost ~]# nmcli con modify 'Wired connection 1' ipv4.addresses "10.1.1.1"  

しかし、その後、ping 10.1.1.1からのweb vmが失敗し(宛先ホストに到達できません)、ping 10.1.1.2からのdata vmも失敗しました(宛先ホストに到達できません)。

web vmでは、vi /etc/sysconfig/network-scripts/ifcfg-Wired_connection_1の内容は次のとおりです。

HWADDR=52:54:00:8F:3B:14
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME="Wired connection 1"
UUID=44f1f791-0d86-4587-8a2d-48dfa217ee99
ONBOOT=yes
IPADDR=10.1.1.2
PREFIX=16
PEERDNS=yes
PEERROUTES=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes

data_vmでは、vi /etc/sysconfig/network-scripts/ifcfg-Wired_connection_1の内容は次のとおりです。

HWADDR=52:54:00:1F:FE:27
TYPE=Ethernet
BOOTPROTO=dhcp
IPADDR=10.1.1.1
PREFIX=32
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME="Wired connection 1"
UUID=448101d7-1f8f-4b78-ad90-7efd5be23b08
ONBOOT=yes

@ derobertが提案したことを完了するには、他に何を入力しますか?すべてのデータトラフィックは物理ボックス内にとどまる必要があるため、新しいブリッジにはdatavmとwebvmが使用する新しいIPアドレスを含める必要があります新しい橋でのみ。

@garethTheRedのコメントによると、ip routeweb vmと入力すると、次のようになります。

[root@localhost network-scripts]# ip route
default via 10.0.0.1 dev eth0  proto static  metric 100 
10.0.0.0/24 dev eth0  proto kernel  scope link  src 10.0.0.6  metric 100 
10.1.1.0/30 dev ens7  proto kernel  scope link  src 10.1.1.2 
10.1.1.2/31 dev ens7  proto kernel  scope link  src 10.1.1.2  metric 100 
169.254.0.0/16 dev ens7  scope link  metric 1003 
[root@localhost network-scripts]# 

次に、ip routedata vmと入力すると、次のようになります。

[root@localhost network-scripts]# ip route
default via 10.0.0.1 dev eth0  proto static  metric 100 
10.0.0.0/24 dev eth0  proto kernel  scope link  src 10.0.0.5  metric 100 
10.1.1.0/31 dev ens7  proto kernel  scope link  src 10.1.1.1  metric 100 
10.1.1.0/30 dev ens7  proto kernel  scope link  src 10.1.1.1 
169.254.0.0/16 dev ens7  scope link  metric 1003 
[root@localhost network-scripts]# 

ifcfg-*ファイルを回答の6行まで削除すると、systemctl restart networkを試したときに失敗しました。 hardwareまたはuuid引数が原因である可能性があると思いますが、それは単なる推測です。上記の追加の引数に加えて@garethTheRedの編集を含めるためにifcfg-*ファイルを復元すると、systemctl restart networkはエラーなしで実行されましたが、pingは失敗しました。

3
CodeMed

これには2つの原因が考えられます。

考えられる原因の1つは、プライベートネットワークの構築方法(ホスト上のブリッジを使用)です。 virt-managerを使用してこれを構成する方がはるかに安全で簡単です。ホストがCLIのみの場合は、リモートデスクトップ/ラップトップにインストールし、SSH経由でホストに接続します。

インストールしたら、ハイパーバイザーに接続し、リスト内のハイパーバイザーの名前を右クリックして、「詳細」を選択します。 [仮想ネットワーク]タブで、[+]ボタン(下、左)をクリックして新しいネットワークを追加できます。ウィザードがプロセスをガイドしますが、IPv4アドレスとIPv6アドレスのオプションのチェックを外し(ポイントツーポイントリンクであるため、これらは必要ありません)、[プライベートネットワーク]のラジオボタンを選択してください。 。ウィザードを続行して終了します。

あなたが頑固なコマンドラインのみの人なら、上記はvirsh net-defineコマンドラインインターフェースを使用して実行できます。以下の例のようなXMLファイルを作成します(virbr2は未使用のブリッジ名です。brctl showを使用してリストしてください):

<network>
    <name>private</name>
    <bridge name="virbr2" />
</network>

次に、次のコマンドでインポートします。

# virsh net-define <XML filename>

上記が完了したら、各VMを編集して、この新しいプライベートネットワークを使用できます(これを有効にするには、VMを再起動する必要があります)。 VM構成を編集すると、それぞれにログインして、関連するIPの詳細(OPから)を使用してOSを構成する準備が整います。しかし、最初に読んでください...

次に、2つのVM間に新しいインターフェイスを指すルートがありません。もう1つこれは、IPアドレスに/32プレフィックスを設定したためです。

接続を編集するときは、フォーマットa.b.c.d/pを使用してプレフィックスを設定します。それ以外の場合、プレフィックスがないと、デフォルトで/32になります。

# nmcli con edit "Wired connection 1"
nmcli> set ipv4.addresses 10.1.1.1/30
nmcli> save
nmcli> quit
# systemctl restart network

ネットワークを手動で構成することもできます。

NM_CONTROLLED=no
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
IPADDR=10.1.1.1
PREFIX=30

他のVM(10.1.1.2/30)でも同様の手順を実行すると、機能するはずです。

注:/31を使用できますが、IPアドレスを10.1.1.0および10.1.1.1に変更した場合に限ります。通常、範囲の最初のアドレスはネットワークアドレス用に予約され、最後のアドレスはブロードキャスト用に予約されているため、これにより問題が発生する可能性があります。 /31のアドレスは2つしかないため、ホスト用にアドレスが残っていません。 /30を使用することをお勧めします。これにより、4つのアドレス(2つは予約済み、2つはホスト用)が提供されます。

1
garethTheRed

それらを別のブリッジに接続する場合、別のサブネット上の別のIPアドレスを指定する必要があることをご存知ですか?おそらく、1台のマシンからのトラフィックのみを受け入れ、デフォルトのブリッジを使用するようにファイアウォールルールを設定する方がよいでしょう。

それ以外の場合は、virt-managerを使用してvmネットワーク設定を構成し、デフォルトの自動管理ブリッジの代わりに指定したインターフェイスを使用するように設定し、/ etc/network/interfacesを手動で編集して専用のブリッジインターフェイスを作成します。この目的。

Xen用に手動で構成したブリッジは次のとおりです。

auto xenbr0
iface xenbr0 inet static
        bridge_ports em2
        address 10.1.1.8
        netmask 255.255.255.0
        network 10.1.1.0
        broadcast 10.1.1.255
        gateway 10.1.1.1
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 8.8.8.8
0
psusi