在Linux系统中,网关(Gateway)是网络通信的关键节点,用于连接不同网络段,当目标地址不在本地网络时,数据包会通过网关转发到其他网络,查看网关信息是网络配置和故障排查的基础操作,本文将详细介绍Linux系统中查看网关的多种方法,涵盖常用命令、配置文件及网络管理工具,帮助用户根据不同场景灵活选择。

使用ip route命令查看网关(推荐方法)
ip route是现代Linux系统中查看路由表的核心命令,能够清晰展示本地网络的路由规则,包括默认网关信息。
命令格式:
ip route show # 或简写为 ip route
输出示例:
default via 192.168.1.1 dev ens33 proto dhcp metric 100
192.168.1.0/24 dev ens33 proto kernel scope link src 192.168.1.100 metric 100
关键解析:
default via 192.168.1.1:表示默认网关地址为168.1.1,dev ens33指明网关所在的网络接口为ens33,proto dhcp表示通过DHCP协议获取。- 若系统配置了多个网关,
metric值越小,优先级越高(默认网关的metric通常为最低)。
适用场景:几乎所有Linux发行版(如Ubuntu、CentOS、Debian等),推荐作为日常查看网关的首选命令。
使用netstat命令查看网关
netstat是传统的网络工具,通过查看路由表也能获取网关信息,但在新版Linux中逐渐被ip命令替代。
命令格式:
netstat -rn
参数说明:
-r:显示路由表;-n:以数字形式显示地址(避免DNS解析,加快速度)。
输出示例:
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 ens33
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33
关键解析:

Destination为0.0.0(代表所有未知目标)、Gateway为168.1.1的行即为默认网关,Flags中的UG表示“网关”(Gateway)和“上行”(Up)。
适用场景:适用于较老或未安装iproute2工具的Linux系统(如CentOS 6及以前版本)。
通过/proc/net/route文件查看网关
Linux内核会将路由表信息存储在/proc/net/route文件中,直接查看该文件可获取底层路由数据(需十六进制解析)。
命令格式:
cat /proc/net/route
输出示例(部分):
Iface Destination Gateway Flags ...
ens33 00000000 0101A8C0 0003 ...
ens33 00A8C0FF 00000000 0001 ...
关键解析:
Destination为00000000(十六进制,对应0.0.0)的行,Gateway为0101A8C0(转换为十进制为168.1.1)即为默认网关。- 需手动转换十六进制:例如
0101A8C0分段反转(C0 A8 01 01),再转十进制为168.1.1。
适用场景:脚本自动化或需要直接读取内核路由表时,适合有一定Linux基础的用户。
查看网络配置文件获取网关信息
网关信息通常也会存储在系统的网络配置文件中,通过编辑文件可永久修改网关,同时也能查看当前配置。
CentOS/RHEL系统(NetworkManager未启用)
配置文件路径:/etc/sysconfig/network-scripts/ifcfg-网卡名(如ifcfg-ens33) 示例**:
DEVICE=ens33 BOOTPROTO=dhcp ONBOOT=yes DEFROUTE=yes GATEWAY=192.168.1.1
关键解析:GATEWAY字段直接指定了网关地址。
Debian/Ubuntu系统
配置文件路径:/etc/network/interfaces 示例**:

auto ens33
iface ens33 inet dhcp
gateway 192.168.1.1
关键解析:gateway字段定义网关。
使用NetworkManager的系统(Ubuntu 18.04+、CentOS 7+)
可通过nmcli命令查看连接配置中的网关信息:
nmcli connection show "连接名称" | grep gateway # 或查看所有连接的网关 nmcli g show default
输出示例:
gateway: 192.168.1.1
适用场景:需要永久修改网关或确认配置文件与实际是否一致时,适合系统管理员。
多网卡环境下查看特定网卡的网关
若服务器存在多个网卡(如eth0、eth1),可通过添加dev参数指定网卡查看其网关:
ip route show dev ens33
输出示例:
default via 192.168.1.1 dev ens33 proto dhcp metric 100
192.168.1.0/24 dev ens33 proto kernel scope link src 192.168.1.100 metric 100
关键解析:仅显示ens33网卡的网关信息,避免多网卡时混淆。
不同查看方法对比
| 方法 | 命令示例 | 适用场景 | 优点 |
|---|---|---|---|
ip route |
ip route show |
现代Linux系统(推荐) | 输出清晰,支持详细路由信息 |
netstat -rn |
netstat -rn |
较老Linux系统 | 兼容性好,无需额外安装 |
/proc/net/route |
cat /proc/net/route |
脚本自动化、底层调试 | 直接读取内核数据,无需工具 |
| 配置文件查看 | cat /etc/sysconfig/network-scripts/ifcfg-ens33 |
永久修改网关、确认配置 | 可直接编辑,适合管理员 |
nmcli(NetworkManager) |
nmcli g show default |
使用NetworkManager的系统 | 图形化工具支持,动态管理 |
相关问答FAQs
Q1: 如何永久修改Linux系统的默认网关?
A1: 修改方法取决于系统使用的网络管理工具:
- NetworkManager系统(Ubuntu/CentOS 7+):使用
nmcli命令,例如将网关改为168.1.254:sudo nmcli connection modify "连接名称" ipv4.gateway 192.168.1.254 sudo nmcli connection down "连接名称" && sudo nmcli connection up "连接名称"
- 传统配置文件系统(CentOS 6/Debian旧版):编辑网卡配置文件(如
/etc/sysconfig/network-scripts/ifcfg-ens33),修改GATEWAY字段为168.1.254,保存后重启网络服务:sudo systemctl restart network
Q2: 为什么用ip route查不到网关信息?
A2: 可能的原因及解决方法:
- 网络接口未启动:确认网卡处于
UP状态,使用ip link show查看接口状态,若为DOWN,则通过sudo ip link set ens33 up启动; - 未配置默认路由:系统可能未设置默认网关,需手动添加(临时)或检查DHCP是否正确分配网关;
- NetworkManager未启用或冲突:若使用NetworkManager,确保服务运行(
sudo systemctl status NetworkManager),避免与network服务冲突(停用sudo systemctl stop network)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/28566.html