仮想 Linux インターフェースの「ネットワークに到達できません」エラーをデバッグする方法

仮想 Linux インターフェースの「ネットワークに到達できません」エラーをデバッグする方法

システムにはループバック (lo) と仮想インターフェイスしかありません。他のすべてのインターフェイスを閉じました。また、ファイアウォール、selinux、iptables も停止しました。ルート テーブル内の IP アドレスに ping を実行したいのですが、以下のように「ネットワークに到達できません」というエラーが表示されます。

このような問題にどのように対処すればよいかを知りたいです。dmesg またはシステム メッセージには何も表示されません。インターフェイスに到達できないのはなぜですか。また、どうすれば問題を特定できますか。

前もって感謝します

# ping 172.99.0.2
PING 172.99.0.2 (172.99.0.2) 56(84) bytes of data.
ping: sendmsg: Network is unreachable
ping: sendmsg: Network is unreachable

# ifconfig 
gtp1: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 0
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 479  bytes 40888 (40.8 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 479  bytes 40888 (40.8 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
172.99.0.2      0.0.0.0         255.255.255.255 UH    0      0        0 gtp1

# find / -name gtp1
/proc/sys/net/ipv4/conf/gtp1
/proc/sys/net/ipv4/neigh/gtp1
/sys/class/net/gtp1
/sys/devices/virtual/net/gtp1

答え1

まあ、このアドレスはルーティング テーブルにあっても、このルートに割り当てられているインターフェイス自体に IP がないため、このアドレスを ping することはできません。そのため、ホストはそこにパケットを送信できません。

一般的に、ネットワークについて学びたいときは、まず Wireshark/tcpdump を使ってみることをお勧めします。こうすることで、パケットの流れ、アドレス指定の仕組み、低レベルのトラフィックなどを確認できます。たとえば、ブラウザーで (例) httpbin.org/ip に接続したときに表示されるすべてのパケットを理解しようとします。

関連情報