メインメニューを開く

差分

LANの多重化

432 バイト除去, 2019年9月10日 (火) 14:36
編集の要約なし
'''自宅の環境で試しましたが…USB-LANアダプタはBonding出来ないようです…<br/>でも…オンボードのr8152もUSB-LANなんだけどな…'''
 
 
ArchLinuxのカーネルがバージョンアップしてから、またLANが不安定に…。<br/>
ちなみに使用しているNICはasixのAX88179チップのやつ…。<br/>
== bondingの準備 ===== ifenslaveのインストール ===
bondingに必要な「ifenslave」パッケージを、以下のコマンドでインストールします。
<syntaxhighlight lang="bash">pacman -S ifenslave</syntaxhighlight>
netctlはデフォルトでインストールされているので、netctlを使用したbondingを実現できるように設定ファイルを作成します。
== bondingの設定 = netctlの設定 ===
先ずは、bondingするNIC名を以下のコマンドで取得します。
<syntaxhighlight lang="bash">ip a</syntaxhighlight>
inet6 fe80::3092:89f5:4be1:eb66/64 scope link
valid_lft forever preferred_lft forever
3: enp0s9enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:59:5c:9a brd ff:ff:ff:ff:ff:ff
inet 10.0.4.15/24 brd 10.0.4.255 scope global dynamic noprefixroute enp0s9
valid_lft forever preferred_lft forever</syntaxhighlight>
現時点ではNetworkManagerが起動しているので、2つのNICが生きています。<br/>
上記の例では「enp0s3」と「enp0s9」が、それぞれのNIC名になります。上記の例では「enp0s3」と「enp0s8」が、それぞれのNIC名になります。
次に手順に従って、サンプルファイルをコピーします。
#Mode=balance-rr</syntaxhighlight>
【修正後】
<syntaxhighlight lang="text" line="line" highlight="1,2,4,6-910">Description='"A bonded interface'"Interface='bond0'
Connection=bond
BindsToInterfaces=('enp0s3' 'enp0s9'enp0s8)
IP=static
Address="10192.0168.256.1511/24"Gateway='192.168.56.1'DNS=('192.168.56.1')
IP6=stateless
Mode=active-backupprimary=enp0s3</syntaxhighlight>所々、シングルクォーテーションに修正しています。(でないと上手くいかなかったです…)<br/>
「BindsToInterfaces」はbondingの対象にするNIC名を指定します。<br/>
「Address」は固定IPv4アドレスを指定します。<br/>
「IP6=stateless」はIPv6を有効にして、おまかせしています。<br/>
「Mode」は動作させるモードを指定します。指定する内容は[http://nosa.cocolog-nifty.com/sanonosa/2013/12/linuxnicbonding.html こちら]を参照してください。<br/>
「primary」は優先させるNICを指定します。
=== bondingドライバの設定 ===次にbondingドライバの設定をしていきます。<br/>今の状態で動作させてもMIIの監視間隔が0なので、切り替わりません。<br/>nano等のエディタで「/etc/modprobe.d/bonding.conf」を以下の内容で新規作成します。<syntaxhighlight lang="text" line="line">options bonding miimon=100 primary=enp0s3</syntaxhighlight> == 切り替え ===== NetworkManegerの無効化とnetctlの有効化 ===
NetworkManegerを無効化して、netctlを有効化します。
<syntaxhighlight lang="bash">systemctl stop NetworkManager
systemctl disable NetworkManager
systemctl netctl start bondingnetctlsystemctl enable netctlbonding</syntaxhighlight>
== netctlの設定の切り替え = 再起動 ===netctlの動作をbondingに切り替えますbondingドライバに設定を反映させるために、OSを再起動します。<syntaxhighlight lang="bash">netctl switch-to bondingreboot</syntaxhighlight>
== 念のため再起動 =動作確認 =<syntaxhighlight lang="bash">rboot</syntaxhighlight> == 動作確認 ==
以下のコマンドで動作状況を確認します。
<syntaxhighlight lang="bash">cat /proc/net/bonding/bond0</syntaxhighlight>
Currently Active Slave: enp0s3
MII Status: up
MII Polling Interval (ms): 0100
Up Delay (ms): 0
Down Delay (ms): 0
Slave queue ID: 0
Slave Interface: enp0s9enp0s8
MII Status: up
Speed: 1000 Mbps
Permanent HW addr: 08:00:27:59:5c:9a
Slave queue ID: 0</syntaxhighlight>
何となくですが…動作モードは「active-backup」でアクティブが「enp0s3」、「enp0s9」は待機しています。backup」でアクティブが「enp0s3」、「enp0s8」は待機しています。  これだけでは不安なので、「enp0s3」側のLANケーブルを抜いてみます。<br/>切り替わったことを、確認してみます。<syntaxhighlight lang="bash">cat /proc/net/bonding/bond0Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: fault-tolerance (active-backup)Primary Slave: NoneCurrently Active Slave: enp0s8MII Status: upMII Polling Interval (ms): 100Up Delay (ms): 0Down Delay (ms): 0 Slave Interface: enp0s3MII Status: upSpeed: 1000 MbpsDuplex: fullLink Failure Count: 1Permanent HW addr: 08:00:27:66:20:41Slave queue ID: 0
ipコマンドでも確認してみます。<syntaxhighlight lang="bash">ip a</syntaxhighlight>出力は以下のようになります。<syntaxhighlight lang="text">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:00Slave Interface:00enp0s8 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 :MII Status:1/128 scope host up valid_lft forever preferred_lft forever2Speed: enp0s3: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bond0 state UP group default qlen 1000Mbps link/ether aa:3e:a4:2a:af:81 brd ff:ff:ff:ff:ff:ff inet6 fe80::acd6:4a41:a7e2Duplex:54af/64 scope link tentative full valid_lft forever preferred_lft forever3Link Failure Count: enp0s9: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 1500 qdisc fq_codel master bond0 state UP group default qlen 10000 link/ether aaPermanent HW addr:3e08:a400:2a27:af59:81 brd ff5c:ff:ff:ff:ff:ff9a4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether aa:3e:a4:2a:af:81 brd ff:ff:ff:ff:ffSlave queue ID:ff inet 10.0.2.16/24 brd 10.0.2.255 scope global noprefixroute bond0 valid_lft forever preferred_lft forever inet6 fe80::a83e:a4ff:fe2a:af81/64 scope link valid_lft forever preferred_lft forever</syntaxhighlight>VirtualBoxの都合でdhcp設定にしましたが…。<br/>「bond0」が追加されて、「enp0s3」と「enp0s9」がSLAVEになています。<br/>
これだけでは不安なので、以下のコマンドで「enp0s3」を殺してみます。<syntaxhighlight lang="bash">ip link set enp0s3 down</syntaxhighlight>だめだ…切り替わらない…切り替わってます!!
== 参考サイト ==
[https://wiki.archlinux.jp/index.php/Netctl#.E3.83.9C.E3.83.B3.E3.83.87.E3.82.A3.E3.83.B3.E3.82.B0 netctl - ArchWiki]<br/>
[https://qiita.com/tukiyo3/items/08c8b0180eae29055736 ArchLinuxでネットワーク設定 (ブリッジ、bonding)]<br/>
[https://github.com/joukewitteveen/netctl/blob/master/docs/netctl.profile.5.txt マスターのnetctl / netctl.profile.5.txt・joukewitteveen / netctl・GitHub]<br/>
[http://nosa.cocolog-nifty.com/sanonosa/2013/12/linuxnicbonding.html LinuxでのNIC冗長化(bonding)を少し深く考えてみる: sanonosa システム管理コラム集]<br/>