6.ネットワーク管理

Linuxのネットワーク管理に関して

6.1. ネットワークの設定

6.1.1. ネットワークデバイス

Linuxではネットワークデバイスを以下のような名称で扱う。 またネットワークインターフェースの確認にはifconfigコマンドで行える。

インターフェイス説明
eth01番目のEthernetインターフェイス
eth12番目のEtrernetインターフェイス
ppp01番目のPPPインターフェイス
loループバックインターフェイス

またネットワークインターフェースの命名規則は以下の通り。

種別説明
enイーサネット
wl無線LAN
ww無線WAN

ifconfigコマンド

ネットワークインターフェースの設定/確認が行えるコマンド。

ipconfig
ipconfig [インターフェース] [IPv4アドレス] netmask [サブネットマスク]
ipconfig [インターフェース] [ up | down ]

6.1.2. ARP

EthernetではIPアドレスではなくMACアドレスで通信を行う。そのためIPアドレスをMACアドレスに変換する仕組みであるARPを用いる。 取得したARP情報はARPキャッシュと呼ばれるテーブルに一定時間キャッシュされる。

ARPキャッシュテーブルの表示にはarpコマンドで可能。

arp [オプション]
オプション説明
-a [ホスト]指定したホストすべてのエントリを表示する
-f ファイル名ホスト名とMACアドレスの対応ファイルを読み込む
-nホスト名をIPアドレスを表示
-d ホスト指定したホストのエントリを削除
-i インターフェースネットワークインターフェースの指定
-s ホスト MACアドレスホスト名とMACアドレスの対応を書き込む

6.1.3. インターフェースの冗長化技術

ボンディング

ボンディングは複数のネットワークインタフェースを1つに束ねる技術のこと。 ボンディングによって帯域幅を増やしたり、1つのNICに障害が発生しても他のNICで運用できるようにインタフェースを冗長化できる。 なおLinuxカーネルにはbondingモジュールが標準で実装されている。

ボンディングではネットワークインタフェースを以下のように分類する。

  • マスターインタフェース … bondingで束ねられた仮想インタフェース
  • スレーブインタフェース … bondingを構成する個々の物理インタフェース
  • アクティブインタフェース … bonding構成の中で実際にパケットの送受信を行うインタフェース

ボンディングの設定例

ボンディングは以下のような設定を2つのマシンに設定する

  1. マスターインタフェースの追加
    • nmcli connection add type bond ifname bond0 con-name bond0 mode balance-rr
  2. スレーブインタフェースの追加
    • nmcli connection add type bond-slave ifname eth0 con-name bond-slave-eth0 master bond0
    • nmcli connection add type bond-slave ifname eth1 con-name bond-slave-eth1 master bond0
  3. マスターインタフェースにIPアドレスを設定
    • nmcli connection modify bond0 ipv4.method manual ipv4.addresses 192.168.1.1/24

なおmodeオプションでbondingポリシーを設定できる。

ポリシー説明
balance-rrラウンドロビンによる送信負荷分散
active-backup1つのスレーブインターフェースのみがアクティブでもう一つは障害時に切り替え
balance-xor宛先MACに基づいたハッシュによる送信の負荷分散
802.3adLACPによるリンクアグリゲーション
balance-tlbスレーブインターフェースの負荷に応じた送信負荷分散
balance-albスレーブインターフェースの負荷に応じた送受信負荷分散

6.1.4. ネットワーク管理コマンド

Linuxにおけるネットワーク設定/トラブルシューティングに使うコマンドをいくつか記載する。

pingコマンド

指定したホストにICMPパケットを送った際の反応を確認できる。 なおIPv6の場合はping6コマンドを使う。

ping [ホスト名] [IPアドレス]
オプション説明
-nホスト名を指定せずにIPアドレスを表示する
-c 回数指定した回数のみICMPパケットを送信する
-i 間隔指定した間隔ごとにICMPパケットを送信する
-s サイズ指定したパケットデータのサイズで送信する

tracerouteコマンド

指定したホストまでパケットが伝わる経路を表示するコマンド。 ネットワークの途中経路に障害がある場合、障害個所を特定できるコマンドといえる。

なお注意事項としてネットワーク経路上にICMPパケットを返信しないホストが存在する場合は適切な動作は期待できない。 なおIPv6の場合はtraceroute6コマンドを使う。

traceroute [ ホスト名 | ドメイン名 | IPアドレス ]
オプション説明
-i インターフェースネットワークインターフェースを指定する
-nホスト名をIPアドレスで表示する

mtrコマンド

pingやtracerouteなどのようにICMP等を使って通信の可・不可や経路などを確認することができるコマンド。

mtr -r [IPアドレス | ドメイン名]

tcpdumpコマンド

指定したネットワークインターフェースを監視し、そこに到達したデータをコンソールに表示するコマンド。 用途としては以下の通り。

  • 不審な挙動をしているプログラムのデータの送信先の調査など
