ネットワーク機器操作マニュアル

10 分で読了
このページの目次

interface・address・route・neighbor・DNS・service の順に原因を絞る。管理主体を確認して設定を変更する。遠隔ホストのアドレス・既定経路変更には復旧接続を確保する。

やりたいこと参照先
全く接続できない層別診断
出口・DNS が違うroute と policy
interface・Wi-Fi 設定一時設定と永続設定

インターフェースとリンク状態を確認する

# インターフェースとフラグを短形式で表示する
ip -br link

enp1s0 は実際の名前に置き換える。UP は管理状態、LOWER_UP は下位層の状態を示す。

# IPv4/IPv6 アドレスとプレフィックスを確認する
ip -br address

scope・有効期間は ip address show dev enp1s0 で詳しく見る。アドレス不足と経路不足は別の障害。

# 同じインターフェースのエラー・drop 累計を読む
ip -s link show dev enp1s0

同じ負荷で時間を空けて差分を見る。起動後累計を今回の損失と誤認しない。

# 物理リンクの速度・duplex・carrier を確認する
ethtool enp1s0

仮想インターフェースでは未対応の場合がある。詳細は ethtool -S とカーネルのリンクリセットログを照合し、項目はドライバーごとに解釈する。

観測意味次の確認
UP / LOWER_UP管理上 UP と下位 carrier は別carrier なしなら配線・switch・交渉。仮想機器は別解釈
IP addressaddress だけでは出口は不明prefix・取得元・期限・route get
RX/TX errors, drops累積値は現在の率ではない同負荷で増分と driver 固有値を比較

宛先への実経路を kernel に尋ねる

カーネルが選ぶ経路を問い合わせる

# IPv4 の宛先への選択経路を調べる
ip route get 1.1.1.1

dev・via・src を読み、実際の宛先に置き換える。IPv6 は ip -6 route get で別途確認する。

# どのテーブルを選ぶか決める policy rule を読む
ip rule show

優先度と条件を読む。VPN・送信元・mark も影響する。テーブル本体は別途調べる。

# 各テーブルの実際の経路を確認する
ip route show table all

default があっても利用されるとは限らない。route get と照合する。

# 次ホップの ARP/NDP 状態を確認する
ip neigh show dev enp1s0

FAILED/INCOMPLETE は解決未完了を示す。STALE は通常 flush せず、通信して変化を見る。

名前解決と待ち受けを分けて確認する

# システム NSS 経由で宛先名を解決する
getent ahosts example.com

systemd-resolved なら resolvectl status でリンク別 DNS・routing domain を確認する。getent は hosts も利用し、dig とは異なる。

# サービス側ホストの TCP/UDP 待ち受けを確認する
ss -lntup

-l は待ち受け、-n は数値、-t/-u はプロトコル、-p は権限内のプロセス情報。ループバックだけでは外部宛先の要求を直接受けない。

dev・via・src を確認する。policy rule が先に table を選び、その中で最長 prefix を使うため main の default だけでは不十分。STALE は通常再確認待ち。DNS 成功は port 待受けを、ping 失敗は全通信不可を意味しない。

ローカルから遠隔 service への確認点 address / source policy → route table next hop / neighbor firewall → service

障害層を区別できるテストを選ぶ

# 確認した次ホップの ICMP 応答を調べる
ping -c 3 192.0.2.1

実際の gateway に置き換える。フィルターで応答しない場合もあるため業務プロトコルも確認する。

# 探測経路と path MTU を調べる
tracepath 1.1.1.1

探測と業務のポリシーが異なる場合がある。応答しない hop が業務パケットを落としているとは限らない。

# DNS・TCP・TLS・HTTP の到達段階を確認する
curl -v --connect-timeout 5 https://example.com/

接続タイムアウトは接続段階のみ。全体は --max-time を使う。最後に成功した段階を読み、証明書エラーを経路障害と混同しない。

# 対象ホストの HTTPS TCP 通信だけを取得する
sudo tcpdump -ni enp1s0 'host 192.0.2.10 and tcp port 443'

-n は逆引きをせず、-i はインターフェース指定。一度再現し SYN・応答・再送を確認して Ctrl-C で終了する。保存が必要なら専用ファイルへ -w する。

gateway と宛先を置き換え、SYN 送信・応答・再送・interface を見る。全 timeout を DNS 原因としない。/proc/net/dev は機器統計、softirq は /proc/softirqs。

試験 interface に一時 address を一つ追加するなら ip address add 192.0.2.10/24 dev enp1s0、解除は対応する del を使い全 flush を避ける。文書用 subnet を置き換え競合を確認する。永続化は次節の管理主体で行う。

