VirtualBoxのCentOS 7で2つのethデバイスを使用してbond0インターフェイスを設定したいですか?

VirtualBoxのCentOS 7で2つのethデバイスを使用してbond0インターフェイスを設定したいですか?

インターフェイスバインドを試みるようにVirtualBoxにCentOS 7.x仮想マシンを設定したいと思います。次のインターフェイスを持つようにこの仮想マシンを設定するにはどうすればよいですか?

  • eth1(プライベートネットワーク - 192.168.56.101)
  • eth2(bond0のスレーブ)
  • eth3(bond0のスレーブ)
  • bond0(LACPを使用)

Vagrantを使用して設定を簡素化すると、レプリケーションが簡単になるのに役立ちます。

メモ:手動で設定したいのですが、NetworkManagerを無効にする例を示します。

答え1

放浪者の設定

Vagrantfileまず、次のコマンドを使用して仮想マシンを構築できます。

$ cat Vagrantfile
Vagrant.configure("2") do |config|

  config.vm.box = "centos/7"
  config.vm.hostname="box-101"
  config.ssh.forward_x11 = true

  config.vm.network "private_network", ip: "192.168.56.101"
  config.vm.network "public_network", bridge: "en0: Wi-Fi (Wireless)", auto_config: false
  config.vm.network "public_network", bridge: "en0: Wi-Fi (Wireless)", auto_config: false

  config.vm.provider "virtualbox" do |vb|
    vb.memory = "2048"
  end

  config.vm.provision "shell", inline: <<-SHELL
    yum install -y git vim socat tcpdump wget sysstat
    yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
  SHELL
end

メモ:私が使用しているNICはpublic_network私のMacbookbridge: "en0: Wi-Fi (Wireless)"デバイスです。他のタスクでこれを行う場合は、Vagrant / VirtualBoxを実行しているホストシステムの適切なNICに変更する必要があります。

上記のファイルには、VMの起動時に作成された3つのNICが含まれています。 VMとSSHを起動するには、次の手順に従ってください。

$ vagrant up
$ vagrant ssh

初期ネットワーク設定

結果のネットワークを見ると、次のことがわかります。

$ ip a l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:c0:42:d5 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global noprefixroute dynamic eth0
       valid_lft 85127sec preferred_lft 85127sec
    inet6 fe80::5054:ff:fec0:42d5/64 scope link
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:ce:88:39 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.101/24 brd 192.168.56.255 scope global noprefixroute eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fece:8839/64 scope link
       valid_lft forever preferred_lft forever
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:d7:c2:ec brd ff:ff:ff:ff:ff:ff
    inet6 fe80::df68:9ee2:4b5:ad5f/64 scope link noprefixroute
       valid_lft forever preferred_lft forever
5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:59:b0:69 brd ff:ff:ff:ff:ff:ff

そしてそのパスは次のとおりです。

$ ip r
default via 10.0.2.2 dev eth0 proto dhcp metric 100
10.0.2.0/24 dev eth0 proto kernel scope link src 10.0.2.15 metric 100
192.168.56.0/24 dev eth1 proto kernel scope link src 192.168.56.101 metric 102

ネットワーク管理者の無効化

この仮想マシンでは、ボンディングされたインターフェイス+スレーブインターフェイスを手動で設定できるようにNetworkManagerを無効にします。

$ for i in NetworkManager-dispatcher NetworkManager NetworkManager-wait-online; do
    systemctl disable $i && systemctl stop $i
  done

次に、NMが無効になっていることを確認します。

$ systemctl list-unit-files |grep NetworkManager
NetworkManager-dispatcher.service             disabled
NetworkManager-wait-online.service            disabled
NetworkManager.service                        disabled

バインディングインターフェイスの設定

まず、3つのファイルをビルドします。 bond0 インターフェイス用に 1 個、スレーブとして使用するインターフェイス 2 個用に 1 個 (eth2 および eth3)。

ifcfg-bond0

$ cat /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
Type=Bond
NAME=bond0
BONDING_MASTER=yes
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.1.232
PREFIX=24
GATEWAY=192.168.1.2
BONDING_OPTS="mode=4 miimon=100 lacp_rate=1"

メモ: mode=4(802.3ad)とも呼ばれます。 LACP。miimon=100100msの確認間隔で、lacp_rate=1パートナーからの高速TXです。このコマンドを使用すると、ボンディングモジュールで許可されているすべてのパラメータを表示できますmodinfo bonding

イーサリアム2

$ cat /etc/sysconfig/network-scripts/ifcfg-eth2
DEVICE=eth2
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
NM_CONTROLLED=no
IPV6INIT=no
MASTER=bond0
SLAVE=yes

イーサリアム3

