データ復旧の情報工学研究所

Red Hat ENETUNREACH (101) 対策: “Network is unreachable” エラー発生時のルーティング再設定と接続対策編

最短チェック

ENETUNREACH(101)は「経路が無い」サイン――最小変更で切り分けて、接続を戻す

“外に出られない”は、DNSやFWではなく経路の欠落・選択ミスが原因のことが多いです。焦って大きく触るほど影響範囲が広がるので、短時間で争点を絞って、必要最小限の差分で復旧します。

1 30秒で争点を絞る

「宛先に対して、どのIFから、どの経路で出る想定か」を先に固定すると迷いが減ります。復旧は“経路の不足”を最短で特定して、最小変更に寄せます。

  • 到達できないのは「特定の宛先だけ」か「外向き全般」か
  • IFがUPでIPが付与されているか(リンク/アドレス/ゲートウェイ)
  • デフォルトルートと優先度(メトリック)が想定どおりか
  • 送信元IPが変わっていないか(SNAT/複数NIC/VRF/名前空間)
# 確認例(状況把握に限定) ip -br link ip -br addr ip route show ip route get 1.1.1.1 nmcli -t dev status
2 争点別:今後の選択や行動

同じENETUNREACHでも、原因の層が違うと“効く手”が変わります。いきなり再起動や全体反映に寄せず、差分が小さい順に確認していくと安全です。

ケースA:デフォルトルート不在/想定外のゲートウェイ

# 選択と行動(確認例)
ip route show
ip route show default
ip route get 1.1.1.1
nmcli -g IP4.GATEWAY,IP4.ADDRESS dev show 
nmcli -f NAME,UUID,DEVICE connection show

ケースB:IFがDOWN/IP未付与/DHCP更新で崩れた

# 選択と行動(確認例)
ip -br link
ip -br addr
nmcli dev status
journalctl -u NetworkManager -b --no-pager | tail -n 80
cat /etc/resolv.conf

ケースC:VRF/ポリシールーティング/複数NICで“出ていく経路”が違う

# 選択と行動(確認例)
ip rule show
ip route show table main
ip route show table all
ip route get  from 
ip -d link show

ケースD:コンテナ/名前空間(ホストは正常でも中が出られない)

# 選択と行動(確認例)
ip netns list
nsenter -t  -n ip route
podman network ls
kubectl -n  exec  -- ip route
3 影響範囲を1分で確認

“直す”より先に「どこまでが壊れているか」を押さえると、最小変更にしやすく、説明もしやすくなります(役員・上司への報告にも効きます)。

  • 同一ホスト内で、宛先サブネット別に差があるか(社内/社外/特定VPCなど)
  • 送信元IPが変わっていないか(SNAT/複数アドレス/VRF)
  • “一時復旧”が本番接続に波及しないか(管理NW・監視・バックアップ)
  • ログに痕跡が残る操作範囲が妥当か(監査要件・運用手順)
# 確認例(影響範囲の把握) ip route get <DEST_IP> ping -c 1 <GATEWAY_IP> ip -s link journalctl -b --no-pager | tail -n 120

失敗するとどうなる?(やりがちなミスと起こり得る結果)

  • ネットワーク全再起動で既存セッションが切れ、復旧より影響の説明が重くなる
  • デフォルトルートの上書きで管理系ネットワークまで巻き込み、遠隔復旧が難しくなる
  • メトリックやテーブルの混在を放置して、直ったように見えて再発する
  • FW/SELinux側に飛び火して設定が散らかり、監査・引き継ぎコストが増える

迷ったら:無料で相談できます

  • 原因がルーティングかDNSか、切り分けに迷ったら。
  • NetworkManagerの変更が本番に波及しないか迷ったら。
  • VRF/ポリシールートの整合が取れているか診断ができない。
  • クラウドルートとOS側の経路の優先関係で迷ったら。
  • 復旧を急ぐほど、最小変更の線引きに迷ったら。
  • 監査ログに残る操作範囲の設計ができない。
  • 共有ストレージやコンテナ、本番データ、監査要件が絡み、権限を触る前に迷ったら。

状況整理と原因の当たりを早く付けたいときは、情報工学研究所へ無料相談も選択肢です。

詳しい説明と対策は以下本文へ。

もくじ

【注意】 ENETUNREACH(101)は「到達経路(ルーティング)が成立していない」状態を示すことが多く、闇雲な再起動や設定変更は影響範囲を広げて復旧を長引かせます。自己判断で“修理”や復旧作業を進めず、本番・監査・共有基盤・顧客影響が絡む場合は株式会社情報工学研究所のような専門事業者に相談する判断が、結果的に早い沈静化と被害最小化につながります。

 

第1章:冒頭30秒の初動――“やるべきこと”を固定して、現場を沈静化する

Red Hat環境で突然「Network is unreachable」が出ると、現場は一気に空気が張り詰めます。特にレガシーな既存システムほど、止められない事情(夜間バッチ、基幹連携、監視・バックアップ、対外API)が複雑に絡みます。ここで重要なのは、まず“直す手”ではなく“状況を沈静化させる順番”を固定することです。いきなりネットワーク全体を再起動したり、FWやDNSへ飛び火させたりすると、説明責任だけが増えていきます。

ENETUNREACH(101)は多くの場合、「宛先へ行く道が選べない/道が存在しない」ことが核心です。だからこそ初動では、どの層が争点か(ルート欠落か、IFの不整合か、ポリシールーティングか、名前空間か)を短時間で絞り込み、最小変更でダメージコントロールする方が安全です。


症状 → 取るべき行動(安全な初動ガイド)

症状(観測) まずやること(安全優先) やらないこと(被害拡大防止)
特定の宛先だけ到達できない 宛先IPを固定し、ip route getで経路選択を確認。送信元IPも合わせて記録。 ネットワーク全再起動、FW全開放、DNS設定の大変更。
外向き全般が到達不能(疎通が“外”に出ない) デフォルトルートとゲートウェイの有無を確認。IFがUPか、IPが付与されているかを同時に確認。 原因未確定のままルーティングを大量に追加・削除。
ホストはOKだがコンテナ/Podだけ出られない 名前空間の経路表を確認(ホストの経路と別物として扱う)。CNI/ブリッジ/iptablesの関係を整理。 ホスト側のルートを“勘”で変更して巻き込む。
複数NIC/VRF/ポリシールートがある ip rule / 各テーブルのrouteを確認し、“どの条件でどの表が使われるか”を記録して整理。 運用手順なしでポリシーを統合・削除して軟着陸を崩す。

30秒で取るログ(“直す前”の保存)

まずは現状のスナップショットを残します。後から原因が見えたとき、説明と再発防止に使える材料になります。ここでの目的は“変更”ではなく“把握”です。

  • IF状態とアドレス:ip -br link / ip -br addr

  • 経路表:ip route show / ip rule show

  • 宛先を固定した経路選択:ip route get <宛先IP>(送信元も必要なら指定)

  • NetworkManager状態:nmcli dev status / nmcli connection show

  • 直近ログ:journalctl -u NetworkManager -b(末尾中心で十分)

この段階で「復旧のために一気に設定を変える」方向へ行くと、手戻りが増えやすいです。まず場を整え、争点を固定し、影響範囲を見積もってから“最小変更”に入る方が、結果として早い収束につながります。


依頼判断(今すぐ相談に寄せた方が早い条件)

  • 本番・監視・バックアップ・認証基盤など、止められない重要経路が絡む。

  • 共有ストレージ、コンテナ、仮想化、クラウド経路、監査要件が絡み、どこまで触ってよいか線引きが難しい。

  • 複数NIC、VRF、ポリシールーティングがあり、経路の“見た目”と“実際の出口”が一致しない疑いがある。

  • 変更の影響が読めず、現場・上司・役員への説明が先に必要になっている。

個別案件では、契約・監査・構成・運用の前提が絡みます。一般論だけで“この操作なら安全”と言い切れない場面ほど、株式会社情報工学研究所への相談・依頼を検討する方が、被害最小化と説明コスト削減の両方に効きます。

問い合わせフォーム:https://jouhou.main.jp/?page_id=26983

電話:0120-838-831

 

第2章:ENETUNREACH(101)の意味――DNSでもFWでもなく「経路が成立しない」合図

ENETUNREACH(101)は、アプリケーションから見ると単なる“つながらない”に見えますが、OS内部では比較的はっきりした意味を持ちます。Linuxカーネルが宛先へ送るべきパケットの経路を決められない、または選択された経路が成立しないと判断したときに返る代表的なエラーです。つまり、DNSが名前解決できない問題(名前が引けない)や、FWが拒否している問題(拒否・破棄)と、争点が異なる可能性が高いということです。

ここを取り違えると、「DNSを疑って時間が溶ける」「FWをいじって関係ない穴が増える」といった“ノイズカットできない対応”になりがちです。まずは経路選択(ルーティング)を中心に事実を積み上げる方が、現場の温度を下げやすくなります。


よく混同されるエラーとの違い(到達不能の“種類”を揃える)

見える症状 代表的な原因層 まず確認する事実
ENETUNREACH / Network is unreachable ルーティング(デフォルトルート欠落、ポリシールート不整合、IF/ゲートウェイ矛盾) ip route / ip rule / ip route get の結果が想定どおりか
名前解決できない(ホスト名が引けない) DNS/名前解決(resolv.conf、DNS到達性、検索ドメイン) 宛先をIPで試すとどうなるか、resolv.confの内容はどうか
タイムアウト(待っても返らない) 経路途中の遮断・破棄、ACL、経路非対称、MTU問題など 疎通のどこで止まるか(ゲートウェイまで届くか等)
拒否(Connection refused 等) サービス未待受、ポート閉、アプリ層の拒否 到達はしている前提で、待受/ポート/プロセスを確認

“経路が無い”が起こる典型パターン

ENETUNREACHは、単に「ルートが見当たらない」だけではなく、選択ロジックを含めた“実際に使われる道”が成立しないときに表面化します。Red Hat系の運用では、次のような崩れ方が多く見られます。

  • デフォルトゲートウェイが消えている、または別IFのゲートウェイが優先されてしまう(メトリックの逆転を含む)。

  • DHCP更新や接続プロファイル変更で、IPは残っているのに経路だけが期待と違う形に置き換わる。

  • ip rule(ポリシールーティング)で別テーブルが選ばれているが、そのテーブルに宛先へのrouteが無い。

  • VRFやコンテナ名前空間の中では、ホストの経路表がそのまま使えず“別世界”になっている。

この段階で重要なのは、原因を断定することではなく、争点を「経路選択のどこが成立していないか」に寄せることです。そこが揃うと、以降の確認が“穴埋め”ではなく“一本道”になります。


最小変更へつなぐ観測(直す前に“出口”を確定する)

具体的には、同じ宛先に対して「どのIFから出るはずか」「送信元IPは何になるはずか」を一度固定します。ip route getは、Linuxがどの経路を選ぶかの手掛かりになります。ここで“想定外のIF”や“想定外の送信元”が出てくる場合、問題はDNSやFWではなく、ルーティング・優先度・ポリシーの側に寄っていきます。

一方で、現場の制約として「いま触れるのは最小限」「復旧を急ぐが監査もある」といった条件が多いはずです。ここで無理に大きな変更へ踏み込まず、次章のように“壊さず採取→小さく戻す”の順で進めることが、軟着陸しやすい現実的な道になります。

 

第3章:ルーティング再設定の前に――現状採取で“手戻り”に歯止めをかける

ENETUNREACHの復旧で難しいのは、原因が1つとは限らない点です。たとえば「DHCP更新でデフォルトルートが消えた」ことに加え、「別IFのメトリックが低くて想定外に優先されている」「ポリシールートが古い前提のまま残っている」といった複合事故が、運用が長い環境ほど起こりやすくなります。だからこそ、復旧の速度と品質を両立するには、最初に“採取の型”を決めておくことが効きます。

採取の目的は、あとで原因を説明できるようにすることと、誤った方向へ走り出すリスクを減らすことです。現場の体感では「直したい」のが先に立ちますが、短い採取で場を整えると、結果として収束が早くなります。


採取するべき情報(Red Hatでよくズレる交点を押さえる)