tcpdump [オプション] [条件式]
オプション説明
-i インターフェース監視するインターフェース指定する
-s バイト数パケットから取り出すバイト数の指定
-X16進数とASCII文字で表示
-n名前解決せずに表示する(IPアドレスで表示)
-Nホストのドメイン名を表示しない
-l標準出力のバッファリング
-t時刻表示しない
-v詳細に出力
条件式説明
portポート番号の指定
tcpudp
src指定した送信元からのパケットを対象
dst指定した送信元へのパケットを対象

使用例は以下の通り。

# eth0の53ポートの通信を表示
tcpdump -nil eth0 port 53

netstatコマンド

ネットワーク機能に関する様々な内容を表示するコマンド。 引数なしで実行すると、Active接続とActiveなUnixドメインソケット情報(ローカルホストのプロセス間通信)を表示する。

netstat [オプション]
オプション説明
-aすべてのソケットを表示
-c状況を1秒ごとにリアルタイムで定期的に表示する
-iネットワークインターフェースの統計を表示
-l接続待ち状態にあるソケットのみ表示する
-nアドレスやポートを数値で表示
-pPIDとプロセスの表示
-rカーネルのルーティングテーブルの表示
-tTCPを表示
-uUDPを表示

ssコマンド

netstat互換のコマンド。機能はnetstatコマンドとほぼ同じ。

ss [オプション]
オプション説明
-aすべてのソケットを表示
-nアドレスやポートを数値で表示
-pPIDとプロセスの表示
-rホスト名の解決
-tTCPの表示
-uUDPの表示
-4IPv4のみを表示
-6IPv6のみを表示

ncコマンド

ncコマンドはTCP/UDPを使ったネットワークの通信を行うコマンド。 ポートスキャンや通信状態の確認が可能。

nc [ ホスト名 | IPアドレス ] [ポート番号]

なおオプション-vzを指定することでポータ範囲の指定とポートスキャンが可能。 なおudpの場合はuを追加する。

ipコマンド

ネットワークインターフェース、ルーティングテーブル、ARPテーブルの管理ができるコマンド。 ipconfig, route, arpコマンドの統合した操作が可能。

ip [オプション] [操作対象] [コマンド] [デバイス]
オプション説明
-sステータスの表示
-r名前解決して表示
-f inet/inet6プロトコルファミリの指定
操作対象説明
linkデータリンク層
addrIPアドレス
routeルーティングテーブル
neighARPキャッシュ
コマンド説明
show指定した対象の情報表示
add指定した対象にパラメータ指定
del指定した対象のパラメータ削除

使用例は以下の通り。

# IPアドレスの設定
ip addr add 192.168.11.1/24 dev eth0
# GWをルーティングテーブルに追加
ip route add 10.0.0.1/16 via 192.168.11.254
# DGWの設定
ip route add default via 192.168.11.100

6.1.5. ルーティングの設定

Linuxにおいてルーティングテーブルの操作行う場合はrouteコマンドを使用する。 引数なしで実行するとルーティングテーブルが表示される。

routeコマンド

route [オプション]
route [add | del] [-host|-net] [ターゲット] [network ネットマスク] [gw ゲートウェイ] [[dev] デバイス]
オプション説明
-nホスト名の解決をしない
-Fカーネルのルーティングテーブルを表示する
-Cカーネルのルーティングキャッシュを表示する

routeコマンドを引数なしで実行すると以下のようにパラメータが表示される。

Destination # 宛先ネットワーク/ホスト
Gateway # ゲートウェイアドレス
Genmask # 宛先ネットマスク
Flags # 経路情報(U:経路が有効 H:宛先はホスト G:ゲートウェイを使用 !:経路は無効)
Metric # 宛先までの距離
Ref # ルートの参照数
Use # 経路の参照回数
Iface # この経路を使うネットワークインターフェース

6.1.6. 無線ネットワークの設定

無線LANの主な規格は以下のようなものがある。

規格周波数帯域幅伝送速度
IEEE802.11a5.2GHz54Mbps
IEEE802.11b2.4GHz11Mbps
IEEE802.11g2.4GHz54Mbps
IEEE802.11n2.4GHz/5GHz600Mbps
IEEE802.11ac5GHz433Mbps~7Gbps

なお無線LANのセキュリティ方式にはWEPWPAがある。

  • WEP … RC4アルゴリズムで通信を暗号化する(脆弱性あり)
  • WPA … TKIPやAESなどの暗号方式やIEEE802.1x認証などから構成される、AESの方がセキュリティ強度が高い

iwconfigコマンド

WLANの設定や状態を確認するコマンド。

iwconfig [wlanN] [essid ESSID] [key [s:]WEPキー]

なおWPA/WPA2の場合は、Wpa_passphraseコマンドで設定ファイルを作成する。

wpa_passphrase windsor wlan_no_passphrase ] ファイル名.conf

