CentOSでホームサーバを作ろう
NICの設定
最終更新:
centos-homeserver
-
view
NICの最新ドライバ適用
このマザーのNIC(RealTek RTL8111C)の最新のドライバーを適用する。
2010.7.15現在、"r8168-8.018.00.tar.bz2"が最新のようなので、
Realtekの公式サイトから取得する。
(公式サーバーがよく落ちているので(-_-;)、その場合はここなどから
「rtl8111c linux」などで検索して、最新バージョンのファイル入手すること。
別のパソコンで取得し、SFTPでサーバーにUPしたり、USBメモリでコピーしてもよい。)
2010.7.15現在、"r8168-8.018.00.tar.bz2"が最新のようなので、
Realtekの公式サイトから取得する。
(公式サーバーがよく落ちているので(-_-;)、その場合はここなどから
「rtl8111c linux」などで検索して、最新バージョンのファイル入手すること。
別のパソコンで取得し、SFTPでサーバーにUPしたり、USBメモリでコピーしてもよい。)
ドライバのコンパイルと適用
# tar xfj r8168-8.018.00.tar.bz2
# cd r8168-8.018.00
# ./autorun.sh
ドライバが反映されているかは、
# lsmod | grep r8168
で検索にHITする行があるかどうかで確認する。
※なお、その他このドライバの詳細についてはREADMEを参照すること。
※なお、その他このドライバの詳細についてはREADMEを参照すること。
NICのボンディング
このマザーボードはオンボードNICが2個(eth0,eth1)ついているので、
IPアドレスの固定設定と併せて、NICボンディングも設定することにする。
※以下の作業は直接コンソールでrootユーザで行う。(好みの問題ですが。)
IPアドレスの固定設定と併せて、NICボンディングも設定することにする。
※以下の作業は直接コンソールでrootユーザで行う。(好みの問題ですが。)
ボンディングモジュールのロード設定
(IPv6の無効化の設定も併せて行う。)
"/etc/modprobe.conf"を直接編集するのでは無く、"/etc/modprobe.d/"以下に
独自設定ファイルを配置するのが正しい方法なので、そのようにする。
なお、原因はわからないがジャンボフレームも同時に適用すると、
マシン起動時にNICが無効になったり、大量のパケットドロップが発生したり不安定になるので、
同時に導入する場合は後述の通り、rc.localにネットワークの再起動を記述することで対処する。
独自設定ファイルを配置するのが正しい方法なので、そのようにする。
なお、原因はわからないがジャンボフレームも同時に適用すると、
マシン起動時にNICが無効になったり、大量のパケットドロップが発生したり不安定になるので、
同時に導入する場合は後述の通り、rc.localにネットワークの再起動を記述することで対処する。
# vi /etc/modprobe.d/user.local.conf 設定ファイルを作成
以下の記述を行う。
# For bond0
alias bond0 bonding
# For IPv6 Disable
alias net-pf-10 off
options ipv6 disable=1
※IPv6の無効化については参考4を参照。(CentOS 5.4以降の仕様)
ボンディング用のNICスクリプトの記述
ボンディング用のNICスクリプトとして、「ifcfg-bond0」というスクリプトを新規作成する。
なお、以下の例では
IPアドレス:192.168.1.101/24
の場合で記述している。
なお、以下の例では
IPアドレス:192.168.1.101/24
の場合で記述している。
ifcfg-bond0(ボンディング用スクリプト)
# vi /etc/sysconfig/network-scripts/ifcfg-bond0
記述内容は、
# bond0
DEVICE=bond0
ONBOOT=yes
BOOTPROTO=static ※noneではないので注意
IPADDR=192.168.1.101
NETMASK=255.255.255.0
NETWORK=192.168.1.0
BROADCAST=192.168.1.255
DNS1=192.168.1.1
※/etc/resolv.confに記述する必要は無く、NetworkManagerが自動反映するらしい。
MACADDR=XX:XX:XX:XX:XX:XX
※リンク:参考1の情報にあるように、NICダウン時の警告を出さなくするために、
デフォルトのeth0ではなく、eth1のMACアドレスを設定しておく。
USERCTL=no
MTU=6000 ジャンボフレーム用の設定。不要ならコメントアウト。
BONDING_OPTS='mode=1 miimon=100'
ちなみにbonding中は、ifconfigでは全てのMACアドレスが統一(デフォルトではeth0)されてしまうため、
各NICの本来のMACアドレスを確認する事ができないが、以下のコマンドを使えば
各NICの本来のMACアドレスを確認する事ができないが、以下のコマンドを使えば
# cat /proc/net/bonding/bond0
確認する事ができる。(リンク:参考2 ボンディングの状態を確認するコマンド。)
ifcfg-eth0
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
記述内容は、
# eth0 for bonding
DEVICE=eth0
BOOTPROTO=static ※noneではないので注意
ONBOOT=yes
SLAVE=yes
MASTER=bond0
USERCTL=no
ifcfg-eth1(eth0とほとんど変わらない)
# vi /etc/sysconfig/network-scripts/ifcfg-eth1
記述内容は、
# eth1 for bonding
DEVICE=eth1
BOOTPROTO=static ※noneではないので注意
ONBOOT=yes
SLAVE=yes
MASTER=bond0
USERCTL=no
Gatewayの設定とIPv6の無効化
具体的にはネットワークの共通設定ファイルである、/etc/sysconfig/networkを編集する。
以下の例では、
Gatewayアドレス:192.168.1.1
ホスト名:hogehoge.home
として記述している。
※IPv6の無効化については参考3を参照。
以下の例では、
Gatewayアドレス:192.168.1.1
ホスト名:hogehoge.home
として記述している。
※IPv6の無効化については参考3を参照。
# vi /etc/sysconfig/network
記述内容は、
NETWORKING=yes
HOSTNAME=hogehoge.home ドメイン名を設定する。
GATEWAY=192.168.1.1 Gatewayのアドレスを設定する。
GATEWAYDEV=bond0 Gatewayに接続するNIC(ここではbond0)を設定する。
NETWORKING_IPV6=no IPv6の無効化。
IPV6INIT=no IPv6の無効化。
IPV6_AUTOCONF=no IPv6の無効化。
ジャンボフレームへの対応(rc.localへの追記)
前述の通り、ジャンボフレームを有効にしたままだと、
通常起動のままだと安定してボンディングができない。
そこで、/etc/rc.localに「ネットワークの再起動」の処理を記述を追加する。
通常起動のままだと安定してボンディングができない。
そこで、/etc/rc.localに「ネットワークの再起動」の処理を記述を追加する。
# vi /etc/rc.local
に以下の記述を追加する。
# /sbin/service network restart
これで、起動時に自動的にネットワークの再初期化が行われ、
ボンディング&ジャンボフレームが有効な状態になる。
ボンディング&ジャンボフレームが有効な状態になる。
動作確認
サーバを再起動して、NICの状態を確認する。
# ifconfig ※ bond0にだけアドレスが割当られていることがわかる
# cat /proc/net/bonding/bond0 ※リンク:参考2で紹介済みだが、bond0とその配下のeth0,eth1の状態がわかる。
また、動作確認として
# watch "cat /proc/net/bonding/bond0"
としておき、同じセグメントの他のマシンからpingをし続ける。
その状態で、ケーブルを抜き差ししてみて、
ちゃんとそれぞれのNICの状態が「UP」、「DOWN」と変化することを確認する。
その状態で、ケーブルを抜き差ししてみて、
ちゃんとそれぞれのNICの状態が「UP」、「DOWN」と変化することを確認する。
付記(netperfによる速度測定)
2010.07.15現在での最新版を取得する。
あとは参考5の手順に従い、解凍、コンパイル、サーバーとして起動を行う。
クライアント側のマシンの準備も並行して行う。
クライアント側のマシンの準備も並行して行う。
# tar xfj netperf-2.4.5.tar.bz2
# cd netperf-2.4.5
# ./configure
作成されたnetserverをサービスとしてxinet.dに登録する。(参考5を参照)
後は、別のマシン(IPアドレス:N.N.N.N)でもnetserverを起動しておき、
Linuxマシンからそのマシンに向けて、netperf -H N.N.N.N を実行すれば完了。
自分の環境では、参考までに3回計測した結果、平均720Mbits/sec程度だった。
(これは1000BaseTの実効帯域速度を考えるとかなり高速と考えられる。)
また、MTU=6000としてジャンボフレームを有効にした場合
同様に3回計測した結果、平均530Mbits/sec程度に下がってしまったので、
チーミングとジャンボフレームを兼用する意味は低いかもしれない。
後は、別のマシン(IPアドレス:N.N.N.N)でもnetserverを起動しておき、
Linuxマシンからそのマシンに向けて、netperf -H N.N.N.N を実行すれば完了。
自分の環境では、参考までに3回計測した結果、平均720Mbits/sec程度だった。
(これは1000BaseTの実効帯域速度を考えるとかなり高速と考えられる。)
また、MTU=6000としてジャンボフレームを有効にした場合
同様に3回計測した結果、平均530Mbits/sec程度に下がってしまったので、
チーミングとジャンボフレームを兼用する意味は低いかもしれない。
※参考1 centos5.2以降でのbondingの設定全般
※参考2 bondingの状態を把握する
※参考3 BONDING_OPTSの設定オプション一覧
※参考4 IPv6の無効化
※参考5 Inetperfの使用方法