$ cat /etc/sysconfig/network-scripts/ifcfg-eth3
DEVICE=eth3
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
NM_CONTROLLED=no
IPV6INIT=no
MASTER=bond0
SLAVE=yes

メモ:上記では、bond0インターフェイスにIPアドレス192.168.1.232とゲートウェイ192.168.1.2を静的に割り当てました。状況に合わせて変えてください。

インターフェイスの起動

ネットワーキングを開始する最も簡単な方法は、ネットワークサービスを再起動することです。

$ systemctl restart network

インターフェイスとルーティングを見ると、次のようになります。

$ ip a l
..
..
4: eth2: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000
    link/ether 08:00:27:d7:c2:ec brd ff:ff:ff:ff:ff:ff
5: eth3: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master bond0 state UP group default qlen 1000
    link/ether 08:00:27:d7:c2:ec brd ff:ff:ff:ff:ff:ff
6: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 08:00:27:d7:c2:ec brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.232/24 brd 192.168.1.255 scope global bond0
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fed7:c2ec/64 scope link
       valid_lft forever preferred_lft forever

$ ip r
default via 10.0.2.2 dev eth0
10.0.2.0/24 dev eth0 proto kernel scope link src 10.0.2.15
169.254.0.0/16 dev eth0 scope link metric 1002
169.254.0.0/16 dev eth1 scope link metric 1003
169.254.0.0/16 dev bond0 scope link metric 1006
192.168.1.0/24 dev bond0 proto kernel scope link src 192.168.1.232
192.168.56.0/24 dev eth1 proto kernel scope link src 192.168.56.101

接着剤の詳細

インターフェイスの状態に関する詳細情報を取得するために、インターフェイスにバインドされているデバイスを表示することもできます。

$ cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer2 (0)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

802.3ad info
LACP rate: fast
Min links: 0
Aggregator selection policy (ad_select): stable
System priority: 65535
System MAC address: 08:00:27:d7:c2:ec
Active Aggregator Info:
    Aggregator ID: 1
    Number of ports: 1
    Actor Key: 9
    Partner Key: 1
    Partner Mac Address: 00:00:00:00:00:00

Slave Interface: eth2
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 08:00:27:d7:c2:ec
Slave queue ID: 0
Aggregator ID: 1
Actor Churn State: none
Partner Churn State: churned
Actor Churned Count: 0
Partner Churned Count: 1
details actor lacp pdu:
    system priority: 65535
    system mac address: 08:00:27:d7:c2:ec
    port key: 9
    port priority: 255
    port number: 1
    port state: 207
details partner lacp pdu:
    system priority: 65535
    system mac address: 00:00:00:00:00:00
    oper key: 1
    port priority: 255
    port number: 1
    port state: 3

Slave Interface: eth3
MII Status: up
Speed: 1000 Mbps
Duplex: full
Link Failure Count: 0
Permanent HW addr: 08:00:27:59:b0:69
Slave queue ID: 0
Aggregator ID: 2
Actor Churn State: churned
Partner Churn State: churned
Actor Churned Count: 1
Partner Churned Count: 1
details actor lacp pdu:
    system priority: 65535
    system mac address: 08:00:27:d7:c2:ec
    port key: 9
    port priority: 255
    port number: 2
    port state: 199
details partner lacp pdu:
    system priority: 65535
    system mac address: 00:00:00:00:00:00
    oper key: 1
    port priority: 255
    port number: 1
    port state: 3

外部接続の確認

以下では、ネットワーク上の他のコンピュータで実行されたbond0 IPアドレスのping出力を表示できます。サービスを再起動すると、networkサービスにアクセスできることがわかります。

$ ping 192.168.1.232
From 192.168.1.10 icmp_seq=7414 Destination Host Unreachable
From 192.168.1.10 icmp_seq=7415 Destination Host Unreachable
64 bytes from 192.168.1.232: icmp_seq=7416 ttl=64 time=886 ms
64 bytes from 192.168.1.232: icmp_seq=7417 ttl=64 time=3.58 ms
64 bytes from 192.168.1.232: icmp_seq=7418 ttl=64 time=3.52 ms
64 bytes from 192.168.1.232: icmp_seq=7419 ttl=64 time=3.46 ms
64 bytes from 192.168.1.232: icmp_seq=7420 ttl=64 time=3.15 ms
64 bytes from 192.168.1.232: icmp_seq=7421 ttl=64 time=3.50 ms

再起動プロンプト

CentOS 7.xでは、起動中にbond0インターフェイスが正しく起動するのにバグ/問題があるようです。この問題の回避策は、次を追加することです。

 $ echo "ifup bond0" >> /etc/rc.d/rc.local
 $ chmod +x /etc/rc.d/rc.local

bond0これにより、起動中にインターフェイスが正しく機能します。

引用する

関連情報