Red Hat系では、NetworkManagerが中心に動いている環境が多く、設定が“ファイル”と“接続プロファイル”の両面に存在します。ここがズレると、見た目は正しくても次の再起動や再接続で元に戻り、再発しやすい構造になります。採取では、そのズレを見える化します。

  • 経路と優先度:ip route show(defaultの有無、metric、複数defaultの併存)

  • ポリシールーティング:ip rule show(どの条件でどのtableが選ばれるか)

  • 経路選択の実結果:ip route get <宛先IP>(必要ならfromで送信元を固定)

  • NetworkManagerの状態:nmcli dev status / nmcli connection show(どの接続がどのIFに紐づくか)

  • 接続ごとのIP設定:nmcli -f ipv4.method,ipv4.addresses,ipv4.gateway,ipv4.routes,ipv4.route-metric connection show <接続名>

  • ログ:journalctl -u NetworkManager -b(接続切替、DHCP更新、ルート適用の痕跡)

この採取が揃うと、「どの出口(IF)に出ようとして失敗しているか」「どのテーブルでrouteが欠けているか」が説明可能になります。逆にこの材料がないまま変更に入ると、復旧しても“何を直したか分からない”状態になり、次の障害で同じ議論が過熱します。


“一時復旧”と“永続化”を分けて考える(軟着陸の設計)

現場では「今すぐ通信を戻す」要請が強い一方で、永続設定の変更には監査や承認が必要なことがあります。ここで大切なのは、一時的に成立させる手段と、恒久的に保つ手段を混ぜないことです。混ぜると、いったん戻った後に再起動や再接続で元に戻り、再発として扱われます。

たとえば、カーネルの経路表に追加したルートは即時に効きますが、接続プロファイルに反映しない限り“再現性のある復旧”にはなりません。一方で、プロファイル変更は将来の安定に効きますが、適用の瞬間に影響が出る可能性もあります。だからこそ、採取に基づいて「いま必要な最小の一時措置」と「承認後に行う永続化」を切り分けることが、ダメージコントロールとして合理的です。


判断が難しいときの考え方(一般論の限界を先に認める)

ここまでの話は“型”として有効ですが、個別の案件では、ネットワーク構成(オンプレ/クラウド/拠点間VPN)、運用(冗長化、監視、変更管理)、契約(SLA、監査)によって、触ってよい範囲と順番が変わります。一般論だけで進めるほど、後から「その変更は誰が承認したのか」「影響範囲はどこまでか」という社内調整が重くなりがちです。

迷いがある段階で相談できると、場を整え、収束に向かう道筋を短くできます。共有ストレージ、コンテナ、本番データ、監査要件が絡む場合は、無理に権限や設定を触る前に株式会社情報工学研究所のような専門家へ相談すると、早く収束しやすいです。

問い合わせフォーム:https://jouhou.main.jp/?page_id=26983

電話:0120-838-831

 

第4章:経路表の読み方が9割――ip route/ip ruleで“実際に使われる道”を特定する

ENETUNREACH(101)の切り分けは、「経路表を見た」だけでは終わりません。現場でハマりやすいのは、経路表そのものは“それっぽく”見えるのに、実際の送信では別の出口が選ばれてしまい、結果として到達経路が成立しないケースです。ここで必要なのは、見た目の一覧ではなく、OSが“どの道を採用するか”という選択結果に寄せて事実を積み上げることです。場を整え、議論が過熱しないようにするには、「この宛先には、このIF、この送信元、このゲートウェイ」を言語化できる状態が近道になります。


ip routeの基本:まず「最長一致」と「デフォルト」を同じ視点で見る

Linuxの経路選択は原則として、宛先プレフィックスの最長一致(より具体的な経路が優先)に寄ります。たとえば、デフォルトルートがあっても、特定サブネット向けの静的ルートが存在すれば、それが優先されます。ここが理解できると、「デフォルトはあるのに特定宛先だけENETUNREACH」という現象が自然に説明できます。

ip route showの出力は短いですが、運用上は読み取るべきポイントが決まっています。

項目 読みどころ
default via default via 192.0.2.1 dev eth0 metric 100 外向き全般の“最後の道”。複数ある場合はmetricの優先が争点になりやすい。
宛先プレフィックス 10.10.0.0/16 dev eth1 特定宛先だけ到達不能のとき、ここに欠落や誤りがあることが多い。
dev dev eth0 出口IF。想定外のIFが選ばれると、送信元IPやゲートウェイもズレやすい。
proto proto dhcp / proto static どこから入った経路かの手掛かり。DHCP由来は更新・切替で崩れやすい。
metric metric 100 同じ宛先範囲の候補が複数あるときの優先度。逆転が“突然”を作る。
src src 192.0.2.10 送信元IPの候補。送信元が変わると戻り経路やACLで不整合が出やすい。

ip route getが“答え合わせ”になる:一覧より選択結果を優先する

経路表を眺めるだけでは、「実際にどれが選ばれるか」が曖昧に残ります。ip route getは、特定宛先に対してOSがどう判断するかを一行で示し、議論の温度を下げるのに役立ちます。とくに複数NIC、複数デフォルト、静的ルートとDHCPルートの混在がある環境では、一覧よりも先に“選択結果”を確定させた方が、沈静化しやすいです。

ip route get <宛先IP> ip route get <宛先IP> from <送信元IP>

ここで注目するのは、via(ゲートウェイ)dev(出口IF)、そして必要に応じてsrc(送信元)です。ENETUNREACHが出ている場合、route getの時点で「到達できる経路が選べない」状態が見えることがあります。逆に、route getで“道”が示されるのに到達できない場合は、経路途中の遮断や非対称、名前空間側、あるいは別レイヤーに争点が移っている可能性が出てきます。


ip rule(ポリシールーティング):見える経路と実際の出口がズレる伏線

ip ruleは「どの条件で、どの経路表を参照するか」を決めます。複数の運用要件(管理系と業務系、拠点間VPN、特定通信だけ別回線、監査要件で送信元固定など)が積み重なると、ip ruleが追加され、テーブルが増えます。すると、mainテーブルにデフォルトルートがあっても、実際には別テーブルが選ばれていて、そのテーブルにはデフォルトが無い、という形でENETUNREACHが表面化します。

ip rule show ip route show table main ip route show table all

ip ruleの出力は上から順に優先度(priority)で処理されます。ここで重要なのは、「どのruleが当たっているか」を宛先・送信元とセットで想像ではなく確認することです。送信元を固定したroute getを併用すると、「この通信はこのテーブルを見に行っている」という筋道が作れます。筋道が立つと、復旧は“場当たり的な追加”ではなく、“欠けている経路の穴埋め”として整理できます。


最小変更につなぐまとめ:まず“現状の出口”を一意にする

第4章の結論はシンプルで、経路表の一覧より先に、「この宛先への出口」をip route getで一意にしてから、欠落・逆転・混在を疑うのが効率的です。これをやると、「FWを触った」「DNSを触った」という議論のノイズが減り、必要最小限の修正で軟着陸しやすくなります。

ただし、ポリシールーティングや複数NICが絡む環境では、一般論だけで安全な変更幅を言い切れません。契約・監査・本番影響の条件が絡む場合は、株式会社情報工学研究所のような専門家に相談し、影響範囲と最小変更の線引きを先に固める方が、収束が早くなりやすいです。

問い合わせフォーム:https://jouhou.main.jp/?page_id=26983

電話:0120-838-831

 

第5章:よくある崩れ方――デフォルトゲートウェイ消失・メトリック逆転・DHCP更新の罠

ENETUNREACH(101)の原因は多岐に見えますが、現場で繰り返し出会う“崩れ方”にはパターンがあります。パターンを押さえると、切り分けの速度が上がり、無駄な変更に歯止めがかかります。ここでは、Red Hat系の運用で頻発する3つの罠を中心に、観測のポイントと最小変更の考え方を整理します。


パターンA:デフォルトゲートウェイの消失(外向きが一斉に落ちる)

外向き通信がまとめて不達になり、「Network is unreachable」が広範囲で出るとき、まず疑うべきはデフォルトルートの欠落です。とくにDHCP環境や、接続プロファイルが複数ある環境では、リンクはUPのままでもデフォルトだけが消えることがあります。アプリから見ると“全滅”に見えますが、OSとしては「どこへも出せない」状態なので、ENETUNREACHとして返るのは理屈に合います。

観測のコツは、「defaultが無い」ことを一点で断定するのではなく、IFの状態(link/addr)ゲートウェイ情報NetworkManagerの接続状態を同時に見ることです。これにより「物理・L2の問題」と「L3の経路問題」を分離し、議論を沈静化できます。

  • defaultの有無:ip route show default

  • ゲートウェイ情報:nmcli dev show <IF>(IP4.GATEWAY等)

  • リンクとアドレス:ip -br link / ip -br addr


パターンB:メトリック逆転(“つながるはず”の出口が変わる)

複数NICや複数回線があるサーバで起こりやすいのが、デフォルトルートが複数存在し、優先度(metric)が想定と逆になるケースです。運用上は、管理系ネットワークと業務系ネットワークが並立し、片方は監視・バックアップ用、もう片方は業務通信用という形が珍しくありません。このとき、優先度の逆転が起きると、送信元IPや出口IFが変わり、戻り経路やACLの整合が崩れて到達不能になります。

このパターンの厄介さは、「defaultは存在する」ため、単純な欠落チェックだけだと見落とす点です。だからこそ、ip route getで“実際に選ばれる出口”を確定し、想定と比較することがダメージコントロールになります。

観測 起こりがちな背景 確認の要点
defaultが複数あり、想定外のIFが選ばれる 新NIC追加、接続プロファイル追加、DHCP再取得でmetricが変化 ip route show default のmetric比較、ip route get のdev/via確認
送信元IPが変わり、特定宛先だけ不達 出口IF変更に伴いsrcが変化、戻り経路やACLが非対称化 ip route get のsrc、必要ならfrom指定で差分を見る

パターンC:DHCP更新の罠(IPは残っているのに経路だけが入れ替わる)

DHCPは便利ですが、更新タイミングで経路が置き換わり、想定していた静的ルートやデフォルトの前提が崩れることがあります。ログ上は“更新”としてしか見えず、現場感覚では「急に起きた」に見えます。ここで重要なのは、変更の痕跡を見つけて“事故の筋道”を作り、再発防止に繋げることです。

NetworkManagerのログ(journalctl)と、経路表のproto(dhcp/static)を組み合わせると、「いつ」「どの接続で」「どの経路が入れ替わったか」が見えやすくなります。復旧を急ぐほど、原因の説明が後回しになりがちですが、後から社内調整が重くなる環境ほど、最低限の痕跡は残しておく方が収束が早いです。

  • 経路の由来:ip route show の proto(dhcp/static)

  • 更新痕跡:journalctl -u NetworkManager -b(DHCP更新・接続切替の行を追う)

  • 接続設定の整合:nmcli connection show(gateway/route-metric/routes の差分確認)


“最小変更”の基本姿勢:一時措置→恒久化→再発防止の順で温度を下げる

現場の要請として「今すぐ戻す」は強い一方で、恒久化の変更には承認や監査が必要なことがあります。ここで混ぜてしまうと、復旧はしても「何を変えたか」「次にどう戻るか」が曖昧になり、後から議論が過熱します。だからこそ、まずは現状を採取して、影響範囲を見積もり、必要最小限の一時措置で通信を戻し、その後に接続プロファイル等へ恒久反映し、最後に監視・手順・変更管理で再発防止へ進む、という順序が軟着陸しやすいです。

ただし、デフォルトルートやメトリックの変更は、管理系ネットワークや遠隔復旧経路に波及する可能性があります。個別案件では、構成・契約・監査の前提が絡むため、一般論だけで安全域を断言できません。判断が難しい場合は、株式会社情報工学研究所への相談・依頼を検討し、影響範囲と変更幅の線引きを先に固める方が、結果として早い収束につながります。

問い合わせフォーム:https://jouhou.main.jp/?page_id=26983

電話:0120-838-831

 

第6章:Red Hat特有の交差点――NetworkManagerと設定のズレが“戻る障害”を作る

