HOST、BRIDGE、GUESTに固定IPを割り当てる方法

HOST、BRIDGE、GUESTに固定IPを割り当てる方法

私はCentOSホスト内に小さな仮想ネットワークを構築することによってネットワーキングについて学びます。計画を開始するには、上部の指示が必要です。


シーン:

CentOS 7 HOSTにはCentOS 7 GUESTが必要です。HOSTとGUESTはそれぞれ異なる固定パブリックIPアドレスを持つ必要があります。私が知っている限り、これはホストシステムにブリッジを作成することによって行われます。

HOST物理ボックスは、イーサネット経由でゲートウェイのIPアドレスを使用してルーター/モデムに接続します12.34.567.8aa12.34.567.111、、、12.34.567.222および12.34.567.33312.34.567.444含む5つのパブリック静的IPアドレスを使用できます。12.34.567.555

HOST、BRIDGE、およびGUESTの固定パブリックIPアドレスを定義する方法は? 3つの別々のIPアドレスが必要ですか?それとも、HOSTとBRIDGEは同じIPを持つべきですか?

現在HOSTで定義されているIPアドレスは次のとおりです。ルーター/モデムへのHOST接続はでeno1、BRIDGEはとして定義されますbr1

[root@remote-host ~]# ip addr
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether making:this:anonymous brd making:this:anonymous
    inet 12.34.567.111/29 brd 12.34.567.8xx scope global eno1
       valid_lft forever preferred_lft forever
    inet6 making:this:anonymous scope global dynamic
       valid_lft 414553sec preferred_lft 414553sec
    inet6 making:this:anonymous scope global noprefixroute dynamic
       valid_lft 2419198sec preferred_lft 345598sec
    inet6 making:this:anonymous scope link
       valid_lft forever preferred_lft forever
3: wlp3s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether making:this:anonymous brd making:this:anonymous
4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN qlen 1000
    link/ether making:this:anonymous brd making:this:anonymous
5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 1000
    link/ether making:this:anonymous brd making:this:anonymous
50: br1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
    link/ether making:this:anonymous brd making:this:anonymous
    inet 12.34.567.111/29 brd 12.34.567.8xx scope global br1
       valid_lft forever preferred_lft forever
    inet6 making:this:anonymous scope link
       valid_lft forever preferred_lft forever
63: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br1 state UNKNOWN qlen 1000
    link/ether making:this:anonymous brd making:this:anonymous
    inet6 making:this:anonymous scope link
       valid_lft forever preferred_lft forever
[root@remote-host ~]#

答え1

~によるとlibvirt ドキュメント:

LANへのブリッジ

これは、静的有線ネットワーク構成を使用するホストの通常のゲスト接続に推奨される構成です。

仮想マシンからLANへの直接ブリッジングを提供します。これは、ホストに1つ以上の管理対象物理NICがあるブリッジデバイスがホスト上にあると想定します。ゲストVMには、vnetNという名前で作成された接続されたトンデバイスがあり、このデバイスはこの要素を使用して上書きすることもできます(ターゲット要素の上書きを参照)。 tun デバイスはブリッジにバインドされます。 IP範囲/ネットワーク設定は、LANで使用されているすべてのものです。これにより、ゲスト仮想マシンへの物理マシンと同様に、完全な着信および発信ネットワークアクセスが提供されます。

virsh を使用したネットワークブリッジの作成

~によるとRHELドキュメント以下を使用して、インターフェイスベースのブリッジなどのvirshブリッジを作成できます。br0eth0

# virsh iface-bridge eth0 br0

ブリッジを削除したい場合、または削除する必要がある場合は、次のようにします。

# virsh iface-unbridge br0

ネットワーク起動スクリプトの作成

これが目的の方法で機能しない場合は、initスクリプトを手動で作成/編集してください/etc/sysconfig/network-scripts/このセクションは以下から直接提供されます。libvirt ドキュメントページ:

/etc/sysconfig/network-scripts ディレクトリに 2 つの構成ファイルを作成する必要があります。最初のエントリ(ifcfg-eth0)は物理ネットワークインターフェイスを定義し、これがブリッジの一部になることを示します。

