Debian ネットワークインターフェイスの設定

注記) 2017.9
   Debian9 stretchのリリースで、ネットワークインターフェイス(NIC)の命名方法が新しくなりました。
   ens0やenp1s1(ethernet)、wlp3s0(wlan)のような名称を生成し、お使いのマシン環境で異なるようです。
   確認方法: $ ip a
   本ページ中のNIC名称: eth0 を新しい名称に読み替えてください。
   なお、固定IPアドレスの設定方法について(Debian9 stretch Xfce)は、コチラもご参考ください。

接続別に切り替えできるネットワークインターフェイス設定

GUIデスクトップ環境では、NetworkManager(NM)パッケージの
管理デーモン経由で自動ネットワーク設定がなされていることが多い。

これとは、別の方法として"ifupdown"コマンドを用いる
"/etc/network/interfaces"ファイル設定が可能。

持ち運びするラップトップPCのように、
自宅とオフィスでネットワークを使い分けるときに便利。
LANケーブルでのネットワーク接続を、接続別に切り替える。

< 手法 >
物理インターフェイス名と論理インターフェイス名を区分して設定する。

物理インターフェイス lo,eth*等 <Interface_Name> Linuxカーネルが"udev"メカニズム
により与えた名称
論理インターフェイス 任意名称 <Config_Name> "/etc/network/interfaces"ファイルで
"iface"に続くトークン

< 設定例 >
○ メインで使う環境:オフィス // IP_address=192.168.10.11 Interface_Name=eth0
○ サブで使う環境:自宅 // IP_address=192.168.1.5 Config_Name=home
○ その他で使う環境:出張先 // IP_address=DHCP自動取得 Config_Name=other


■ 設定ファイルの編集    *1.NetworkManaderが起動している場合

$ sudo vi /etc/network/interfaces
##
## The loopback network interface
auto lo
iface lo inet loopback

## office network
allow-hotplug eth0        *1
iface eth0 inet static
address 192.168.10.11
netmask 255.255.255.0
gateway 192.168.10.1

## home network
iface home inet static
address 192.168.1.5
netmask 255.255.255.0
gateway 192.168.1.1

## other network
iface other inet dhcp

■ インターフェイスの切換え

$ ip a
---現在の設定状況

$ cat /etc/network/run/ifstate
lo=lo
eth0=eth0
---現在の接続インターフェイス

$ sudo ifdown eth0
---eth0の停止

$ sudo ifup eth0=home
---eth0をhomeに切り替えて立ち上げる

$ cat /etc/network/run/ifstate
lo=lo
eth0=home
---現在の接続インターフェイス

$ sudo ifdown eth0
---eth0の停止

$ sudo ifup eth0=other
---eth0をotherに切り替えて立ち上げる


ネットワークインターフェイスの名称/番号を定める

NIC(network interface card)増設や、マシン乗り換え、
あるいは設定衝突などで、正しくネットワークインターフェイスを
関連付けて適用しているか、混乱するケースがある。
平たく言えば、「あれ?これって eth0,eth1 逆?どっちだっけ。。」の感。

■ ルールファイル編集

各ネットワークインターフェイスを名付けるルールファイルを編集することで、
命名ルールを指定できる。

$ sudo vi /etc/udev/rules.d/70-persistent-net.rules

## NAME="ethX"を適切な番号に変更する
# PCI device 0xxxex:0x1xxx
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="xx:xx:xx:xx:xx:xx",
ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

■ デバイス確認

$ dmesg | grep eth*
$ lspci | grep Ethernet
---01:00.1 Ethernet Controller
---01:00.2 Ethernet controller
---バス番号:スロット番号:機能番号

$ sudo ethtool eth0
---Link detected:yes 認識されている
---Link detected:no 認識されていない
---LANケーブルを抜き差ししてみて表示を確認する
---ethtoolは、NICの設定ユーティリティパッケージ



*1:NetworkManagerが起動している場合

通常、GUIデスクトップ環境ではNetworkManager(NM)が常駐していて、
その管理デーモン経由で自動ネットワーク設定が作動している。

このような環境では、本文中のように、
"/etc/network/interfaces"ファイルの編集について、
"allow-hotplug eth0(interface_name)"と
"iface eth0(interface_name) inet static"の2つのスタンザを記述すると良いようだ。

Web情報を拾うと、"allow-hotplug"スタンザを省略して
"iface 任意の名称(config_name) inet static"を記述する方法が見つかるだろう。
この省略記述は、NMが常駐起動していない場合に有効なようだ。
NMが常駐起動する環境でこれら2つのスタンザを省略すると、
PC起動時にはNMによるDHCP自動接続が優先作用するらしい。

NetworkManager(NM)の動作を停止するには、 コチラ を参照

Copyright(C) green-pen miyagi