作成した上記ファイルは/etc/wpa_supplicant以下に保存する。 接続はwpa_supplicantコマンドで行う。

iwコマンド

無線インターフェースの情報を参照/設定することができるコマンド。

iw dev [デバイス名] [コマンド] # インターフェースに関する表示設定を行う
iw phy [デバイス名] [コマンド] # デバイスに関する表示設定を行う
devのコマンド説明
link接続状況の表示
scan接続可能なAPをスキャン
connectdisconnect
phyのコマンド説明
interface adddel
info暗号化や周波数の使用可能状況の表示

iwlistコマンド

無線インターフェースの情報を取得できるコマンド。

iwlist 無線インターフェース パラメータ
パラメータ説明
scanningscan [essid ID]
channel設定可能なチャネルを表示
rate伝送速度の表示

6.2. 高度なネットワークの設定/トラブルシューティング

6.2.1. ネットワーク関連のファイル

Linuxのネットワーク関連の設定ファイルに関して記載する。

/etc/hostname

ホスト名を記載する設定ファイル。

/etc/hosts

ホスト名とIPアドレスの対応表を記述するファイル。 記述方法は以下の通り。

# IPアドレス  ホスト名 ホスト名の別名

/etc/networks

ネットワーク名とネットワークアドレスの対応表を記述するファイル。 デフォルトでは未記載。

# ネットワーク名 ネットワークアドレス

/etc/nsswitch.conf

名前解決の問い合わせ順序を記述するファイル。 名前解決の手段は以下の通り。

  • /etc/hostsファイルの使用
  • DNSサーバの使用
  • LDAPサーバの使用

/etc/resolve.conf

問い合わせ先のDNSサーバやドメイン名の設定を記述するファイル。

/etc/sysconfig/network

ネットワーク機能の使用/不使用、ホスト名、デフォルトゲートウェイなどの設定を記述する。 原則RHELL系で使用される

なおRHEL7/CentOS7系以降ではnmcliコマンドでの設定が推奨されている。 またIPv6はNETWORKING_IPV6で有効化できる。

/etc/sysconfig/network-scripts/

ネットワークデバイスの設定ファイルが設置されるディレクトリ。

/etc/network/interfaces

Debian系で使用されるネットワークデバイスの設定ファイルが設置されるディレクトリ。

6.2.2. NetworkManager

Linuxでネットワークを動的管理する仕組み。 設定ファイルを書き換えてもこのサービスにより書き換えられる可能性があるため、設定する際は無効化するかnmciコマンドで設定するといった方法が挙げられる。

6.2.3. TCPラッパ

ネットワークサービスに対するアクセス制御を行うプログラム。 デーモン名はtcpd、使用するライブラリはlibwrapとなる。

TCPラッパーには/etc/hosts.allow/etc/hosts.denyという2つの主要なファイルがある。 /etc/hosts.allowファイルでアクセス許可の設定を行い、/etc/hosts.denyファイルでアクセス拒否の設定を行う。

なお設定ファイルの変更後は再起動しなくても設定は反映される。

これらのファイルの書式は以下の通り。

サービス名 : ホスト名|IPアドレス

具体的には以下のような形となる。

ALL : 192.168.10.0/255.255.255.0 : ALLOW
ALL : ALL : DENY

6.2.4. ネットワークのトラブルシューティング

ネットワークが正常につながらない場合

確認事項は以下の通り。

  1. pingによる疎通確認
  2. DNSサーバの稼働状況//etc/resolv.confの確認
  3. routeによるルートテーブルの確認

上記でうまくいかない場合はtraceroutemtrによる経路確認も行う。

パケット転送許可

Linux OSをルータとして機能させる場合はカーネルパラメータのnet.ipv4.ip_forwardを1にすることでパケット転送を有効化できる。 IPv4の場合は以下で可能。

sysctl -w net.ipv4.ip_forward=1

6.2.5. その他のネットワークのコマンド

nslookupコマンド

DNSでホスト名とIPアドレスを変換するコマンド。

nslookup

digコマンド

nslookupより詳細に行う。

hostnameコマンド

自身のホストに関する詳細を調べられるコマンド。

hostname [オプション]
オプション説明
なしホスト名を表示
-dDNSドメイン名の表示
-iIPアドレスを表示
-fFDQNを表示(完全修飾ドメイン名を表示)
-aエイリアスを表示

nmapコマンド

詳細が不明なネットワークの構造を調査したり、セキュリティ上の問題がないかを検査する目的で、ネットワークのスキャンを行うことができるコマンド。

nmap [スキャンタイプ] [オプション] 対象
スキャンタイプ説明
-sTTCPスキャン
-sUUDPスキャン
-sPPingスキャン
オプション説明
-p対象ポート範囲の指定
-F有名ポートを対象に高速スキャン
-O対象ホストのOS識別を行う
最終更新 2025.01.19: Added ss command (683d062)