Linuxサーバで通信速度を固定する

以前の記事(ネットワークのAuto-Negotiationについて)でネットワークやサーバ機器間の通信速度設定の重要性について触れたので、今回はそれに関連してLinuxサーバでduplexモードやautonegotiationを制御する方法を簡単に紹介。

ethernetで強制的にduplexモードやautonegotiationを切り替えるにはethtoolコマンドを使用する。またこのコマンドはリンク速度の変更にも使用される。

[使用例]

  • バイスeth0のautonegotiationをoffにする


ethtool -s eth0 autoneg off


ethtool -s eth0 duplex full


ethtool -s eth0 speed 1000
再起動しても設定が反映されるようにするにはネットワークの設定ファイルにETHTOOL_OPTS行を追加して記述すればよい。この場合の設定例を以下に示す。

[/etc/sysconfig/network-scripts/ifcfg-eth0]


DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.0.1
NETWORK=192.168.0.0
BROADCAST=192.168.0.255
NETMASK=255.255.255.0
ONBOOT=yes
ETHTOOL_OPTS="autoneg off speed 100 duplex full"
TYPE=Ethernet

【注意事項】
使用しているNICのドライバが、ethtoolコマンドの使用したいオプションに対応していないケースもあり、この場合には注意が必要。対応していないオプションを設定した場合にはnetworkサービスを再起動する際にその旨メッセージが標準出力に表示されるので、対応していないオプションを設定ファイル(ifcfg-XXX)から外す必要があります。