# cat > ifcfg-eth0 <<EOF
DEVICE=eth0
HWADDR=00:16:76:D6:C9:45
ONBOOT=yes
BRIDGE=br0
NM_CONTROLLED=no
EOF

当然、実際のNICアドレスと一致するようにHWADDRを変更してください。たとえば、MTU = 9000を使用してここでデバイスのMTUを設定することもできます。

2番目の設定ファイル(ifcfg-br0)はブリッジデバイスを定義します。

# cat > ifcfg-br0 <<EOF
DEVICE=br0
TYPE=Bridge
BOOTPROTO=dhcp
ONBOOT=yes
DELAY=0
NM_CONTROLLED=no
EOF

警告:行TYPE = Bridgeは大文字と小文字を区別します。大文字の「B」と小文字の「ridge」が必要です。

変更後にネットワークを再起動します(または単に再起動)。

 # service network restart

最後のステップは、ブリッジでnetfilterを無効にすることです。

 # cat >> /etc/sysctl.conf <<EOF
 net.bridge.bridge-nf-call-ip6tables = 0
 net.bridge.bridge-nf-call-iptables = 0
 net.bridge.bridge-nf-call-arptables = 0
 EOF
 # sysctl -p /etc/sysctl.conf

これはパフォーマンスとセキュリティ上の理由でお勧めします。 Fedoraのバグ#512206を参照してください。または、すべてのトラフィックがブリッジを通過するようにiptablesを設定できます。

# echo "-I FORWARD -m physdev --physdev-is-bridged -j ACCEPT" > /etc/sysconfig/iptables-forward-bridged
# lokkit --custom-rules=ipv4:filter:/etc/sysconfig/iptables-forward-bridged
# service libvirtd reload

ネットワーク管理者とブリッジング

これがまだ正しいかどうかはわかりませんが、NetworkManagerブリッジングは現在開発中なのでサポートされていません。したがって、これを無効にしてnetworkサービスを使用する必要があるかもしれません。

# chkconfig NetworkManager off
# chkconfig network on
# service NetworkManager stop
# service network start

したがって、「ブリッジ」インターフェイスを作成したら、ドキュメントの説明に従って物理NICをここでスレーブに設定し、仮想ゲストの設定をスレーブとして編集する必要があります。それネットワークカードはホストコンピュータのネットワークブリッジにも接続されます。

...
<devices>
  ...
  <interface type='bridge'>
    <source bridge='br0'/>
  </interface>
  <interface type='bridge'>
    <source bridge='br1'/>
    <target dev='vnet7'/>
    <mac address="00:11:22:33:44:55"/>
  </interface>
  ...
</devices>

完了すると、ホストの物理NICが接続されているルータは、DHCPを介してホスト、ゲスト、またはその両方のブリッジインターフェイスにアドレスを割り当てます。


一つあるサーバーのトラブルシューティングの質問これはゲスト構成を設定するのに役立ちます。デフォルトではvirsh(を使用していると仮定してlibvirt)次のようにします。

virsh net-list
virsh net-edit $NETWORKNAME

そのdhcpセクションを見つけて、次のように編集します。

<dhcp>
  <range start='192.168.122.100' end='192.168.122.254'/>
  <host mac='52:54:00:6c:3c:01' name='vm1' ip='192.168.122.11'/>
  <host mac='52:54:00:6c:3c:02' name='vm2' ip='192.168.122.12'/>
  <host mac='52:54:00:6c:3c:03' name='vm3' ip='192.168.122.12'/>
</dhcp>

/var/lib/libvirt/dnsmasq/注:既存のマッピングに「hosts」ファイルがある可能性があります。

nl /var/lib/libvirt/dnsmasq/myvirtnet.lan.hostsfile 
     1  52:54:00:39:ae:1c,192.168.122.242,minirhel.myvirtnet
     2  52:54:00:9b:0a:42,192.168.122.133,rhel7.myvirtnet
     3  52:54:00:f9:1e:45,192.168.122.134,rhel7.myvirtnet
     4  52:54:00:b0:d5:38,192.168.122.205,redqcow.myvirtnet
     5  52:54:00:af:c4:9c,192.168.122.206,redqcow.myvirtnet

関連情報