Red Hat系でのENETUNREACH対応が長引く理由のひとつに、NetworkManagerが“接続プロファイル”として設定を持ち、適用のタイミングや優先度が運用の積み重ねで複雑化している点があります。現場では、いったん通信が戻っても、再起動やリンク断・再接続で元に戻り、同じ障害が再燃することがあります。これは「直っていない」のではなく、恒久設定として整合していないことが原因であるケースが多いです。


ズレが起きる典型:接続が複数あり、意図しないプロファイルが有効化される

同じIFに対して接続プロファイルが複数存在し、運用中に追加されたものが優先されたり、再接続時に別のプロファイルが選ばれたりすると、ゲートウェイやメトリックが想定と変わります。見た目としては「設定はあるのに効かない」「戻ったはずなのにまた起きる」という形で現れ、現場の疲弊につながります。

ここでは、どの接続がどのIFに紐づいているかと、その接続が持つgateway/metric/routesを揃えて把握するのが第一です。把握が揃うと、“次に戻らない”方向へ進めます。

nmcli dev status nmcli connection show nmcli -f NAME,UUID,DEVICE,TYPE,AUTOCONNECT connection show

DHCP/静的の混在:methodの違いが経路の“採用”を変える

接続プロファイルでは、IPv4のmethod(auto/manual/disabled)が通信の前提を変えます。DHCPを前提にしているのに、別のプロファイルがmanualで固定値を持っていたり、逆に静的運用のはずがautoで再取得してしまったりすると、ルートの由来(proto)やメトリックが変わり、ENETUNREACHの伏線になります。ここは“正解の形”が環境ごとに違うため、一般論よりも現場の要件(管理系・業務系・監査・冗長化)を先に揃えることが重要です。


“戻らない復旧”のために:変更点を小さく、差分を言語化できる状態にする

NetworkManager周りは、変更を積み上げるほど説明が難しくなり、引き継ぎ時に事故が再燃しやすくなります。だからこそ、復旧局面では「最小変更」「影響範囲」「差分の説明可能性」を優先し、必要なら一時措置と恒久化を分離して進める方が、結果として現場が楽になります。

また、共有ストレージ、コンテナ、本番データ、監査要件が絡むと、ネットワークの小さな変更でも影響が大きくなり得ます。判断が難しい状況ほど、株式会社情報工学研究所のような専門家に相談し、現場の制約に合わせて“軟着陸できる復旧計画”を作る方が、収束と再発防止の両方に効きます。

問い合わせフォーム:https://jouhou.main.jp/?page_id=26983

電話:0120-838-831

 

第7章:複雑化の伏線――VRF・ポリシールーティングで“見える経路”と“出ていく経路”がズレる

ENETUNREACH(101)が厄介になるのは、単純なデフォルトルート欠落だけでなく、「経路の選び方」自体が複数の条件で分岐している環境です。拠点間VPN、監査要件での送信元固定、業務系と管理系の分離、特定宛先だけ別回線、といった運用上の要請が積み上がると、VRFやポリシールーティングが導入され、結果として“見える経路”と“実際の出口”がズレやすくなります。現場では「経路表にあるのに到達できない」「いつも通りに見えるのに突然出られない」という形で現れ、説明が難しくなっていきます。


VRFとポリシールーティングの違い:同じ“分離”でもトラブルの出方が変わる

両者はどちらも通信の分離や制御に使われますが、問題の見え方が違います。ENETUNREACHの切り分けでは、どちらの仕組みが働いているかを最初に言葉で揃えると、議論の温度が下がりやすいです。

観点 VRF ポリシールーティング(ip rule)
目的 ルーティング空間そのものを分離して、別ネットワークとして扱う 条件(送信元・宛先・マーク等)で参照する経路表を切り替える
ハマり方 「そのVRFにはデフォルトが無い」「VRF内だけ外へ出られない」 mainは正しくても、別テーブルが選ばれていて宛先経路が欠ける
現場の見え方 同じホストでも“経路が別世界”になり、比較が難しい 「経路表はあるのに…」が起きやすい(参照表が違う)

「どのテーブルを見に行っているか」を確定するのが歯止めになる

ポリシールーティングでは、どの通信がどのテーブルを参照しているかが分からないと、対策が“堤防を築く”どころか、水路を増やしてしまいがちです。ここでの要点は、経路表の一覧を眺めるより先に、宛先と送信元を固定して「OSがどの出口を選んでいるか」を確定することです。確定できると、欠けているのは“経路そのもの”なのか、“選択条件”なのかが整理でき、最小変更に寄せやすくなります。

特に多いのは、送信元IPが意図せず変わり、その送信元に対するruleが別テーブルへ振り分けているケースです。mainテーブルだけを見ても原因に届かず、現場の空気が張り詰めます。逆に、参照テーブルが見えた瞬間に「このテーブルにはデフォルトが無い」「この宛先の静的ルートが無い」といった“穴埋めポイント”が明確になります。


非対称と到達不能:戻り経路が成立しないと“到達できない”に見える

VRFやポリシールートでは、行きと戻りの経路が揃わない非対称が起こりやすくなります。行きは別回線、戻りは別の出口、という構成自体は要件としてあり得ますが、途中の機器(ACL、NAT、経路制御)や監視の前提が揃っていないと、結果としてアプリからは到達不能に見えます。ENETUNREACHは“送る道が決められない”寄りのエラーですが、現場では複合的な不整合の入口として現れることもあるため、ルーティングの分離がある環境ほど、経路の筋道を言語化しておくことが再発防止になります。


まとめ:一般論の限界が出る領域ほど、早めの相談が収束を早める

VRFやポリシールーティングは、要件を満たすために導入される一方、現場での切り分け難易度を上げます。ここで無理に“分離の前提”を崩すと、短期的に戻っても運用全体が不安定になり、次の障害で議論が過熱します。個別案件では、契約・監査・構成・既存の運用手順が絡むため、一般論だけで安全域を断言しにくい領域です。

迷ったときは、影響範囲を見積もったうえで、最小変更で軟着陸する道筋を作ることが重要です。共有ストレージ、コンテナ、本番データ、監査要件が絡む場合は、権限や設定を大きく触る前に株式会社情報工学研究所への相談・依頼を検討する方が、早い収束と被害最小化につながりやすいです。

問い合わせフォーム:https://jouhou.main.jp/?page_id=26983

電話:0120-838-831

 

第8章:コンテナ/仮想化で加速する誤解――名前空間・veth・CNIが“別世界の経路表”を作る

ホスト側の経路は整っているのに、コンテナやPodの中だけ「Network is unreachable」になる。あるいは、特定の仮想ネットワーク配下だけ疎通が崩れる。こうした事象は、コンテナ/仮想化の普及で珍しくなくなりました。ここでの落とし穴は、「ホストのip routeを見たから大丈夫」という思い込みです。コンテナはネットワーク名前空間によって“別のネットワーク世界”を持てるため、ホストの経路とコンテナ内の経路は一致しません。現場では、この前提のズレがノイズになり、対策の方向を誤らせます。


名前空間の基本:同じマシンでも“別の経路表”が存在する

Linuxではプロセス単位でネットワーク名前空間を切り替えられます。コンテナはこれを利用し、コンテナ内に独自のインターフェース、IPアドレス、経路表を持たせます。結果として、ホストにデフォルトルートが存在していても、コンテナ内にはデフォルトが無い、ということが起こり得ます。ENETUNREACHは、まさにその“別世界側”で経路が成立しないときに出ます。

ここで重要なのは、原因を「コンテナの不具合」や「アプリの不具合」と決めつけないことです。ネットワーク世界が分かれているなら、確認の対象も分ける必要があります。場を整えるためには、「ホスト側」「コンテナ側」「中間(ブリッジやCNI)」を切り分けて言語化し、どこで道が途切れているかを整理することが、議論の過熱を抑えます。


veth/ブリッジ/CNI:どこで“出口”が作られているかを揃える

コンテナネットワークでは、vethペア、Linuxブリッジ、iptables/nftables、そしてCNI(Kubernetes等)が組み合わさって通信経路を作ります。ここで起こりやすいのは、次のような“誤解の連鎖”です。

  • ホスト側のdefaultは正常 → だからネットワークは正常、という短絡。

  • コンテナ内のdefaultが無い → でもホストにあるから出られるはず、という思い込み。

  • CNIが作ったルールでSNAT/ルーティングが成立していない → しかし確認がホスト側のrouteだけで止まる。

対策を“穴埋め”として成立させるには、どのレイヤーで出口を作っているかを揃えます。たとえば、KubernetesではPod内の経路、Node側の転送、CNIのルール、クラスタ外への出口(NATや上位ルータ)までが連鎖します。どこか1箇所だけを“正しいはず”と決めると、誤った方向の変更が増え、収束が遅れます。


仮想化の前提:ゲストOSの経路問題に見えて、実は上位の制御が原因になることもある

仮想マシン(KVMやHyper-V等)でも似た構図があります。ゲストOS側ではENETUNREACHが出ていても、上位の仮想スイッチ、セキュリティグループ、ルートテーブル、あるいはVLAN設計が前提と合っていない場合、ゲストの設定だけを触っても軟着陸しません。逆に、ゲスト側の経路選択が想定とズレており、送信元や出口が変わって戻り経路と整合しないケースもあります。

ここでは「どのレイヤーが真の境界か」を揃えることが重要です。現場では、担当領域が分かれているほど社内調整が必要になり、議論が過熱しやすくなります。だからこそ、事実を積み上げ、どこまでがOSの責務で、どこからが上位の責務かを説明できる状態にすることが、被害最小化につながります。


まとめ:コンテナ/仮想化は“確認の対象”を増やす。一般論だけで押し切らない

コンテナや仮想化は、現場の生産性を上げる一方で、到達不能の原因点を増やします。ホストが正しいのか、名前空間が正しいのか、CNIが正しいのか、上位のネットワーク制御が正しいのか。どこかを想定で決めるほど、不要な変更が増え、収束が遅れます。

本番・監査・共有基盤が絡むと、ネットワークの小さな変更でも影響が大きくなり得ます。個別案件では、システム構成や契約前提で“触ってよい範囲”が変わるため、一般論だけで安全域を断定できません。迷ったときは、株式会社情報工学研究所への相談・依頼を検討し、影響範囲と最小変更の線引きを先に固める方が、収束を早めやすいです。

問い合わせフォーム:https://jouhou.main.jp/?page_id=26983

電話:0120-838-831

 

第9章:最小変更で復旧する――一時ルート→永続化→疎通確認を安全に積み上げる

ENETUNREACH(101)の復旧は、気持ちとしては「一気に直したい」方向に寄ります。しかし、レガシーで止められない環境ほど、全体を動かすほど影響範囲が広がり、説明責任が重くなります。だからこそ、ここでは“最小変更”を軸に、段階的に収束へ向かう手順の考え方を整理します。ポイントは、復旧を急ぐほど「一時措置」と「恒久化」を混ぜないことです。混ぜると、戻った後に再起動や切替で再燃し、現場の温度が上がります。


段階1:一時措置で“経路が成立するか”を確かめる(原因層の確定)

まずは、争点がルーティングであることを確かめます。ここでの目的は、恒久設定をいきなり書き換えることではなく、「経路が成立すれば疎通が回復する」ことを事実として掴むことです。これにより、DNSやFWへ飛び火するノイズが減り、現場をクールダウンさせやすくなります。

一時措置は、影響範囲が小さく、戻しやすい形を優先します。具体的には、対象を特定宛先(または特定サブネット)に絞り、出口IFとゲートウェイの前提が揃うかを確認し、結果が出た時点で“何が欠けていたか”を説明できる状態にします。ここで焦って広範囲へ適用すると、復旧は早く見えても、後から社内調整が重くなりがちです。


段階2:恒久化は“NetworkManagerの整合”を最優先にする(戻る障害に歯止め)

一時措置で道筋が見えたら、次は恒久化です。ただし恒久化は、適用の瞬間に影響が出る可能性があるため、承認・監査・運用手順の前提が絡む環境では、変更幅の線引きが必要になります。Red Hat系ではNetworkManagerが接続プロファイルとして設定を保持することが多いため、恒久化ではプロファイルの整合を揃えることが重要です。

