在Linux系统中,查找当前网络的网关地址有多种命令行方法,以下列举几个常用的。其它的方法也欢迎各位大佬补充一下。方法1:查看路由表(最通用,无需额外工具),网关本质是路由表中的默认路由(default 条目),通过 ip route 或传统 route 命令即可查看。关键信息:default via 后面的 192.168.100.254 就是默认网关。dev enp4s0表示网关通过网卡enp4s0连接。传统命令(net-tools 工具集,现在很多发行版默认不安装了)apt install net-tools# 再执行:route -n
方法2:查看 DHCP 租约文件(适用于 DHCP 分配的网关),如果系统设置是通过DHCP获取ip和网关,系统会在/var/lib/dhcp目录下保存租约信息。我这里是cat /var/lib/dhcp/enp4s0.leases
输出中查找 option routers 字段,后面的 IP 即为网关地址。方法3:通过 nmcli 命令(适用于 NetworkManager 管理的网络),先查看已连接的网络连接名:nmcli connection show --active# 查看该连接的网关信息:nmcli connection show "连接名" | grep IP4.GATEWAY
方法4:通过 ping 测试(间接验证网关),就是去ping常见的网关,其实这方法不好猜。方法5:查看网络接口配置文件(静态ip场景),前提是配置了静态 IP,生产环境100%都是静态ip吧。网关信息会写在网络接口配置文件中,比如使用NetworkManager管理的话,文件就在这里:/etc/NetworkManager/system-connections/连接名.nmconnection
------------------------------------总之,是有多种方法查看到网关地址的。这侧面也说明了Linux有些方面过于灵活导致没有统一性。比起windows,Linux 的网络配置,主打一个薛定谔的联网工具:你永远不知道开机后dhcpcd躺平、NetworkManager装死,还是systemd-networkd在角落默默发力。网归谁管?你都得研究半天,这哪是配网啊,分明是在驯服随机分配的工具精!