如何查看Linux的默认网关?

参考回答

在 Linux 中,可以使用以下命令查看默认网关:

1. 使用 ip route(推荐方式)

ip route show default
Bash

或者更简洁:

ip route | grep default
Bash

示例输出:

default via 192.168.1.1 dev eth0 proto dhcp metric 100

其中:
default via 192.168.1.1 表示默认网关是 192.168.1.1
dev eth0 表示该网关对应的网卡是 eth0

2. 使用 route 命令(传统方式)

route -n
Bash

示例输出:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eth0

其中:
0.0.0.0 代表默认路由。
Gateway 列显示 192.168.1.1,即默认网关。

3. 使用 netstat(已废弃但仍可能可用)

netstat -rn
Bash

这个命令的输出格式与 route -n 类似,显示路由表信息。


详细讲解与拓展

1. ip route show default 解析

ip routeip 命令的子命令,用于管理路由表,它比 route 更现代,适用于所有较新的 Linux 发行版。
它的输出:

default via 192.168.1.1 dev eth0 proto dhcp metric 100

各字段解释:
default:表示默认路由,即所有未明确指定去向的流量都经过这个网关。
via 192.168.1.1:表示数据包通过 192.168.1.1 这个网关转发。
dev eth0:表示该网关绑定的网络接口是 eth0
proto dhcp:表示该路由是由 DHCP 分配的。
metric 100:表示该路由的优先级,数值越小优先级越高。

2. route -n 解析

route -n 直接显示 IP 地址,不进行 DNS 解析,输出类似:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eth0

关键字段:
Destination:目的地址,0.0.0.0 代表默认路由。
Gateway:网关地址,192.168.1.1
Iface:网络接口,eth0
FlagsU 表示路由可用,G 表示它是一个网关。

3. netstat -rn(已过时,不推荐)

netstat -rn 结果与 route -n 相似,但 netstat 命令本身已被 ss 替代,不推荐使用。


拓展知识

1. 获取特定网卡的默认网关

如果有多个网卡(如 eth0wlan0),可以查看某个特定网卡的默认网关:

ip route show default | grep eth0
Bash

2. 查看所有网关

除了默认网关,还可以列出所有路由信息:

ip route show
Bash

示例:

default via 192.168.1.1 dev eth0 proto dhcp metric 100
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100 metric 100

这里:
192.168.1.0/24 代表本地网络。
src 192.168.1.100 是当前网卡的 IP 地址。

3. 如何修改默认网关?

如果想手动修改默认网关,可以使用:

sudo ip route add default via 192.168.1.254 dev eth0
Bash

如果要删除原来的默认网关:

sudo ip route del default
Bash

总结

  • 推荐使用 ip route show default 方式查看默认网关,更现代、适用所有新版本 Linux。
  • route -n 仍然可用,但逐渐被淘汰。
  • netstat -rn 已过时,不建议使用。
  • ip route show 可以查看完整的路由表,适用于多网卡场景。
  • 如果需要修改默认网关,可以用 ip route add default via <网关IP> dev <网卡>

掌握这些命令,能帮助你快速查找、理解和管理 Linux 网络路由信息。

发表评论

后才能评论