interface の設定主体を一つにする

管理元を先に特定する

# NetworkManager の状態と接続名を確認する
nmcli device status

systemd-networkd 管理なら networkctl status enp1s0 の Network File を読む。同じインターフェースを二重管理しない。

# active インターフェースと profile 名・UUID を照合する
nmcli connection show --active

YOUR_PROFILE はここで取得する。空白は引用し、同名なら UUID を使う。

# 保存された profile と実効値を読む
nmcli connection show 'YOUR_PROFILE'

method・アドレス・gateway・DNS・経路を記録し、profile ファイルを制限付きでバックアップする。場所は nmcli -f NAME,UUID,FILENAME connection show で確認する。

テスト用インターフェースに一時アドレスを追加する

# 重複なしと確認したテストアドレスを一つ追加する
sudo ip address add 192.0.2.10/24 dev enp1s0

一時的なカーネル状態。ip address show と同一サブネットへの通信で検証する。管理器や DHCP に上書きされ得る。

# テスト後、今回追加したアドレスだけを削除する
sudo ip address del 192.0.2.10/24 dev enp1s0

後で行う復元で、add 直後に続けるものではない。インターフェース全体を flush しない。

NetworkManager の DNS を永続変更する

# 確認した DNS を profile に保存する
sudo nmcli connection modify 'YOUR_PROFILE' ipv4.ignore-auto-dns yes ipv4.dns '192.0.2.53'

到達可能で分割 DNS 方針に合う値に置き換える。ipv4.dns の置換と自動 IPv4 DNS の無視を行う。IPv6 は別設定として確認する。

# 再適用可能な変更をインターフェースへ反映する
sudo nmcli device reapply enp1s0

失敗は再起動の指示ではない。必要なら復旧接続を確保して connection up する。実効 DNS と名前解決を確認し、戻すときは元の値を再適用する。

Wi-Fi の検索と接続を分ける

# SSID・信号・セキュリティを確認する
nmcli device wifi list

非公開 SSID・企業認証・複数無線 NIC では設定と対象を明確にする。

# 認証情報を対話入力し、選んだネットワークへ接続する
nmcli --ask device wifi connect 'YOUR_SSID'

--ask は資格情報を引数に残さない。成功後に IP・route get・実通信を確認する。

VLAN:親とスイッチ設定を合わせる

未管理のテスト用インターフェースでの一時 VLAN 例。現在の SSH 経路には使わない。親リンクとスイッチの VLAN 100 許可を確認し、アドレスを置き換える。

# 親に VLAN 100 の子インターフェースを作る
sudo ip link add link enp1s0 name enp1s0.100 type vlan id 100

ip -d link show で親と ID を確認してからアドレスを設定する。

# VLAN のアドレスを子に設定する
sudo ip address add 192.0.2.10/24 dev enp1s0.100
# 子を有効にし、VLAN 内の隣接・業務通信を試す
sudo ip link set dev enp1s0.100 up

テスト後は ip link delete enp1s0.100 で今回の子を削除する。永続化は選んだ管理器の VLAN profile で行う。

bridge:L3 アドレスは bridge に置く

業務アドレスのない予備 enp2s0 と新規 br-test の例。現用 IP・既定経路の移行はコンソールと別の移行計画が必要。

# 一時的な L2 bridge を作る
sudo ip link add name br-test type bridge
# 予備ポートを bridge に接続し、ポート自体に業務 IP を置かない
sudo ip link set dev enp2s0 master br-test

bridge link show で master を確認してからポートと bridge を有効にする。

# bridge ポートを有効にする
sudo ip link set dev enp2s0 up
# ポートの後に bridge を有効にする
sudo ip link set dev br-test up

IP なしは L2 の例。ホストの L3 アドレスは br-test に設定する。終了時はポートを nomaster で外し、br-test を削除して元のポート状態へ戻す。

管理主体を見分けるためのコマンドで、同一 interface を両方で管理する意味ではない。--ask で履歴に password を残さない。profile 名と機器名は別。再接続は SSH に影響し、一時 ip 設定は DHCP で上書きされ得る。

変更先に確認すること
一時 up/downip link set dev enp1s0 up。down は別実行
Linux bridgehost IP は通常 bridge、port は L2。IP 移動は旧経路を切る
VLAN親 interface・VLAN ID・trunk・subnet を合わせる
Wi-Fi 不安定信号・帯域・混雑・規制地域を確認。149 等を万能設定にしない

元の宛先で再試験し、再接続後の持続性も確認する。次の層は nftables・DNS・Tailscale。

iproute2 manuals · NetworkManager nmcli