ここでの“よくある失敗”は、カーネルの経路表を整えただけで安心してしまい、接続の再確立や再起動で元に戻ることです。戻る障害は、現場の信用を削り、次の障害対応で議論が過熱しやすくなります。恒久化では、「どの接続プロファイルが、どのIFで、どのゲートウェイ/メトリック/ルートを持つか」を一貫させ、再現性のある復旧に寄せることが重要です。


段階3:疎通確認は“到達できた”だけで終わらせない(再発防止の材料を残す)

通信が戻ると、現場は一気に安堵します。しかし、ここで終わらせると「なぜ起きたか」「なぜ戻ったか」が曖昧になり、同様の障害が再燃します。疎通確認では、単に外へ出られたかだけでなく、想定どおりの出口IFと送信元IPで出ているか、特定宛先だけが直っていない箇所はないか、監視やバックアップなど運用上重要な経路が巻き込まれていないか、といった観点で“影響範囲の再確認”を行うことが、結果として被害最小化になります。

また、ルーティングの問題は、上位ネットワーク(VPN、クラウドルート、拠点間)やセキュリティ制御(ACL、NAT)と連鎖しやすいため、復旧後も一定期間は観測を継続し、再発の兆候を早めに拾える状態を作る方が、現場の負担が軽くなります。


まとめ:一般論で押し切らず、個別案件の線引きを先に決める

ENETUNREACH(101)は“経路が成立していない”という点では明確ですが、なぜ成立しないかは、構成や運用の積み重ねで変わります。特に、共有ストレージ、コンテナ、本番データ、監査要件が絡む環境では、最小変更の線引きが難しく、一般論だけで安全域を断言できません。復旧を急ぐほど、変更の説明責任が重くなることもあります。

だからこそ、終盤では「一般論の限界」を素直に認め、個別案件では専門家の視点で影響範囲と復旧計画を組み立てる流れが自然です。迷いがある場合は、株式会社情報工学研究所への相談・依頼を検討し、収束へ向かう最短ルートを設計する方が、現場の負担を下げやすいです。

問い合わせフォーム:https://jouhou.main.jp/?page_id=26983

電話:0120-838-831

 

第10章:再発を減らす“運用の型”――説明責任・変更管理・監視設計で収束を早める

ENETUNREACH(101)の対応が苦しくなるのは、技術的な難しさだけではありません。「なぜ起きたのか」「誰が何を変えたのか」「影響範囲はどこまでか」「再発をどう防ぐのか」を短い時間で説明しなければならない点が、現場の負担を増やします。特にレガシーで止められない環境では、“いま直す”と“次に備える”を同時に求められ、議論が過熱しやすくなります。ここでは、技術の話を運用へ接続し、現場が軟着陸しやすい型を整理します。


1) 説明責任を軽くする:事実→仮説→最小変更→結果の順で固定する

上司や役員への説明が難しいのは、「事実」が揃っていない段階で原因の断定を求められるからです。ここで有効なのは、断定ではなく、手順として説明することです。たとえば次の並びを固定すると、短時間でも納得が得られやすくなります。

  • 事実:どの宛先が不達か/どの経路が選ばれているか(ip route get等)

  • 仮説:経路欠落、メトリック逆転、別テーブル参照、名前空間差異など

  • 最小変更:対象を絞った一時措置で“成立するか”を確認

  • 結果:想定出口で疎通が戻ったか/影響範囲に副作用が無いか

この型があると、「直るかどうか」だけでなく「どの論点を検証したか」を説明できます。結果として、現場が孤立しにくくなり、社内調整が短くなります。


2) 変更管理で歯止めをかける:遠隔経路・監視・承認の3点を先に守る

ルーティングやゲートウェイの変更は、復旧のために必要なことがある一方、遠隔管理経路や監視経路を巻き込むと、復旧そのものが難しくなります。ここで重要なのは、変更の大小ではなく、守るべき経路を先に特定して保護することです。例えば次の3点が最低限の線引きになります。

守る対象 なぜ重要か 現場での確認観点
遠隔管理(SSH/踏み台/管理NW) 切れると復旧が現地作業化し、収束が遅れる 出口IFの変更で送信元IPが変わらないか、管理系の経路が維持されるか
監視/ログ(監視サーバ、SIEM、時刻同期) 復旧中ほど可視化が必要。見えないと判断が鈍る 監視経路が別NWなら特に、経路の優先度やポリシーの影響を受けないか
承認とロールバック(戻し方) 復旧後の説明と再発防止に直結する 一時措置と恒久化を混ぜない。差分が説明できる粒度にする

この3点を先に守るだけで、変更が必要な状況でも“場を整えたまま”復旧へ寄せやすくなります。


3) 監視設計で再燃を減らす:到達性だけでなく“出口の変化”を捉える

再発が多い環境では、「Pingが通るか」だけの監視では足りません。ENETUNREACHの背景には、デフォルトルートの入れ替わり、メトリック逆転、参照テーブルの変化、名前空間側の変化など、“出口の変化”が含まれることが多いからです。運用としては、次のような観測を追加すると、現場の負担が軽くなります。

  • 外形監視(疎通)に加えて、ip route get相当の出口情報を定期的に記録し、変化を検知する。

  • NetworkManagerの接続切替やDHCP更新の痕跡をログとして追いやすくしておき、障害時に説明できる材料を残す。

  • コンテナ/仮想化が絡む場合は、ホストと名前空間(あるいはCNI)を分けて監視し、“どの世界で崩れたか”を早く判定できるようにする。

これらは派手な対策ではありませんが、議論が過熱しやすい局面で“事実”を揃えやすくし、収束を早めます。


4) 一般論の限界を先に置く:個別案件の線引きが成果を左右する

ENETUNREACH(101)は、表面上は同じでも、実際には構成と運用の前提が違うだけで対処の安全域が変わります。拠点間VPN、クラウドルート、冗長構成、監査要件、共有基盤、コンテナ、複数NIC、ポリシールーティングが絡むと、最小変更の線引きが難しくなり、一般論だけでは“この操作なら安全”と言い切れません。

だからこそ終盤では、「一般論で押し切るほどリスクが上がる」ことを自然に共有し、個別案件では専門家の視点で影響範囲を見積もって収束へ導く流れが現実的です。迷いがある状況ほど、株式会社情報工学研究所への相談・依頼を検討することが、結果として早い沈静化と被害最小化につながります。

問い合わせフォーム:https://jouhou.main.jp/?page_id=26983

電話:0120-838-831

 

現在のプログラム言語各種:ENETUNREACH(101)を“障害にしない”ための実装上の注意点

到達不能はネットワークの問題に見えますが、アプリの実装次第で、現場の負担が大きく変わります。短時間で収束させるには、アプリ側が「何が起きたか」を説明できる情報を残し、過剰な再試行で状況を悪化させないことが重要です。ここでは、主要言語・実行環境で共通して起きやすい注意点を整理します。


共通の注意点(言語を問わず)

  • タイムアウトを明示:デフォルト任せにすると、待ち続けて復旧判断が遅れる。接続・読み取り・全体のタイムアウトを分けて設計する。

  • 再試行は“控えめ”に:短い間隔で大量再試行すると、障害時に負荷を上げ、収束を遅らせる。指数バックオフと上限を設け、同時実行数も抑える。

  • エラーの分類:名前解決、接続拒否、経路不成立、証明書、プロキシなどを混ぜない。ENETUNREACH相当は“経路”として扱い、切り分けを助ける。

  • 観測情報を残す:宛先(IP/ホスト名)、解決後IP、使用プロキシ、ローカルIP、接続先ポート、再試行回数、発生時刻をログに残す。

  • IPv4/IPv6の取り扱いを明確に:環境によってはIPv6優先やデュアルスタックが絡み、到達不能が偏って見える。どちらを使ったかをログに残す。


Shell(bash等)

  • 外部コマンド(curl/wget等)は環境変数(http_proxy/https_proxy/no_proxy)の影響を強く受け、実行ユーザーごとに差が出やすい。

  • 障害時にループ再試行を無制限にすると、ログ肥大や負荷増でダメージコントロールが難しくなる。上限と待機を必ず設ける。

  • 名前解決と到達不能が混ざらないよう、ホスト名とIPの両方で失敗したかを切り分けて記録する。


Python

  • requests等はタイムアウトを明示しないと“待ち続ける”設計になりやすい。接続・読み取りを分けた設定を前提にする。

  • セッション再利用(接続プール)で、障害時に古い接続が残り、エラーの見え方が揺れることがある。失敗時の再作成や回数制限を設計する。

  • 例外を握りつぶすと現場の切り分けが進まない。例外型とOSエラー番号相当をログへ残す。


Node.js(JavaScript/TypeScript)

  • 非同期処理の同時実行を上げ過ぎると、障害時に再試行が雪崩のように増えて収束が遅れる。キューや同時実行数の上限が重要。

  • DNSの振る舞い(キャッシュや優先)やIPv6の扱いで、環境差が出る。どのアドレスに接続したかのログが有効。

  • タイムアウトがライブラリ依存になりやすい。接続・応答の上限を実装側で明確に統一する。


Go

  • contextの期限(Deadline/Timeout)を設計しないと、待ち続ける経路が残る。全ての外部通信にcontextを通す運用が再発防止に効く。

  • http.Clientの使い回しとTransport設定(接続プール、Keep-Alive、DNS更新)の影響で、障害時に挙動が偏ることがある。

  • エラーを文字列比較で判定すると環境差で破綻しやすい。分類(timeout、temporary、net.Error等)で扱う。


Java(JVM系)

  • DNSキャッシュ(TTL)の扱いが問題の見え方を変える。名前解決の変化が追えないと、到達不能が断続的に見える。

  • 接続プール(HTTPクライアント、JDBC等)と再試行が絡むと、障害時に同時多発しやすい。上限とバックオフを揃える。

  • 例外チェーンに原因が隠れることが多い。根本原因(Caused by)をログに残す運用が重要。


