如何调试虚拟 Linux 接口的“网络不可达”错误

如何调试虚拟 Linux 接口的“网络不可达”错误

我的系统中只有环回 (lo) 和虚拟接口。我关闭了所有其他接口。我还停止了防火墙、selinux 和 iptables。我想 ping 路由表中的 IP 地址,但我收到如下所示的“网络不可达”错误。

我想了解如何解决此类问题?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

嗯,虽然该地址在路由表中,但您无法 ping 通它,因为分配给此路由的接口本身没有 IP。因此您的主机无法向那里发送数据包。

一般来说,当您想要了解网络时,我建议您开始使用 Wireshark/tcpdump。这样,您将了解数据包如何流动、寻址如何工作、您有哪些低级流量等。例如,尝试了解使用浏览器连接到(例如)httpbin.org/ip 时出现的每个数据包。

相关内容