私はCentOSホスト内に小さな仮想ネットワークを構築することによってネットワーキングについて学びます。計画を開始するには、上部の指示が必要です。
シーン:
CentOS 7 HOSTにはCentOS 7 GUESTが必要です。HOSTとGUESTはそれぞれ異なる固定パブリックIPアドレスを持つ必要があります。私が知っている限り、これはホストシステムにブリッジを作成することによって行われます。
HOST物理ボックスは、イーサネット経由でゲートウェイのIPアドレスを使用してルーター/モデムに接続します12.34.567.8aa
。12.34.567.111
、、、12.34.567.222
および12.34.567.333
を12.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
ブリッジを作成できます。br0
eth0
# 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