【Linux】ネットワークインターフェースについて
はじめに
Linuxのネットワークインターフェースについて調べる機会があったので、備忘録としてまとめておきます。
1. 用語の定義について
本題に入る前に、NICとネットワークインターフェースという用語について整理。
※ IT用語は現場や環境よって微妙な違いがあるが、本記事では以下のように定義
NIC
コンピュータに物理的に搭載されたネットワークカード(ハードウェア)
※ Ethernetカード、Wi-Fiカード、PRACポートなど
ネットワークインターフェース
OSがNICを認識して操作するために作られるソフトウェア的なインターフェース名
※ eth、ib0、br0 など
2. インターフェースが決まるまでの流れ
1. カーネルがネットワークデバイスを認識
デバイスドライバがロードされると NIC が認識され、対応するインターフェースが OS 上に生成される。
2. udevがデバイス名を決定
ユーザー空間のデバイスマネージャである udev がインターフェースに名前を割り当てる。
3.命名規則に従って名前が決定
最近のLinuxでは、Predictable Network Interface Names(予測可能なインターフェース名)という命名規則が導入されていて、起動の度にインターフェース名が変わってしまう問題を回避。
3. インターフェースの命名規則
以下は、主なインターフェース名の例とその意味。
enp0s1 : PCIバス番号とデバイススロットに基づく命名
ens1 : 固定スロットに接続された NIC
eno1 : オンボード NIC
wlp0s1 : PCIバス接続の Wi-Fi インターフェース
eth0 : 古い命名方式(物理インターフェース)
4. 設定ファイルの場所
ネットワークインターフェイスのIPアドレスなどの設定は、以下のディレクトリ内のファイルに定義されている。
パス : /etc/sysconfig/network-scripts
※主に RHEL 系ディストリビューションでの構成
各インターフェイスごとに以下のようなファイルが作られる。
- ifcfg-eth0
- ifcfg-enp3s0
- ifcfg-br0(ブリッジ)
- ifcfg-bond0(ボンディング)
など
これらのファイルに記述されている項目:
- IPアドレス
- ネットマスク
- ゲートウェイ
- DNSサーバ
- デバイス名
- オンボード
など
さいごに
実際にシステム上でインターフェイスを確認したい場合は、以下のようなコマンドが使えます。
# インターフェイス一覧表示
ip link show
# IPアドレス付きで表示
ip addr
# 管理下のデバイス一覧
nmcli device networmanager
# インターフェイスの情報表示()
ifconfig
Discussion