Linux(Ubuntu等)において、デフォルトゲートウェイへの疎通ができない場合の切り分けポイントと、再起動後も設定を有効にするための恒久的な設定方法をまとめます。
問題が発生した際は、以下のレイヤー順にコマンドを実行して状態を確認します。
| 階層 | 確認コマンド | チェック項目 |
|---|---|---|
| L1-L2 (物理・リンク) | ip link showip neigh show |
インターフェースが UP か。ゲートウェイのMACアドレスが REACHABLE になっているか。 |
| L3 (ネットワーク) | ip addr showip route show |
IPとサブネットマスク(例: /16)が正しいか。default via に正しいゲートウェイが設定されているか。 |
| L4 (セキュリティ) | sudo iptables -L -nsudo ufw status |
policy DROP によってパケットが遮断されていないか。特に INPUT チェーンを確認。 |
127.0.0.1 (localhost) への ping が通らない場合は、OS内部のファイアウォールがすべての通信を遮断している可能性が非常に高いです。
ip addr や ip route コマンドでの設定は再起動で消去されます。恒久的な設定は Netplan などの設定ファイルに記述します。
# /etc/netplan/ 内のyamlファイルを編集 (例: 01-netcfg.yaml)
network:
version: 2
renderer: networkd
ethernets:
enp4s0: # インターフェース名
dhcp4: no
addresses:
- 192.168.14.38/16 # 自身の固定IP
routes:
- to: default
via: 192.168.250.1 # デフォルトゲートウェイ
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
設定反映コマンド: sudo netplan apply
iptablesを直接操作するよりも、Ubuntu標準のUFWを利用することで、自身からのアウトゴーイング通信(およびその応答パケット)の許可を安全かつ確実に維持できます。
# 基本ポリシーの設定 (外部からの入力を拒否、自身からの出力を許可) sudo ufw default deny incoming sudo ufw default allow outgoing # 必要な通信の許可 sudo ufw allow 22/tcp # SSHを許可 sudo ufw allow icmp # pingを許可 # ファイアウォールの有効化 (再起動後も自動適用) sudo ufw enable
ip neigh が FAILED になる。ip neigh は REACHABLE だが ping がパケットロスする。iptables の policy を確認し、DROP になっていれば許可ルールを追加。作成日: 2024年 | ネットワーク管理ナレッジ