みなさん、こんにちは。ぶたキムチです。
今回は、ifup / ifdowコマンドエラーで対策したことについてまとめました。
ifup / ifdowでNICの有効化をしようと思ったら、エラーにハマりました。
その時の対策した内容、調べた内容をまとめたので、参考になれば幸いです。
使用した環境
今回の環境はWindows10にVirtualBoxをインストールして、仮想環境上にDebianを構築しました。
エラー・症状について
EthernetのIPアドレスを変更し、ifdownコマンドを使用してNICを無効化しようと思ったら、以下のエラーが発生しました。
# ifdown eth0 ifdown: interface eth0 not configured
ちなみに、ifupコマンドを実行すると以下のようなエラーが出ました。
# ifup eth0 ifup:RTNETLINK answers: Invalid argument
ifdownの時は、eth0が構成されていないなどのエラーが出て、なかなかNIC無効化できない。
とりあえず行った対策をまとめた。
そもそもifup/ifdownコマンドは何?
ifdownコマンドは、指定したNIC(ネットワークインターフェースカード)を無効にし、ifupコマンドはNICコマンドを有効にするコマンドです。
使用例:ifup eth0 使用例:ifdown wlan0
注意:NetworkManagerを使用しているシステムやディストリビューションでは、これらのコマンドが利用できないことがあるので設定が必要。
if upや ifdown利用するために必要な設定
ifup / ifdownなどネットワーク管理をしているファイルは、NetworkManagerが管理をしています。設定ファイルは以下のディレクトリに存在します。
cat /etc/NetworkManager/NetworkManager.conf
[main] plugins=ifupdown,keyfile [ifupdown] managed=false
「managed=false」ここを「managed=true」に変更することでifup ifdownを使ってネットワーク管理ができるようになります。
対策1:参照ファイルを書き換える
ifupやifdownの正体はただのスクリプトです。以下の2つの設定スクリプトを参照することで、ネットワークの有効化・無効化を行っています。
・/etc/sysconfig/network-script
ディストリビューションによって、設定ファイル名は異なるで注意。
今回、自分が使ったディストリビューションは、Debianですので、「/run/netowork/ifstate」の設定を以下のように変更する。
# vi /run/network/ifstate lo=lo eth0=eth0 <--追加 wlan0=wlan0 <--追加
ifconfigなどの他のネットワークコマンドを使用すると、ifupやifdownコマンドは正常に動作しないっぽい。
要するに、先ほどのNetworkManagerで、これらのネットワークコマンドをどう管理するかを決めているので、
ifup/ifdownをtrueにしたことで、ifconfig等のコマンド使用してしまうと、うまく働かないという問題が生じる。
設定スクリプトを変更したら、ネットワークの再起動をしましょう。
ネットワークの再起動は、以下のうち対応しているコマンドを選択してください。
service network restart /etc/rc.d/init.d/network restart /etc/init.d/networking restart <--私の環境だとこれ。
だが、先ほどのエラーは改善されなかった。
(しかし、色々調べるとこの時点でエラーの修正をできている人もいるようです。)
参考:http://nemupm.hatenablog.com/entry/2014/09/20/035935
対策2:IPアドレスの完全に開放
次に、ネットワークデバイスは変更しても、変更前のIPアドレスと変更後のIPアドレスが同じである場合、
IPが衝突を起こしている可能性も考えられる。
そこで、完全なIPの解放を行う。
# ip addr flush dev eth0 # ifdown eth0
その後、ネットワークを再起動
/etc/init.d/networking restart
するとエラーもなく設定が完了した。
pingコマンドを実行し、通信確認OK。
ifdown と ifconfig downにの違い
ネットワークリンクを終了させるコマンド。そのため、ipアドレスが設定された状態となりipアドレスは保持される。
完全なipの解放はされないため、別のデバイスを接続しようと思っても、新しく設定したデバイスと競合する。
ifdownはipアドレスの完全な切り離しを行うため、コマンド実行後は、変更前に割り当てたipアドレスを完全にリリースされてしまいます。
新しいデバイスにこれまでのipアドレスを割り当てたい場合は、ifdownを使う。
その他のNIC有効・無効にするネットワークコマンド
・ipコマンドを使用した場合
ip l set eth0 up ip l set eth0 down
・nmcliコマンドを使用した場合
nmcli c down eth0 nmcli c up eth0
今後は、これらのコマンドの方がよいらしい。
参照:https://qiita.com/koara-local/items/564da1c2f778be1de6ba
コメント