.NET(C#等)

  • HttpClientの使い方(生成頻度やハンドラ設定)で、障害時にソケット枯渇や再試行の偏りが出やすい。運用に合う再利用設計が必要。

  • プロキシ自動検出や環境依存の挙動で、同じコードでも接続先が変わることがある。実際に使った経路情報(プロキシ有無)をログに残す。

  • 例外の種別と内部例外を残さないと、経路不成立と拒否・証明書を混同しやすい。


PHP

  • 実行環境(CLI/FPM)で環境変数・DNS設定・プロキシの見え方が変わる。どの実行形態で起きたかを記録する。

  • cURL系のタイムアウト未設定は収束を遅らせる。接続・全体のタイムアウトを明示し、再試行は控えめに設計する。

  • 例外処理が薄いと、現場が原因層を特定できない。宛先、解決IP、エラー種別を残す。


Ruby

  • 外部HTTPクライアントの挙動差が大きく、タイムアウトや再試行が暗黙になりやすい。設定を明示し、上限を揃える。

  • ジョブキューで大量並列化すると、障害時に再試行が集中して収束が遅れる。レート制御を運用設計に含める。

  • 例外メッセージだけでは切り分けに不足することがある。原因例外とOSエラー相当を残す。


C/C++

  • ENETUNREACHはerrnoとして得られるため、ログにerrnoと宛先情報を確実に残すと切り分けが早い。

  • 再試行を実装する場合、スリープ間隔・上限・同時数を守らないと、障害時に負荷を増やす。バックオフは運用要件に合わせる。

  • IPv6/IPv4の解決順やソケットオプションで、環境差が出やすい。接続先アドレスファミリを記録する。


Rust

  • 非同期ランタイムで同時実行が増えると、障害時に再試行が集中して収束が遅れる。上限とバックオフを設計に含める。

  • エラー型が豊富な分、ログで要点(宛先、解決IP、分類、再試行回数)を落とさないことが重要。

  • 依存クレートごとにタイムアウトやDNSの挙動が異なる場合がある。運用で統一した設定方針を持つ。


締めくくり:個別案件の判断が成果を左右する

アプリ実装の工夫で、ENETUNREACH(101)の“発生”自体を完全に防ぐことはできなくても、障害の収束速度と説明可能性は大きく改善できます。ただし、実際の現場では、契約・監査・構成・運用手順が絡み、一般論だけで最適解を断言できない局面が出てきます。共有ストレージ、コンテナ、本番データ、監査要件が絡む場合は、無理に権限や設定を広く触る前に、影響範囲と最小変更の線引きを先に固めることが重要です。

具体的な案件・契約・システム構成で悩んだときは、株式会社情報工学研究所への相談・依頼を検討することで、早い沈静化と被害最小化に繋がりやすくなります。

問い合わせフォーム:https://jouhou.main.jp/?page_id=26983

電話:0120-838-831

最短チェック

ENETUNREACH (101) “Network is unreachable” で詰まったら:まずルートを最小変更で戻す

原因は「ルーティングが無い/違う」が多め。焦って広げず、出力を残してから最短で切り分けます。

1

30秒で原因を絞る

「誰が実行しているか」と「どこまで届いているか」を先に固定すると、無駄な変更が減ります。

id whoami ip route get <DEST_IP> ping -c 1 -W 1 <GATEWAY_IP>
2

症状別:いまの失敗に合う最短コマンド

「どの症状に近いか」を合わせるだけで、直す手数が一気に短くなります。

# 想定1: 既定ルートが無い/違う(最頻) ip route nmcli -t -f NAME,DEVICE,STATE con show --active ip route get <DEST_IP>
想定2: インターフェースが DOWN / 物理・VLAN・Bond 周り

ip link show
nmcli dev status
ethtool  2>/dev/null | head -n 20

想定3: 特定宛先だけ unreachable(ポリシールーティング/複数NIC)

ip rule
ip route show table all
ip route get  from 

想定4: IPv6 側で unreachable(IPv6ルート欠落/優先度)

ip -6 route
ip -6 route get 
getent ahosts 
3

直す前に:影響範囲を1分で確認(やり過ぎ防止)

変更前の状態を残しておくと、戻す判断が速くなります(再起動で戻る/戻らないもここで見えます)。

date; hostname ip addr ip route; ip rule nmcli -f NAME,UUID,DEVICE,STATE con show --active ss -tupan | head -n 50 traceroute -n <DEST_IP> 2>/dev/null | head -n 20

失敗するとどうなる?(やりがちなミスと起こり得る結果)

  • 権限を広げすぎる → 情報漏えい/改ざん
  • 所有者を変えすぎる → 二次障害(停止・エラー連鎖)
  • ACL/保護設定を無造作に外す → 監査指摘/再発/追跡不能
  • 共有/NFS/コンテナ境界の見落とし → 復旧長期化

迷ったら:無料で相談できます

迷うポイントが1つでもあれば、情報工学研究所へ無料相談で早く収束しやすいです。

・デフォルトゲートウェイが正しいかで迷ったら。
・NetworkManager の設定がどれが有効か判別できない。
・複数NIC/VRF/ポリシールーティングの整理ができない。
・一時的に直っても再起動で戻る原因が分からない。
・IPv4/IPv6どちらが詰まっているかの診断ができない。
・VPN/踏み台/プロキシ経由で切り分けができない。
・本番停止を避けたいが、最小変更の確信が持てない。
・共有ストレージ、コンテナ、本番データ、監査要件が絡む場合は、無理に設定を触る前に相談すると早く収束しやすいです。
根本的な原因の究明とBCP対策は以下本文へ。

 

pingが通らないのにNICは正常…ENETUNREACHが示す“経路不在”という現実

※繰り返しになりますが、本記事はあくまで一般的な情報提供です。具体的な案件・契約・システム構成に関わる判断は、必ず株式会社情報工学研究所、弁護士や専門家に相談してから行ってください。


Red Hat 系 Linux で作業していると、アプリケーション側から「ENETUNREACH (101) – Network is unreachable」というエラーが返ってくる場面があります。ping がまったく返ってこない、しかし ip anmcli device status を見るとインターフェースは UP、リンクもキャリアあり、という状況です。プログラマー視点では「ソケットを開いて send しただけなのに、なぜ OS からネットワーク不可と言われるのか?」という素朴な疑問が湧きます。

ENETUNREACH は、カーネルが「この宛先ネットワークに到達するための経路(ルート)を決定できない」状態を表すエラーです。物理 NIC のリンクアップ/ダウンとは別レイヤーの話であり、L3 の経路情報が不足しているか、矛盾しているときに返されます。したがって、ケーブルが刺さっていてリンク LED が点灯していても、ルーティングテーブルが適切に構成されていなければ、ENETUNREACH が返ってくることは十分あり得ます。

典型的なパターンとして、次のようなものがあります。

  • デフォルトゲートウェイが設定されていない、または誤ったアドレスになっている
  • 複数 NIC 構成で、意図しないインターフェース側にデフォルトルートが張られている
  • サブネットマスクの誤りにより、同一セグメントとみなすべき宛先を「ルート不在」と誤認している
  • NetworkManager / ifcfg 設定と ip route の実際の状態が食い違っており、再起動や reload でルートが消えてしまう

プログラマーはアプリケーション側の例外処理に意識が向きがちですが、ENETUNREACH はアプリケーションコードそのものの問題ではなく、OS が持つルーティング情報の問題です。とはいえ、このエラーがどういう前提で返されるのかを理解しておくと、ログを読んだときに「これはアプリのリトライでは解決しない」「運用チームにルーティングを見直してもらうべきだ」といった切り分けが、コードレベルで自然にできるようになります。

混同しやすいのは、同じく到達不可系のエラーである EHOSTUNREACH や ECONNREFUSED などとの違いです。簡単に整理すると次のようになります。

エラー名 errno 典型的な意味
ENETUNREACH 101 宛先ネットワークへのルートが存在しない(ネットワーク単位の到達不可)
EHOSTUNREACH 113 ネットワークには到達できるが、その中のホストに到達できない
ECONNREFUSED 111 相手ホストには届いたが、目的ポートでサービスがリスンしていない

このように、ENETUNREACH はかなり早い段階(ルート解決の時点)で出てくるエラーです。逆に言うと、ENETUNREACH がレポートされている時点で、ARP や TCP ハンドシェイク以前の問題である可能性が高い、と判断できます。

本記事では、まず ENETUNREACH がどのような内部処理の結果として返されるのかをプログラマー向けに整理し、そのうえで Red Hat 系ディストリビューションでのルーティング再設定と接続対策の実務的な手順に落とし込んでいきます。最終的には、単発のトラブルシュートだけでなく、「設計」「監視」「手順書」のレベルで ENETUNREACH を減らしていくための考え方までを扱います。

なお、ここで説明する内容は一般論に基づいた整理であり、実際のシステム環境では、ファイアウォールポリシー、マルチパス、SD-WAN、クラウド環境固有のルーティングなど、追加の要素が絡みます。こうした複雑な構成では、株式会社情報工学研究所のような専門家による個別検証が不可欠になる点についても、終盤で改めて触れていきます。

 

ソケットエラー101の正体をコードから読み解く――カーネルが何を見ているか

プログラマーが ENETUNREACH を正しく扱うには、「どのタイミングで」「どの条件を満たしたときに」この errno がセットされるのかを押さえておく必要があります。ユーザー空間から見ると、connect()sendto() を呼んだ結果として -1 が返り、errno == ENETUNREACH になるだけですが、その裏側では、カーネルがルーティングテーブルやネイバキャッシュを参照し、条件分岐を経てエラーを選択しています。

Linux カーネルでは、ソケット API の多くは共通のネットワークスタックを経由し、宛先 IP アドレスに対して「どのインターフェースから、どのネクストホップに送るか」を決定するためにルート検索を行います。具体的な実装はカーネルバージョンやプロトコルによって異なりますが、概念的には次のような流れになります。

  1. アプリケーションから渡された宛先アドレス・ポートに基づき、プロトコルコントロールブロック(TCP/UDP)を初期化する
  2. FIB(Forwarding Information Base)に対してルートルックアップを行い、最長一致する経路を探索する
  3. 適切な経路エントリが見つかれば、その経路に紐づく出力インターフェースとネクストホップを決定する
  4. 経路が見つからない場合、もしくは「このネットワークは利用不可」であることを示すエントリがある場合に ENETUNREACH が選択される

ここで重要なのは、ENETUNREACH が「ルート検索の結果」として決定されるという点です。つまり、アプリケーションコードがどれだけ正しくソケット API を呼んでいても、FIB に適切な情報がなければ ENETUNREACH は避けられません。逆に言えば、ENETUNREACH が返るということは、「アプリケーション側に問題があるというより、ネットワーク構成情報にギャップがある」と解釈すべきサインになります。

また、宛先が IPv4 か IPv6 かによっても、ルーティングテーブルやデフォルトルートの扱いが変わります。たとえば、IPv4 のデフォルトルート (0.0.0.0/0) は設定済みでも、IPv6 のデフォルトルート (::/0) が存在しない場合、IPv6 宛ての接続だけ ENETUNREACH になる、といった状況が起こり得ます。プログラマー側で AF_INETAF_INET6 を明示的に使い分けている場合は、どのアドレスファミリでエラーが発生しているかにも注意する必要があります。

アプリケーションから見ると、「同じホスト上で動いている別プロセスは問題なく接続できるのに、このプロセスだけ ENETUNREACH になる」といった挙動を示すことがあります。これは、ソケットごとにバインドされるローカルアドレスやネットワーク名前解決の結果が異なることが原因の一つです。たとえば、

  • bind() で特定のローカル IP アドレスにバインドしている
  • 指定したローカルアドレスに対応するインターフェースには適切なルートがない
  • 別プロセスは INADDR_ANY でバインドしており、別のインターフェース経由で接続できている

といったケースでは、アプリケーション側のローカルアドレス指定が、結果として ENETUNREACH を誘発することになります。

プログラマーがログ設計を行う際には、単に「errno=101」とだけ記録するのではなく、少なくとも以下の情報をセットで残しておくと、後続のネットワークエンジニアが原因分析しやすくなります。

  • そのときに使用していたローカル IP / ポート(getsockname() の結果)
  • 宛先 IP / ポート
  • アドレスファミリ(IPv4 / IPv6)
  • 名前解決の結果(どの A / AAAA レコードを採用したか)

こうした情報が残っていれば、「このホスト全体でルーティングがおかしいのか」「特定のインターフェースだけが問題なのか」「アプリケーション固有のバインド指定が原因なのか」を切り分けやすくなります。本記事の後半では、これらのログをもとに、実際に ip route get などを併用して原因を追う流れをタイムライン形式で整理します。

 

ip route showで見る“今この瞬間の経路表”とデフォルトゲートウェイの落とし穴

ENETUNREACH を目にしたとき、最初に確認すべき情報のひとつが、ip route show の結果です。Red Hat 系ディストリビューションでは、NetworkManager や ifcfg 設定、あるいは systemd-networkd などがルーティングを管理していても、最終的にカーネルが参照するのは ip route show に反映されている FIB の状態です。つまり、「OS が今この瞬間どのように経路を認識しているか」は、ip コマンドで確認するのが最も確実です。

最低限押さえておきたいのは、次の 3 つです。

  • default 行が存在するかどうか(デフォルトルートの有無)
  • ローカルセグメント(例:192.168.10.0/24)のネットワークルートが正しいか
  • 複数の default 行や重複するネットワークルートがないか

たとえば、次のような出力が得られたとします。

default via 192.168.10.1 dev eth0 proto static metric 100 192.168.10.0/24 dev eth0 proto kernel scope link src 192.168.10.20 metric 100 

この場合、192.168.10.0/24 宛てのトラフィックは直接 eth0 から出ていき、それ以外のネットワーク(インターネットなど)宛てのトラフィックは、192.168.10.1 をネクストホップとするデフォルトルート経由で転送されます。もし ENETUNREACH が発生しているのがインターネット宛ての通信であれば、デフォルトルートが消えていないか、あるいは誤ったインターフェース側に設定されていないかを疑うべきです。

一方、マルチホーム(複数 NIC)環境では、状況がもう少し複雑になります。

default via 10.0.0.1 dev eth1 proto static metric 100 default via 192.168.10.1 dev eth0 proto static metric 200 10.0.0.0/24 dev eth1 proto kernel scope link src 10.0.0.20 metric 100 192.168.10.0/24 dev eth0 proto kernel scope link src 192.168.10.20 metric 100 

このように複数のデフォルトルートが存在する場合、カーネルはメトリックや優先度に基づいて使用する経路を選択します。意図していない側の回線(例:バックアップ回線)に低メトリックが設定されていると、障害時に期待しない経路で通信しようとして ENETUNREACH を引き起こすことがあります。

デフォルトルートの消失もよくある落とし穴です。たとえば、次のような操作の組み合わせで問題が起こることがあります。

  • NetworkManager で一時的に接続プロファイルを変更し、別セグメントに切り替える
  • 作業後に元の接続に戻したが、デフォルトルートだけが復元されていない
  • 再起動・再接続のタイミングで、ifcfg ファイルと実際の状態が不整合を起こす

このような場合、ip route show を確認すると default 行そのものが存在せず、インターネット宛てのトラフィックについて FIB から「ルートが見つからない」と判断され ENETUNREACH が返されます。

より詳細な切り分けには、特定の宛先に対してカーネルがどのルートを選択するかを確認できる ip route get が有効です。

ip route get 8.8.8.8 

これにより、宛先 8.8.8.8 に対して、どのインターフェース・どのネクストホップを経由するつもりなのか、あるいは「RTNETLINK answers: Network is unreachable」というメッセージが表示されるのかを確認できます。アプリケーションログに残っている宛先 IP をもとに ip route get を実行することで、ENETUNREACH の再現性が高まります。

第 3 章では、こうした ip コマンドによる状態確認を土台に、次章以降で取り上げる「複数 NIC・複数セグメント環境」「NetworkManager 設定」「firewalld」「systemd-networkd」のそれぞれが、最終的にどのようにルーティングテーブルへ影響するのかを整理するための基盤を作りました。次の章では、特にトラブルが起こりやすい複数 NIC 構成に焦点を当て、メトリックと優先経路の考え方をプログラマーにもわかりやすい形で解説します。

 

複数NIC・複数セグメント環境での優先経路とメトリック設計を整理する

Red Hat 系 Linux の運用現場では、物理・仮想を問わず複数 NIC・複数セグメント構成は珍しくありません。社内 LAN とバックアップ回線、監視専用ネットワークとアプリケーション用ネットワークなど、役割ごとにセグメントを分離するのは一般的な設計です。しかし、このような構成では、どのインターフェースを「優先経路」として扱うか、どの回線を「障害時のバックアップ」にするかを明示的に設計しないと、思わぬタイミングで ENETUNREACH を含む到達不可エラーが発生します。

Linux カーネルは、ルーティングテーブル内のエントリをメトリック(metric)やプレフィックス長で評価し、最も「好ましい」経路を選択します。プレフィックス長が同じ場合、メトリックの小さい方が優先されます。例えば、次のような状態を考えます。

default via 10.0.0.1 dev eth1 proto static metric 50 default via 192.168.10.1 dev eth0 proto static metric 100 

この場合、インターネット宛ての通信は、原則として eth1 側の 10.0.0.1 経由で送信されます。意図としては「eth1=主回線、eth0=予備回線」であれば問題ありませんが、設定者がメトリックの意味を意識しておらず、デフォルト値のまま複数のデフォルトルートを追加した結果、優先経路が想定と逆になっていることがあります。

マルチホーム構成では、次の観点で整理しておくと混乱が減ります。

  • 用途ごとに「このセグメントは何のためのネットワークか」を明文化する
  • 用途ごとに「通常時の優先度」と「障害時の切り替え条件」を決める
  • その方針に合わせてメトリックやポリシールーティングのルールを設計する

特に、アプリケーションサーバーが監視サーバーやバックアップサーバーと異なるネットワーク設計ポリシーを持っている場合、「監視は専用 NIC 経由、業務トラフィックは別 NIC 経由」といった粒度で経路を分ける必要があります。これを曖昧にしたまま複数のデフォルトルートを設定すると、特定の宛先に対してだけ ENETUNREACH が発生したり、障害時に期待と異なる経路を通ってトラフィックが外に出ていったりします。


また、複数 NIC 環境では、送信元 IP アドレス(src)も重要です。同じホストでも、eth0 から出る場合と eth1 から出る場合で送信元 IP が異なり、相手側のファイアウォールやセキュリティグループによって許可される・されないが分かれることがあります。Linux のルーティングでは、ルートエントリに src が明示されていない場合でも、インターフェースに割り当てられたアドレスや逆引きルールをもとに送信元 IP を決定します。この決定過程が設計者の想定とずれていると、「あるセグメントからは疎通するが、別セグメント経由では ENETUNREACH になる」といった状態が発生します。

こうした問題を防ぐためには、単に「IP を振る」「デフォルトゲートウェイを設定する」だけでなく、「このホストがどの宛先に対して、どの NIC・どの送信元 IP を使うべきか」を図示し、それに沿ってメトリックや静的ルート、場合によってはポリシールーティング(ip rule)を設計することが重要です。次章では、それらの設計を OS の設定ファイルにどのように落とし込むか、特に NetworkManager を利用した場合の一時的なテストルートと恒久設定の違いに焦点を当てます。

 

一時的なテストルートと恒久設定――nmcliとNetworkManagerでの正しい書き方

ENETUNREACH を解消するために現場でよく行われる操作が、「とりあえず ip route add でテストルートを追加する」ことです。問題の切り分けのために一時的なルートを追加すること自体は有効ですが、そのまま恒久設定を行わずに運用を続けると、再起動や NetworkManager の再読み込みでルートが失われ、再び ENETUNREACH が発生します。

Red Hat 系ディストリビューションでは、NetworkManager が標準のネットワーク管理デーモンとして利用されていることが多く、systemd 起動時には NetworkManager が接続プロファイルに基づいてインターフェースとルートを再構成します。このとき、手動で追加したルート(ip route add のみで登録したもの)は、NetworkManager の管理外であるため、再起動後に再現されません。

一時的なテストと恒久設定をきちんと分けるためには、次のような運用が有効です。

  • 原因切り分けのためのテストでは ip route add を使ってもよいが、問題解決の段階では必ず設定ファイルか nmcli で恒久設定を残す
  • NetworkManager 管理下のインターフェースでは、基本的に nmcli connection modify を通じてルートを追加する
  • 手作業で ifcfg ファイルを書き換える場合は、設定反映手順(connection down/up など)を標準化する

例えば、特定の宛先 10.20.30.0/24 を eth1 経由のルートで追加したい場合、nmcli では次のような操作が典型例です(実際のコマンドは環境に合わせて調整が必要です)。

nmcli connection modify <connection-name> \ +ipv4.routes "10.20.30.0/24 10.0.0.1" nmcli connection up <connection-name> 

これにより、当該接続プロファイルの設定として静的ルートが保存され、NetworkManager の再起動やホスト再起動後も同じルートが再現されます。ifcfg スタイルの設定ファイル(例:/etc/sysconfig/network-scripts/ifcfg-eth0)を使用している環境では、IPV4_ROUTE_* などの形式でルートを記述しますが、現在の Red Hat 系では NetworkManager のキーファイル形式や nmcli での管理が推奨されています。

テスト目的で ip route add を使った場合は、必ず作業記録に「一時ルート」と明記し、恒久対応として「NetworkManager 設定への反映」「設定反映の確認」「再起動後の疎通確認」までを一連の作業とするべきです。これを怠ると、数週間後や OS アップデート後に ENETUNREACH が再発し、「以前はつながっていたのに、いつからかつながらなくなった」という曖昧な障害として再燃します。

次章では、ルーティングとよく混同される firewalld の設定について、「どこまでが経路の問題で、どこからがフィルタの問題か」を整理し、ENETUNREACH とその他の到達不可エラーを切り分ける観点をまとめます。

 

firewalldとルーティングの境界――フィルタなのか経路なのかを切り分ける

ネットワーク障害の現場では、「ファイアウォールが原因か、ルーティングが原因か」がしばしば混同されます。Red Hat 系では、ホストファイアウォールとして firewalld(iptables/nftables のラッパ)が利用されることが多く、さらにその外側に物理ファイアウォールやクラウドのセキュリティグループが存在することもあります。このとき、ENETUNREACH のようなルーティング由来のエラーと、フィルタリング由来のパケットドロップを区別して考えることが重要です。

一般的に、ENETUNREACH はルートルックアップの結果として返されるエラーであり、firewalld のルールが原因で直接 ENETUNREACH になることは通常ありません。firewalld によるパケットドロップは、トラフィックがルーティングを通過した後、フィルタチェイン上で DROP/REJECT されるものです。その結果としては、通信タイムアウトや ICMP エラーメッセージ(host unreachable など)として観測されることがありますが、アプリケーション側の errno として ENETUNREACH が返るかどうかは別の問題です。

障害切り分けの際には、次のようなステップで「経路かフィルタか」を判定すると整理しやすくなります。

  • ip route get 宛先IP が「Network is unreachable」と返るかどうかを確認する(返るなら経路問題が濃厚)
  • ローカルホストからの ping ではなく、同一セグメント上の別ホストからの ping の結果を比較する
  • firewalld を一時的に緩めた状態(ゾーンを trusted にするなど)でも ENETUNREACH が続くかを検証する

firewalld 側の設定ミスで起こりやすいのは、次のようなパターンです。

  • ゾーンへのインターフェース割り当てが誤っており、期待するセグメントが public として扱われている
  • サービスやポートは許可されているが、フォワード設定(masquerade / forward ポリシー)が不足している
  • デフォルトのポリシーが DROP で、例外ルールの書き忘れがある

これらは ENETUNREACH ではなく、タイムアウトや別種の到達不可として現れるケースが多いものの、現場の体感としては「つながらない」という一点で混同されがちです。そのため、ログやエラーコードを確認しないまま「まず firewalld を疑う」運用が定着すると、ルーティングの設計不備が後回しになり、結果として ENETUNREACH を繰り返すことになります。

本記事のテーマである ENETUNREACH を扱う際には、「firewalld はあくまで L3/L4 のフィルタであり、ルートが存在しない問題は解決できない」という前提を明確にしておく必要があります。そのうえで、「ルートが正しいことを確認したうえで、フィルタ設定を見直す」という順番を徹底することで、トラブルシューティングの効率を大きく高められます。

次章では、NetworkManager 以外のネットワーク管理として利用されることがある systemd-networkd にも触れ、静的ルートやポリシールーティングを設定ファイルベースで再現性高く維持する方法を概観します。

 

systemd-networkdと静的ルート・ポリシールーティングで再現性のある構成にする

Red Hat 系ディストリビューションでは、標準的には NetworkManager が利用されますが、特定の用途やコンテナホスト、アプライアンス用途などで systemd-networkd を採用するケースもあります。どのデーモンを利用するにしても重要なのは、「再起動やアップデート後もルーティング構成が再現可能であること」です。手作業で追加したルートや ip rule が、時間の経過とともに失われる構成は、ENETUNREACH を誘発しやすい不安定な状態と言えます。

systemd-networkd を用いる場合、ネットワークインターフェースごとに .network ファイルを用意し、その中で [Route] セクションや [RoutingPolicyRule] セクションを使ってルートやポリシールーティングを定義します。概念的には、次のような形になります。

[Route] Destination=10.20.30.0/24 Gateway=10.0.0.1

[RoutingPolicyRule]
From=10.0.0.0/24
Table=100

このように設定ファイルとして残しておけば、systemd-networkd が起動するたびに同じルート・ルールが再生成され、手作業による設定漏れやコマンド typo による不整合を減らせます。NetworkManager 環境でも同様で、「設定ファイル or 接続プロファイル」をルーティング構成の唯一のソース・オブ・トゥルースとし、それ以外の一時的なルート追加はあくまで障害対応のテストに留める運用が望ましいと言えます。


複雑なマルチホーム構成や、用途別にテーブルを分けるポリシールーティングを利用する場合は、systemd-networkd や NetworkManager の機能だけで完結しないケースもあります。その場合でも、最低限次のルールを守ると、ENETUNREACH を含む到達不可問題の再発リスクを抑えられます。

  • 手作業で実行した ip route / ip rule コマンドは、必ず設定ファイルに反映し、適用手順をドキュメント化する
  • 本番反映前にテスト環境で同じ設定ファイルを適用し、再起動後も構成が維持されることを確認する
  • 設定の変更履歴をバージョン管理(Git 等)で記録し、過去の状態に戻せるようにする

ここまでで、ENETUNREACH を避けるためのルーティング設計・設定の基礎を概観しました。次章からは、実際の障害の流れを「タイムライン」として整理し、どの時点で何を確認・記録しておくと、再発防止に役立つのかを具体的に見ていきます。

 

障害発生ログから復旧までをタイムライン化して“再発防止チェックリスト”を作る

ENETUNREACH をはじめとするネットワーク到達不可エラーは、一度解消してしまうと「原因が曖昧なまま忘れられてしまう」ことが少なくありません。その結果、数カ月後に同様の構成変更や再起動が行われ、同じ ENETUNREACH が再発する、というパターンが繰り返されます。これを防ぐには、障害の流れをタイムラインとして記録し、「再発防止チェックリスト」に落とし込むことが有効です。

タイムラインは、少なくとも次のような項目で整理すると、後から読み返しやすくなります。

時刻 出来事 ログ・コマンド 所見
10:05 監視でアプリ疎通エラー検知 監視ツールのアラートログ HTTP のタイムアウト増加
10:10 アプリログで ENETUNREACH を確認 アプリケーションログ 特定の外部 API 宛てのみエラー
10:15 ip route get 実行 ip route get 宛先IP 「Network is unreachable」と表示

このように、時刻・事象・実行したコマンド・そこから得られた所見を 1 つの表にまとめることで、「どの段階で ENETUNREACH が判明したのか」「どの段階でルーティングテーブルの欠落が確認できたのか」が明確になります。


タイムラインから再発防止チェックリストを作る際には、次のような項目がよく盛り込まれます。

  • 構成変更の手順書に「ip route show の事前・事後比較」を含める
  • NetworkManager / systemd-networkd の設定変更では、「設定ファイルのバックアップ」「変更内容のレビュー」「再起動後の疎通確認」を必須ステップにする
  • アプリケーションログに、宛先 IP と errno を常に記録するよう修正する
  • ルーティングテーブルの監視(想定されるデフォルトルートが消えたらアラート)を導入する

このようなチェックリストを運用手順書に組み込み、レビューや訓練の際に繰り返し確認することで、「ルートの消失から ENETUNREACH 発生まで」のパターンを組織として学習していくことができます。次章では、さらに一歩進めて、DR(災害復旧)やフェイルオーバー構成の中で ENETUNREACH をどう位置づけるかを整理します。

 

DRとフェイルオーバー構成でENETUNREACHを“想定内イベント”に変える

本番環境では、単一ホスト・単一回線の構成は少なく、DR サイトやフェイルオーバー構成が組まれていることが一般的です。このような環境では、「ある経路が利用不能になること自体」は完全には避けられません。重要なのは、「利用不能になった経路に依存している通信が、どれくらいの時間 ENETUNREACH のようなエラーを返し続けるか」を制御することです。

例えば、プライマリ回線とセカンダリ回線を持つ構成で、プライマリ側のルータ障害が発生すると、一時的にプライマリ回線宛てのルートが失われ、ENETUNREACH が発生することがあります。このとき、動的ルーティングプロトコルや VRRP 相当の仕組みで経路が書き換えられるまでの間、アプリケーションはエラーを受け取ります。設計の観点では、この時間をできるだけ短くし、かつ「切り替え中のエラーは許容される」という前提を運用設計に組み込むことが重要です。

DR・フェイルオーバー構成においては、次の観点で ENETUNREACH を扱います。

  • フェイルオーバー時に、どの経路が一時的に失われるかを事前に洗い出す
  • その経路に依存するアプリケーションが、どれくらいの時間 ENETUNREACH を許容できるかを合意しておく
  • 切り替え試験時に、実際の ENETUNREACH 発生時間とアプリケーションのリトライ挙動を確認する

実際の設計では、Red Hat 系 Linux 自体よりも、周辺のロードバランサーやルータ、クラウドのネットワークコンポーネントの挙動が支配的になることも多くあります。そのため、個別案件では、「Linux 側のルーティングと、周辺機器・クラウドサービスのルーティング/ヘルスチェック設定」を一体として検証する必要があります。これは、一般的なドキュメントだけではカバーしきれない領域であり、実環境の構成情報とログをもとにした個別検証が不可欠です。

株式会社情報工学研究所のような専門家に依頼することで、単に ENETUNREACH を解消するだけでなく、「フェイルオーバー時にどのようなエラーがどの程度発生するか」「その間にアプリケーション側でどのような挙動を取るべきか」を含めた全体設計の支援を受けることができます。次章では、ここまでの内容を踏まえ、「つながらない」を限りなくゼロに近づけるために、設計・監視・手順書をどのように見直すべきかをまとめます。

 

「つながらない」を限りなくゼロに近づけるために――設計・監視・手順書をどう見直すか

ここまで、ENETUNREACH が示す意味から、ルーティング設計・NetworkManager や systemd-networkd の設定、firewalld との境界、DR/フェイルオーバー構成における位置づけまで、段階的に整理してきました。最終章では、それらをまとめて「設計」「監視」「手順書」という 3 つの観点から、具体的にどのような改善を行うと「Network is unreachable」エラーを減らせるのかを整理します。

設計の観点では、次のようなポイントが重要です。

  • ホスト単位ではなく、システム全体としてどのセグメントがどの用途かを明確にする
  • 用途ごとに「通常時の優先経路」と「障害時の代替経路」を決め、メトリックやポリシールーティングに反映する
  • ルーティング構成のソース・オブ・トゥルースを設定ファイル/接続プロファイルに一元化する

監視の観点では、単にポート監視や ping 監視だけでなく、ルーティングテーブルの異常を検知する仕組みが有効です。例えば、「デフォルトルートが消えたらアラートを出す」「特定の宛先への ip route get の結果が変化したら検知する」といった監視を組み合わせることで、アプリケーションから ENETUNREACH が多発する前に兆候を捉えやすくなります。


手順書の観点では、構成変更や障害対応のたびに次のようなステップを踏むことを標準化するのが望ましいでしょう。

  • 事前に現状の ip route show を採取し、作業後の結果と比較する
  • NetworkManager / systemd-networkd の設定変更は、必ず設定ファイルとして残し、再起動試験を含めて確認する
  • 障害時には、アプリケーションログの errno と宛先 IP を確認し、ENETUNREACH の有無を切り分けの起点とする
  • 対応後はタイムラインと再発防止チェックリストを更新し、レビューの場で共有する

ここで扱った内容は、あくまで一般的な設計・運用の指針です。実際の案件では、オンプレとクラウドのハイブリッド構成、ゼロトラストネットワーク、マルチリージョン DR、コンテナ基盤やサービスメッシュなど、多数の要素が絡みます。そのような環境では、単純な「デフォルトルートの有無」だけでは説明できない ENETUNREACH も発生し得ます。

そのため、「一般論としてのベストプラクティス」を押さえたうえで、具体的なシステム構成・契約条件・運用体制に応じた個別検証を行うことが重要です。特に、ミッションクリティカルなシステムや、障害時の影響範囲が大きいシステムでは、設計段階からルーティング・フェイルオーバー・ログ設計・監視設計を一体として検討することが求められます。

株式会社情報工学研究所では、こうしたネットワークとサーバー、アプリケーションをまたいだ設計・検証・障害対応支援を行っています。もし、現在運用中の Red Hat 系 Linux 環境で ENETUNREACH を含む到達不可エラーが繰り返し発生している、あるいは今後の DR・フェイルオーバー設計に不安があるといった場合には、一般論だけで判断せず、一度専門家に相談することを検討してみてください。

 

主要プログラム言語ごとに見落としがちなENETUNREACHハンドリングの注意点

最後に、現在広く利用されている代表的なプログラム言語ごとに、ENETUNREACH を含むネットワークエラーの扱いで注意しておきたいポイントを簡潔に整理します。ここでは、言語仕様や標準ライブラリがどのような形でエラーを表現するかに着目し、「ログの残し方」と「リトライ戦略」の観点からまとめます。

まず C / C++ では、ソケット API を直接利用する場面が多く、connect() / send() / recv() の戻り値と errno を自前で判定することになります。ENETUNREACH が返っているにもかかわらず、アプリケーション側で「一時的エラー」として無制限にリトライしてしまうと、ルーティング構成が直らない限り永遠にエラーを繰り返すことになります。そのため、errno の値に応じて「再試行すべきエラー」(一時的なネットワーク障害や混雑など)と「構成問題が疑われるエラー」(ENETUNREACH や EINVAL など)を分けて扱う設計が重要です。

Java では、ソケットや HTTP クライアントのエラーは IOException のサブクラスとして表現されることが多く、NoRouteToHostExceptionConnectException といった例外名として現れます。スタックトレースだけをログに残し、例外種別やメッセージ(「Network is unreachable」など)を集約・分析していないと、ENETUNREACH と他のエラーを統計的に区別することが難しくなります。Spring などのフレームワークを利用している場合は、例外ハンドリング層で例外種別を分類し、監視との連携(特定の例外が一定回数以上発生した場合にアラートを上げるなど)を検討するとよいでしょう。

Python では、socket モジュールや requests ライブラリを通じてネットワーク通信を行うことが多く、エラーは OSErrorrequests.exceptions.* の形で現れます。Linux 上で ENETUNREACH が発生した場合、OSErrorerrno 属性に 101 がセットされることがありますが、アプリケーション側のコードでそれを明示的に確認していないと、「タイムアウト」や「接続拒否」と同列に扱われてしまいます。リトライ処理を実装する際には、「OS レベルの errno に基づく分岐」「HTTP ステータスコードに基づく分岐」などを整理し、ENETUNREACH を無制限なリトライの対象から外す設計が望ましいと言えます。

Go 言語では、ネットワークエラーは net.Error インターフェースを実装したエラーとして返されることが多く、Timeout()Temporary() メソッドの結果で「再試行すべきかどうか」を判断するパターンが一般的です。ただし、ENETUNREACH のように構成問題を示唆するエラーを「Temporary」と誤って扱うと、goroutine が無制限にリトライを繰り返し、システム全体の負荷増大につながる可能性があります。エラー文字列の中に「no route to host」や「network is unreachable」といった文言が含まれていないかを確認し、ログに明示的に残す実装を検討すると、運用側での分析が容易になります。

Node.js / JavaScript では、HTTP クライアントや TCP ソケットのエラーが ECONNREFUSEDENETUNREACH といったコードを持つ Error オブジェクトとして渡されることがあります。非同期処理のチェーンの中でエラーを握りつぶしてしまうと、最終的にどの種類のエラーがどれだけ起こっているのかを把握できなくなります。Promise や async/await を利用する場合でも、エラーコードに応じた分類ログ(メトリクス)を残し、「どのサービス間通信で ENETUNREACH が多発しているか」を可視化することが、構成問題の早期発見につながります。

いずれの言語でも共通するのは、ENETUNREACH を「通常の一時的エラー」と同列に扱って無条件にリトライするのではなく、「構成・ルーティング・運用手順を見直すべきシグナル」として扱うことです。そのためには、アプリケーションコード側で errno や例外種別をきちんとログに残し、監視やアラート設計と連携させることが欠かせません。個別の言語・フレームワークごとのベストプラクティスは、本記事の範囲を超える部分も多く含まれますが、実際のシステム構成と組み合わせて検討することで、より堅牢なネットワークエラー処理が実現できます。

もし、特定の言語やフレームワークで ENETUNREACH を含むネットワークエラー処理の設計に悩んでいる場合は、インフラ構成とアプリケーションコードの両面から評価・提案ができる専門家に相談することが有効です。株式会社情報工学研究所では、Linux ネットワークとアプリケーション実装の両方を踏まえた観点から、ログ設計やエラーハンドリング方針の見直しを含む支援も行っています。

はじめに


Red Hat環境において「ENETUNREACH(101)」エラーが発生した際、多くのシステム管理者やIT担当者は「ネットワークが到達不能」という状態に直面します。このエラーは、システムがネットワーク経由で必要なリソースにアクセスできないことを示しており、業務の停滞やデータの送受信の遅延を引き起こす可能性があります。本記事では、このエラーの原因と定義を明確にし、具体的な対応策やルーティングの再設定方法について解説します。特に、ネットワークの再構築や接続の安定化に向けた実践的なアプローチを紹介し、システムの信頼性向上に役立てていただくことを目的としています。現状のネットワーク構成やルーティング設定を理解し、適切な対策を講じることで、エラーの再発を防ぎ、システム運用の安定性を確保する手助けとなる内容です。



「ENETUNREACH(101)」エラーは、ネットワーク層において通信経路が確立できない状態を示すエラーコードです。これは、システムが目的のネットワークリソースに到達できないときに発生します。原因としては、ルーティング設定の誤りやネットワーク構成の不備、ファイアウォールやセキュリティポリシーによる通信遮断、またはネットワークインターフェースの不具合が挙げられます。特に、ルーティングテーブルに正しい経路情報が登録されていない場合や、経路情報が古くなっている場合にこのエラーが表れやすくなります。システム管理者やIT担当者にとっては、ネットワークの基本的な構成とルーティングの理解が不可欠です。現在のネットワーク設定を確認し、適切な経路情報を登録・更新することが、エラーの根本的な解決に繋がります。このエラーは単なる一時的な問題ではなく、継続的なネットワーク運用の妨げとなるため、正確な原因の特定と迅速な対応が求められます。



詳細な事例や具体的な対応方法を理解することは、エラーの根本原因を特定し効果的に解決するために不可欠です。例えば、ある企業のIT管理者は、定期的なルーティングの見直しを行った結果、エラーが解消されたケースがあります。このケースでは、ネットワークの変更に伴いルーティングテーブルの経路情報が古くなり、目的のネットワークリソースに到達できなくなっていました。管理者は、まずネットワークの現状を把握するために、ルーティングテーブルの内容を確認しました。次に、目的のネットワークへの正しい経路を追加し、必要に応じて既存の経路情報を更新しました。これにより、「ENETUNREACH(101)」エラーが解消され、通信が正常に行えるようになりました。 また、セキュリティポリシーやファイアウォールの設定もエラーの原因となることがあります。例えば、特定のポートやIPアドレスへの通信を遮断している場合、ネットワーク経路が存在していても通信がブロックされ、「ネットワークが到達不能」と認識されることがあります。こうした場合は、セキュリティ設定を見直し、必要な通信を許可するルールを追加します。 さらに、ネットワークインターフェースの不具合や物理的な接続問題も考えられます。ケーブルの断線やNIC(ネットワークインターフェースカード)の故障が原因の場合は、ハードウェアの点検と交換が必要です。これらの対応を行う前に、まずはネットワークの状態を詳細に把握し、問題の発生箇所を特定することが重要です。 このように、エラーの原因は多岐にわたるため、段階的に調査を進めることが効果的です。ネットワークの構成や設定に関する正確な理解と、適切な対応策を講じることで、「ENETUNREACH(101)」エラーの解消に繋がります。情報工学研究所では、こうした実践的な事例と対応策を提供し、システムの安定運用をサポートしています。 ※当社は、細心の注意を払って当社ウェブサイトに情報を掲載しておりますが、この情報の正確性および完全性を保証するものではありません。当社は予告なしに、当社ウェブサイトに掲載されている情報を変更することがあります。当社およびその関連会社は、お客さまが当社ウェブサイトに含まれる情報もしくは内容をご利用されたことで直接・間接的に生じた損失に関し一切責任を負うものではありません。



エラーの根本原因を特定し、効果的に対処するためには、詳細な調査と正確な診断が不可欠です。まず、ネットワークの状態を確認するために、コマンドラインツールを活用します。例えば、「traceroute」や「ping」コマンドを使って、通信経路の途中で問題が発生している箇所を特定します。これらのツールは、パケットの経路や応答時間を示し、どの段階で通信が途切れているのかを明らかにします。 次に、ルーティングテーブルの内容を確認します。LinuxやUnix系システムでは、「route」や「ip route」コマンドを使って、登録されている経路情報を一覧表示します。目的のネットワークへの経路が存在しない、または誤った経路が登録されている場合は、適切な経路を追加または修正します。これにより、システムが正しい経路を通じて通信できるようになり、エラーの発生を防ぎます。 また、セキュリティポリシーやファイアウォールの設定も詳細に点検します。特定の通信を遮断しているルールが原因の場合、設定を見直し必要な通信を許可します。これには、ファイアウォールのルールを一時的に無効化して通信の妨げになっているかどうかを検証する方法も有効です。 さらに、ネットワークインターフェースの状態やハードウェアの健全性も確認します。NICの状態やケーブルの接続状況を点検し、問題があれば交換や修理を行います。こうした調査を段階的に進めることで、原因を絞り込み、的確な対策を講じることが可能となります。 この一連の調査と対応は、エラーの再発防止に役立つだけでなく、システム全体のネットワーク運用の信頼性向上にも寄与します。情報工学研究所では、こうした実践的な調査手法と対応策を提供し、システムの安定運用をサポートしています。 ※当社は、細心の注意を払って当社ウェブサイトに情報を掲載しておりますが、この情報の正確性および完全性を保証するものではありません。当社は予告なしに、当社ウェブサイトに掲載されている情報を変更することがあります。当社およびその関連会社は、お客さまが当社ウェブサイトに含まれる情報もしくは内容をご利用されたことで直接・間接的に生じた損失に関し一切責任を負うものではありません。



エラーの根本原因を特定し、適切な対応策を講じるためには、正確な診断と計画的な作業が不可欠です。まず、ネットワークの状態を詳細に把握するために、複数のコマンドラインツールを併用します。例えば、「traceroute」や「ping」を使えば、通信経路の途中で問題が発生している箇所や、応答の遅延・途切れを確認できます。これらの結果から、通信の断絶ポイントや遅延の原因を特定し、次のステップへ進むことができます。 次に、ルーティングテーブルの内容を確認します。LinuxやUnix系のシステムでは、「route」や「ip route」コマンドを利用し、登録されている経路情報を一覧表示します。目的のネットワークに向かう経路が存在しない場合や誤った経路が設定されている場合は、適切な経路を追加または修正します。これにより、システムが正しい通信経路を通じてデータを送受信できるようになり、エラーの再発を防止します。 また、セキュリティ設定やファイアウォールのルールも詳細に点検します。特定の通信が遮断されている場合、設定の見直しや一時的なルールの無効化を行い、通信の妨げになっている要因を特定します。必要に応じて、通信を許可するルールを追加し、ネットワークの正常性を回復させます。 さらに、ネットワークインターフェースやハードウェアの状態も確認します。NIC(ネットワークインターフェースカード)の故障やケーブルの断線などの物理的問題が原因の場合は、ハードウェアの点検と交換を行います。これらの調査と対策を段階的に進めることで、問題の根本原因を特定し、確実な解決策を実施できます。 こうした一連の作業は、単にエラーを解消するだけでなく、システムの安定性と信頼性を向上させる重要なステップです。情報工学研究所では、実践的な調査手法と対応策を提供し、システムの継続的な運用を支援しています。 ※当社は、細心の注意を払って当社ウェブサイトに情報を掲載しておりますが、この情報の正確性および完全性を保証するものではありません。当社は予告なしに、当社ウェブサイトに掲載されている情報を変更することがあります。当社およびその関連会社は、お客さまが当社ウェブサイトに含まれる情報もしくは内容をご利用されたことで直接・間接的に生じた損失に関し一切責任を負うものではありません。



エラーの根本原因を正確に把握し、適切な対策を講じるためには、計画的なアプローチと継続的な監視が不可欠です。まず、ネットワークの状態を詳細に分析することが重要です。複数の診断ツールを併用し、通信経路の確認や遅延の有無、パケットロスの状況を把握します。例えば、「traceroute」や「ping」コマンドを使うことで、通信の途中で問題が発生している箇所や応答の遅延を特定できます。次に、ルーティングテーブルの内容を確認し、必要に応じて経路の追加や修正を行います。これにより、システムが正しい経路を通じて通信できるようになり、エラーの再発防止につながります。さらに、セキュリティ設定やファイアウォールのルールも詳細に点検し、通信を妨げている設定があれば見直します。最後に、ハードウェアの状態も確認し、必要に応じて交換や修理を行います。これらの一連の作業を定期的に実施し、ネットワークの健全性を維持することが、システムの安定運用と信頼性向上に直結します。情報工学研究所では、こうした実践的な診断と対応策を提供し、システムの継続的な安定性確保をサポートしています。 ※当社は、細心の注意を払って当社ウェブサイトに情報を掲載しておりますが、この情報の正確性および完全性を保証するものではありません。当社は予告なしに、当社ウェブサイトに掲載されている情報を変更することがあります。当社およびその関連会社は、お客さまが当社ウェブサイトに含まれる情報もしくは内容をご利用されたことで直接・間接的に生じた損失に関し一切責任を負うものではありません。



本記事では、「ENETUNREACH(101)」エラーの原因と、その対策について詳しく解説しました。ネットワークの根本的な問題は、ルーティング設定の誤りやネットワーク構成の不備、セキュリティポリシーの影響など多岐にわたります。これらを正確に把握し、段階的に調査と対応を進めることが、エラーの解消とシステムの安定運用に不可欠です。具体的には、コマンドラインツールを活用した通信経路の確認、ルーティングテーブルの見直し、セキュリティ設定の調整、ハードウェアの点検と交換など、複合的なアプローチが求められます。これらの作業を継続的に行うことで、ネットワークの信頼性を高め、システムのダウンタイムを最小限に抑えることが可能です。システム管理者やIT担当者は、正確な情報収集と計画的な対応を心掛け、ネットワークの健全性維持に努めることが重要です。情報工学研究所は、こうした実践的な知見とサポートを提供し、システムの安定運用を支援しています。



ネットワークの安定運用とトラブルの未然防止には、日常的な監視と定期的な設定見直しが欠かせません。今回ご紹介した「ENETUNREACH(101)」エラーの対策を参考に、まずはご自身のネットワーク構成やルーティング設定を見直すことから始めてみてはいかがでしょうか。もし、より専門的な診断や対策が必要な場合には、信頼できる技術サポートや専門業者への相談も検討してください。システムの安定性は、日々の適切な管理と迅速な対応によって維持されます。私たち情報工学研究所は、こうしたネットワークトラブルの解決に役立つ情報やサポートを提供し、皆さまのシステム運用を支援しています。必要に応じて、専門的なアドバイスや具体的な対応策についてお気軽にお問い合わせください。



ネットワークのトラブル対応においては、正確な情報収集と段階的な調査が重要です。まず、コマンドラインツールを用いた診断結果はあくまで目安であり、結果だけに頼ることなく、物理的な接続やハードウェアの状態も併せて確認する必要があります。また、ルーティングの変更や設定の修正は、他のネットワーク機器やシステム全体に影響を及ぼす可能性があるため、事前に十分な検討とバックアップを行うことが望ましいです。特に、セキュリティポリシーやファイアウォールの設定変更は、ネットワークの安全性を損なわない範囲で行うことが求められます。さらに、ハードウェアの故障や物理的な問題は、専門的な知識を持つ技術者による点検と修理が必要です。これらの作業を行う際には、適切な手順と注意事項を守り、誤った操作や不要な変更を避けることが、トラブルの拡大や再発防止に繋がります。最後に、ネットワークの状態は常に変化するため、定期的な監視と見直しを継続的に行うことが、安定運用の基本となります。これらの注意点を踏まえ、慎重かつ計画的に対応を進めることが、システムの信頼性向上に寄与します。※当社は、細心の注意を払って当社ウェブサイトに情報を掲載しておりますが、この情報の正確性および完全性を保証するものではありません。当社は予告なしに、当社ウェブサイトに掲載されている情報を変更することがあります。当社およびその関連会社は、お客さまが当社ウェブサイトに含まれる情報もしくは内容をご利用されたことで直接・間接的に生じた損失に関し一切責任を負うものではありません。



補足情報


※株式会社情報工学研究所は(以下、当社)は、細心の注意を払って当社ウェブサイトに情報を掲載しておりますが、この情報の正確性および完全性を保証するものではありません。当社は予告なしに、当社ウェブサイトに掲載されている情報を変更することがあります。当社およびその関連会社は、お客さまが当社ウェブサイトに含まれる情報もしくは内容をご利用されたことで直接・間接的に生じた損失に関し一切責任を負うものではありません。