Linux系统指令之 —— ip route route
Linux系统指令之 —— ip route & route
route add -net 10.32.0.0 netmask 255.255.0.0 gw 10.32.155.1 dev eth0
1. route
- 这是 Linux 系统上早期用来管理路由表的命令。
- 现代 Linux 一般推荐用
ip route
,但route
在很多发行版上仍然可用。
2. add
- 表示向内核的路由表 添加 一条新路由规则。
3. -net 10.32.0.0
-net
表示目标是一个 网络(而不是单个主机)。10.32.0.0
是目标网络地址。
4. netmask 255.255.0.0
- 指定子网掩码。
255.255.0.0
对应的 CIDR 表示法是/16
。- 所以目标网络实际上是 10.32.0.0/16,即所有 IP 从
10.32.0.0
到10.32.255.255
。
5. gw 10.32.155.1
gw
是 网关(gateway) 的缩写。- 表示凡是去往
10.32.0.0/16
网段的流量,下一跳应该交给网关 10.32.155.1 来转发。
6. dev eth0
- 指定要通过的网络接口,这里是 eth0。
- 也就是告诉内核:去这个网段的流量,从
eth0
网卡发出去。
运行效果
执行这条命令后,路由表会多一条记录:
Destination Gateway Genmask Flags Iface
10.32.0.0 10.32.155.1 255.255.0.0 UG eth0
含义:去往 10.32.0.0/16
的数据包,统一发给网关 10.32.155.1
,并走 eth0
网口。
用法场景
- 当机器有多个网络接口,或者默认网关无法直达某个网段时,需要手动指定路由。
- 比如所在的局域网中,部分
10.32.x.x
的设备需要通过某个路由器(10.32.155.1
)才能访问。
现代写法(推荐)
等效的 iproute2 新命令写法是:
ip route add 10.32.0.0/16 via 10.32.155.1 dev eth0
ip route add 10.32.0.0/16 via 10.32.155.1 dev eth0
ip route add 10.32.0.0/16 via 10.32.155.1 dev eth0
1. ip route
- 属于
iproute2
工具集,比老的route
命令更现代、更推荐。 - 用来查看或修改内核路由表。
常用子命令:
ip route show
→ 查看当前路由表ip route add
→ 添加新路由ip route del
→ 删除路由
2. add
- 表示向路由表中添加一条规则。
3. 10.32.0.0/16
- 目标网段(Destination Network)。
/16
表示前 16 位是网络号,即子网掩码255.255.0.0
。- 覆盖 IP 范围:
10.32.0.0
–10.32.255.255
。
换句话说:所有发往 10.32.x.x
的流量都会匹配这条路由。
4. via 10.32.155.1
- 下一跳网关(Next Hop Gateway)。
- 规则是:数据包到达本机后,如果目的 IP 属于
10.32.0.0/16
,就交给10.32.155.1
来转发。 - 注意:本机必须能直连到
10.32.155.1
,否则无法生效。
5. dev eth0
- 指定使用的网络接口(网卡)。
- 表示流量要从
eth0
口发出去。 - 如果不写
dev
,系统会自己根据网关 IP 查找合适的接口,但手动写上能避免歧义。
运行效果
执行完后,ip route show
中会多一条:
10.32.0.0/16 via 10.32.155.1 dev eth0
含义:凡是目标 IP 落在 10.32.0.0/16
的流量,走 eth0
网卡,交给 10.32.155.1
网关。
使用场景
- 多网段接入:
机器有多个网卡,不同网段的流量要分别走不同的网关。 - 访问特定内网:
某些局域网 IP 需要通过一个跳板路由器才能访问。 - 策略路由:
配合ip rule
可以做复杂路由策略,例如 VPN 流量分流。
对比旧命令
等价的 route
命令写法:
route add -net 10.32.0.0 netmask 255.255.0.0 gw 10.32.155.1 dev eth0
新工具 ip
更简洁,推荐使用。
问题1:route add -net default gw 10.32.155.1
和 route add -net 10.32.0.0 netmask 255.255.0.0 gw 10.32.155.1 dev eth0
这两条指令在执行上有什么异同吗,执行后可以达到同样的效果么?
两条 route
命令在语义上并不等价,它们的作用、匹配范围和副作用都不同。
- 默认路由(catch-all)(写法里通常应是下面这种):
# 旧的 route 工具
sudo route add default gw 10.32.155.1# 推荐的 iproute2 写法
sudo ip route add default via 10.32.155.1 dev eth0
这会添加一条 0.0.0.0/0(default) 路由,匹配所有目的地址,除非有更具体的路由条目。
- 指定网络路由(给出的第二条):
sudo route add -net 10.32.0.0 netmask 255.255.0.0 gw 10.32.155.1 dev eth0# 或 iproute2 等价写法
sudo ip route add 10.32.0.0/16 via 10.32.155.1 dev eth0
这会添加一条 10.32.0.0/16 的路由,仅匹配去往 10.32.0.0
–10.32.255.255
的目的地址。
关键区别(逐条说明)
-
匹配范围(最重要)
default
(0.0.0.0/0)→ 匹配 所有目的地址(即没有更具体路由时走这里)。10.32.0.0/16
→ 只匹配落在10.32.x.x
范围内的地址。
结论:两者通常不会达到相同效果。只有在非常特殊的场景下(例如路由表中除了这条 /16 外没有任何路由),把 default 指向该网关才会让 10.32/16 的流量也走该网关,但 default 还会影响其他所有地址。
-
路由优先级(最长前缀匹配)
- Linux 使用“最长前缀匹配”。如果同时存在
default
和10.32.0.0/16
,访问10.32.1.5
会匹配/16
(更具体),其他地址才走 default。
- Linux 使用“最长前缀匹配”。如果同时存在
-
副作用
- 添加 default 会把所有未被更具体路由覆盖的流量(包括外网)发给
10.32.155.1
,可能把非目标流量误导到内部网关,产生连通性/安全问题。 - 添加 /16 只影响那一网段,副作用小且更可控。
- 添加 default 会把所有未被更具体路由覆盖的流量(包括外网)发给
-
可达性(网关必须可达)
- 无论 default 还是 /16,网关
10.32.155.1
必须对本机可达(即网关地址需在本机某接口的直连子网内或已有一条把到网关的路由),否则会看到错误(SIOCADDRT: Network is unreachable
)或路由存在但不可用。 - 指定
dev eth0
可以避免歧义(强制把流量从该接口发出);不指定时内核会试图找出到网关的接口。
- 无论 default 还是 /16,网关
-
命令语法注意
route add -net default gw ...
这个写法不常见并可能被视为错误。标准写法为route add default gw ...
或route add -net 0.0.0.0 netmask 0.0.0.0 gw ...
。- 推荐使用
ip route
(iproute2):更现代、语义清楚,例:ip route add default via X dev eth0
或ip route add 10.32.0.0/16 via X dev eth0
。
-
持久性
- 这些命令只修改内核的临时路由表(重启后消失)。要永久生效需把它写入网络配置文件(Debian/Ubuntu:
/etc/network/interfaces
、netplan,RedHat:/etc/sysconfig/network-scripts/ifcfg-*
等,或网络管理器/systemd-networkd 的配置)。
- 这些命令只修改内核的临时路由表(重启后消失)。要永久生效需把它写入网络配置文件(Debian/Ubuntu:
-
调试与验证
- 查看路由:
ip route show
或route -n
- 查询某目的地址实际走哪条路:
ip route get <ip>
,例如ip route get 10.32.1.5
或ip route get 8.8.8.8
。
- 查看路由:
-
示例(同时存在两条路由时)
-
路由表可能这样:
10.32.0.0/16 via 10.32.155.1 dev eth0 default via 10.32.155.1 dev eth0
访问
10.32.1.5
→ 匹配/16
;访问8.8.8.8
→ 匹配default
。
-
-
性能/策略
- 若只希望把某个内网段走特定网关(例如跨链路隧道、专用路由),应用 /16(或更精确的掩码)。
- 若需要把“所有流量”通过某台网关(例如把整个机器的出口改到另一台路由器或VPN),才用 default。
常见错误/提示
-
如果添加 default 时没有
dev
,且内核找不到到10.32.155.1
的下一跳,会报Network is unreachable
。 -
不要随意把 default 指向内部网关,除非确知该网关能处理所有想要的流量(例如它有 NAT 与外网连通)。
-
使用
ip route
更稳妥、可读性更好:- 默认路由:
sudo ip route add default via 10.32.155.1 dev eth0
- 指定网段:
sudo ip route add 10.32.0.0/16 via 10.32.155.1 dev eth0
- 默认路由:
简短结论
- 不等价。
default
是“通配所有目的”的路由;10.32.0.0/16
只是“去往该网段”的路由。- 在大多数场景下执行后 不会 达成同样效果(除非不在乎把所有流量也发给同一个网关,并且网关可达且能处理这些流量)。
问题2:这两个指令是否可以让10.32.152.xx的网络访问到10.32.155.xx的设备网络?
不一定。 这两条命令本身并不会自动“让 10.32.152.xx 能访问 10.32.155.xx”,它们只是修改主机的路由表;能否连通还取决于子网掩码(on-link/非 on-link)、下一跳(10.32.155.1)在 L2 是否可达、该网关是否做 IP 转发/路由以及目标网段的返回路由和防火墙设置。
给出的两条命令(原样)
route add default gw 10.32.155.1
route add -net 10.32.0.0 netmask 255.255.0.0 gw 10.32.155.1 dev eth0
(等效的 iproute2 写法:ip route add default via 10.32.155.1 dev eth0
和 ip route add 10.32.0.0/16 via 10.32.155.1 dev eth0
。)
决定能否连通的关键条件(必须满足)
-
下一跳(10.32.155.1)必须对本机可达的 L2 地址(可 ARP 到),即主机必须能在物理/二层网络上找到 10.32.155.1。
- 如果 10.32.155.1 不在同一广播域(不同 VLAN / 物理隔离)且没有其它路由到它,则 ARP 会失败,路由虽然存在但不可用(会报
Network is unreachable
或发包无响应)。
- 如果 10.32.155.1 不在同一广播域(不同 VLAN / 物理隔离)且没有其它路由到它,则 ARP 会失败,路由虽然存在但不可用(会报
-
网关 10.32.155.1 必须启用 IP 转发并能把流量送到 10.32.155.x(即网关本身能路由到目标子网)。
-
目标设备(10.32.155.xx)必须有返回到 10.32.152.xx 的路由(通常是它们的默认路由指向同一台网关或有静态路由)。否则即使请求到达,返回包走不到源主机。
-
中间设备(路由器、防火墙)没有阻挡转发的策略/ACL。
-
主机本地路由优先级/子网掩码不会把目标当作 on-link 并改变转发行为(见下文具体情形)。
按典型网络配置分情况说明
情形 A — 源主机(10.32.152.x)配置为 /16
(255.255.0.0)
- 主机认为
10.32.0.0/16
是本地直连网络,访问10.32.155.x
会直接尝试 ARP 目标 IP(不走网关)。 - 结论:这两条命令通常没必要也不生效(内核已存在一个更“直接”的 connected route,直接通信依赖 L2 可达性)。
- 若 L2 被分割(VLAN 隔离),即使
/16
配置,ARP 也会失败;解决应当通过正确的网段划分或在网络设备上做路由/桥接,而不是只在主机上加 route。
情形 B — 源主机配置为 /24
(255.255.255.0),即 10.32.152.0/24
- 目标 10.32.155.x 不在本地子网 → 需要路由/下一跳。
route add -net 10.32.0.0/16 via 10.32.155.1 dev eth0
:对于目的 10.32.155.x,内核会匹配这条 /16 路由并把数据包发给下一跳 10.32.155.1(通过 eth0)。但 前提是主机能在 eth0 上 ARP 到 10.32.155.1(即 10.32.155.1 必须在相同 L2 广播域或有别的可达路径到该网关)。如果 ARP 不通,则路由存在但不可用。route add default gw 10.32.155.1
:会把所有非本地/无更具体匹配的流量都发往 10.32.155.1。对 10.32.155.x 同样适用(因为没有更具体的路由时会走 default)。同样要求能在 L2 上到达网关。- 结论:在 /24 情况下,这两条命令可以使主机把去 10.32.155.x 的流量发给 10.32.155.1,但前提是:网关在 L2 可达 && 网关会转发到 10.32.155.x && 目标网段有返回路由。
其它要点与常见误区
- 默认路由的副作用:
route add default gw 10.32.155.1
会影响所有外网流量,可能把不该走内部网关的流量也发过去(慎用)。 - 路由存在 ≠ 可达:路由表里看到条目并不代表成功转发,必须检查下一跳(ARP)和中间路由器是否真正转发。
- 连通性测试:即便添加了路由,也要做 ping/traceroute 来验证并检查返回路径。
- 内核选择路由的规则:内核采用最长前缀匹配;连接路由(scope link)通常优先于带 gw 的路径(所以在 /16 on-link 情形下 /16 via gw 可能被忽略)。
- 代理 ARP / 静态 ARP:在特殊环境下可以用代理 ARP 或在主机上添加静态 ARP/路由把网关“骗”成 on-link,但那是网络hack,需谨慎。
推荐的检查与验证命令(在源主机上执行)
# 查看路由表
ip route show# 查看到某个目标的路由决策(会显示下一跳)
ip route get 10.32.155.10# 检查能否到达网关(L2 可达)
ping -c 3 10.32.155.1
arp -n # 或 ip neigh show# 如果 ping 网关不通,用 traceroute/tracepath 看出在哪跳失败
traceroute 10.32.155.10# 在网关上检查是否启用转发(在网关机器上)
sysctl net.ipv4.ip_forward# 在目标机器上检查默认路由是否有返回到源网段
ip route show # 在 10.32.155.x 的设备上
总结(一步到位)
- 如果两端在同一 L2 广播域且子网掩码使它们被视为同一网段(/16),直接可达(不需要这两条命令);
- 如果源是
/24
(10.32.152.0/24),则可以通过下面任一命令使其把流量发到 10.32.155.1,从而到达 10.32.155.x,前提:10.32.155.1 在 L2 上可达且会进行转发,目标网段有返回路径,且无防火墙阻断; route add default gw 10.32.155.1
会把所有非本地流量都发给该网关(影响更大);而route add -net 10.32.0.0/16 via 10.32.155.1
只影响 10.32.0.0/16 这个网段(更精确、更安全)。
问题3:这两条指令在10.32.155.137的设备上执行,10.32.152.20是否可以访问这台设备,能否在10.32.152.20通过ssh连接上10.32.155.137这台设备?
可能可以,也可能不行 —— 取决于子网掩码、二层可达性、网关是否能转发以及目标设备的路由/防火墙设置。
route add default gw 10.32.155.1
route add -net 10.32.0.0 netmask 255.255.0.0 gw 10.32.155.1 dev eth0
一、这些命令在 10.32.155.137 上的作用
-
route add default gw 10.32.155.1
- 在 10.32.155.137 上设置默认网关为
10.32.155.1
(0.0.0.0/0 → 10.32.155.1)。 - 影响:所有目标地址没有更具体路由时,回复包会发到
10.32.155.1
(由该网关负责转发/路由)。
- 在 10.32.155.137 上设置默认网关为
-
route add -net 10.32.0.0 netmask 255.255.0.0 gw 10.32.155.1 dev eth0
- 在 10.32.155.137 上添加一条把
10.32.0.0/16
的流量下一跳指向10.32.155.1
并走eth0
的路由。 - 影响:凡目标落在
10.32.0.0/16
(即包括 10.32.152.x)时,内核会把包交给10.32.155.1
(前提是内核接受这条路由并且网关在 L2 可达)。
- 在 10.32.155.137 上添加一条把
注意:如果
10.32.155.137
自己的接口配置使得10.32.0.0/16
已经是直连网络(on-link)(比如本机 netmask 就是 /16),内核通常会把这些目标视为直连并尝试 ARP 直接发送,而不是通过 gw(路由条目可能被忽略/不生效)。
二、能否从 10.32.152.20
用 SSH 连到 10.32.155.137
,需要满足的条件(逐条)
-
L3 可达性(源到目的):
10.32.152.20
能把包发到10.32.155.137
(取决于源机器的路由表/网关)。 -
目的设备的回复路径必须有效:10.32.155.137 必须有一条能把回复包送回 10.32.152.20 的路由(直接 ARP 或发往正确的网关)。
- 如果在目的设备上执行了
route add default gw 10.32.155.1
,那么回复包会走10.32.155.1
,该网关必须能把包转发到10.32.152.20
并且能到达10.32.152.20
的网段。
- 如果在目的设备上执行了
-
二层(L2)可达性到下一跳:目的设备必须能 ARP 到下一跳
10.32.155.1
(否则 via gw 不可用)。 -
目标主机上的 SSH 服务要在监听并允许 10.32.152.20 访问(sshd 正在运行、防火墙允许 TCP/22)。
-
中间路由器或防火墙没有阻止或做源/目的地址过滤。
-
子网掩码会影响是否走网关:如果任一端的 netmask 使两者被判为“同一子网”,那么内核会尝试直接 ARP;如果 L2 被隔离(不同 VLAN),ARP 会失败,需要路由器中继且双方都有正确路由。
三、典型场景举例(一看就懂)
-
场景 A(同一 VLAN /16):
- 若两台机器都配置为
10.32.0.0/16
(netmask 255.255.0.0)且处于同一 L2 广播域 → 两台主机会直接互相 ARP并直接通信,SSH 应该能通(前提防火墙/sshd 允许)。 - 在这种场景下,在 10.32.155.137 上加那两条路由并不是必需的,也不影响直接连通(可能被内核的直连路由覆盖)。
- 若两台机器都配置为
-
场景 B(10.32.152.20 在不同子网,例如 /24;10.32.155.137 也是 /24):
- 源发到目的会走源侧网关;目的要回复必须有路由。若 10.32.155.137 的默认路由或 /16 via 指向
10.32.155.1
,且10.32.155.1
能路由到 10.32.152.0/24 并返回,则 SSH 可以建立。 - 如果
10.32.155.1
不能转发到 10.32.152.20 或两边回程没有路由,则无法连通。
- 源发到目的会走源侧网关;目的要回复必须有路由。若 10.32.155.137 的默认路由或 /16 via 指向
-
场景 C(目的机把 10.32.0.0/16 指到 gw,但本地 netmask 是 /16):
- 内核通常优先使用本地直连路由,所加的 via /16 可能不会被用到 —— 具体行为取决于路由表优先级、scope 等。结果可能仍然能连通(或不改变现状)。
四、可以马上在两台机器上执行的验证步骤,按顺序做能快速判断能否连通
在 10.32.155.137(目的设备)上执行:
# 1) 查看地址和掩码
ip addr show# 2) 查看路由表
ip route show# 3) 查看 ARP/邻居表,确认是否能 ARP 到网关
ip neigh show# 4) 检查默认路由与添加的路由是否存在(确认生效)
route -n
# 或
ip route | grep 10.32# 5) 检查是否启用 IP 转发(如果扮演路由器/网关角色)
sysctl net.ipv4.ip_forward# 6) 检查防火墙(例:iptables 或 nft)
iptables -L -n -v
# 或
nft list ruleset# 7) 检查 sshd 是否在监听
ss -tnlp | grep :22
# 或
systemctl status sshd
在 10.32.152.20(源)上执行:
# 1) 看路由决策(会告诉下一跳)
ip route get 10.32.155.137
# 预期输出示例: "10.32.155.137 via 10.32.152.1 dev eth0 ..." 或 "10.32.155.137 dev eth0 src 10.32.152.20"# 2) ping 目的并看是否有回应
ping -c 4 10.32.155.137# 3) traceroute 看路径 (若 ping 不通)
traceroute 10.32.155.137# 4) 尝试 ssh(或 telnet 到 22)
ssh -vvv 10.32.155.137
# -vvv 会输出握手细节,帮助定位在哪一步失败(TCP 建立 / SSH 验证 / 超时)
如何通过这些输出判断
ip route get
显示下一跳是某个网关 → 确认该网关在目的端也有路由回源或能转发。ping
成功(ICMP 回应)通常说明 L3 可达且双向路由存在(但 ICMP 可能被防火墙挡)。ssh -vvv
卡在 TCP 三次握手(超时)→ 表示 TCP 到达不了或被防火墙阻挡;能建立 TCP 但 SSH 握手失败 → sshd 配置或认证问题。- 在目的端
ip neigh
如果看不到源或网关的 MAC(或显示 FAILED/STALE),表示 L2 问题或 ARP 不通。
五、操作建议
- 优先确认两端的 netmask 与所在 VLAN:如果原本期望跨子网通信,请确保网络设备上有正确的路由。
- 不要随意在目的机上仅靠
route add default gw ...
把默认网关改为内部网关,除非确定该网关可以处理回程并能转发到源。 - 如果控制网关
10.32.155.1
,确认它启用了 IP 转发并且有到 10.32.152.0/24 的路由;如果网关不是你的,联系网络管理员。 - 在目的机上确认 sshd 在监听且防火墙允许来自 10.32.152.20 的 TCP/22。
- 测试时优先使用
ip route get
、ping
、ssh -vvv
,这些会快速定位问题是路由、L2、还是防火墙/服务问题。
六、总结(回到具体问题)
在
10.32.155.137
上执行列出的两条命令,并不能保证10.32.152.20
一定能 SSH 连接到它。
- 如果两台在同一 L2 且子网掩码使它们互为直连,那么通常可以直接通信(路由命令不是必须的)。
- 如果它们在不同子网,则能否连接取决于:源的路由(能到达目的)、目的的回复路由(添加的 default 或 /16 via 必须能把回复送回源)、网关
10.32.155.1
是否在 L2 可达且能转发、以及防火墙/sshd 状态。 - 实际判定最可靠的办法是按上面的“验证步骤”在两台机器上执行命令来确认 L2/L3 可达和服务状态。
子网掩码 ↔ CIDR 前缀位数对应
CIDR 与子网掩码对照表(IPv4)
CIDR 前缀 | 子网掩码 | 地址数量 | 说明 |
---|---|---|---|
/0 | 0.0.0.0 | 4,294,967,296 | 整个 IPv4 空间 |
/1 | 128.0.0.0 | 2,147,483,648 | |
/2 | 192.0.0.0 | 1,073,741,824 | |
/3 | 224.0.0.0 | 536,870,912 | |
/4 | 240.0.0.0 | 268,435,456 | |
/5 | 248.0.0.0 | 134,217,728 | |
/6 | 252.0.0.0 | 67,108,864 | |
/7 | 254.0.0.0 | 33,554,432 | |
/8 | 255.0.0.0 | 16,777,216 | 典型 A 类网络 |
/9 | 255.128.0.0 | 8,388,608 | |
/10 | 255.192.0.0 | 4,194,304 | |
/11 | 255.224.0.0 | 2,097,152 | |
/12 | 255.240.0.0 | 1,048,576 | 常见内网 10.0.0.0/12 |
/13 | 255.248.0.0 | 524,288 | |
/14 | 255.252.0.0 | 262,144 | |
/15 | 255.254.0.0 | 131,072 | |
/16 | 255.255.0.0 | 65,536 | 典型 B 类网络 |
/17 | 255.255.128.0 | 32,768 | |
/18 | 255.255.192.0 | 16,384 | |
/19 | 255.255.224.0 | 8,192 | |
/20 | 255.255.240.0 | 4,096 | 常见私网段 172.16.0.0/20 |
/21 | 255.255.248.0 | 2,048 | |
/22 | 255.255.252.0 | 1,024 | |
/23 | 255.255.254.0 | 512 | |
/24 | 255.255.255.0 | 256 | 常见 C 类网络 |
/25 | 255.255.255.128 | 128 | |
/26 | 255.255.255.192 | 64 | |
/27 | 255.255.255.224 | 32 | |
/28 | 255.255.255.240 | 16 | |
/29 | 255.255.255.248 | 8 | |
/30 | 255.255.255.252 | 4 | 点对点链路常用 |
/31 | 255.255.255.254 | 2 | 点对点链路(无广播) |
/32 | 255.255.255.255 | 1 | 单一主机 |
总结
/32
→ 单个 IP(主机路由)。/24
→ 典型小网(256 个 IP)。/16
→ 较大网(65K 个 IP)。/0
→ 整个互联网(常用于默认路由)。
CIDR 前缀 ↔ 子网掩码 ↔ 二进制掩码
CIDR | 子网掩码 (十进制) | 子网掩码 (二进制 32 位) |
---|---|---|
/0 | 0.0.0.0 | 00000000.00000000.00000000.00000000 |
/1 | 128.0.0.0 | 10000000.00000000.00000000.00000000 |
/2 | 192.0.0.0 | 11000000.00000000.00000000.00000000 |
/3 | 224.0.0.0 | 11100000.00000000.00000000.00000000 |
/4 | 240.0.0.0 | 11110000.00000000.00000000.00000000 |
/5 | 248.0.0.0 | 11111000.00000000.00000000.00000000 |
/6 | 252.0.0.0 | 11111100.00000000.00000000.00000000 |
/7 | 254.0.0.0 | 11111110.00000000.00000000.00000000 |
/8 | 255.0.0.0 | 11111111.00000000.00000000.00000000 |
/9 | 255.128.0.0 | 11111111.10000000.00000000.00000000 |
/10 | 255.192.0.0 | 11111111.11000000.00000000.00000000 |
/11 | 255.224.0.0 | 11111111.11100000.00000000.00000000 |
/12 | 255.240.0.0 | 11111111.11110000.00000000.00000000 |
/13 | 255.248.0.0 | 11111111.11111000.00000000.00000000 |
/14 | 255.252.0.0 | 11111111.11111100.00000000.00000000 |
/15 | 255.254.0.0 | 11111111.11111110.00000000.00000000 |
/16 | 255.255.0.0 | 11111111.11111111.00000000.00000000 |
/17 | 255.255.128.0 | 11111111.11111111.10000000.00000000 |
/18 | 255.255.192.0 | 11111111.11111111.11000000.00000000 |
/19 | 255.255.224.0 | 11111111.11111111.11100000.00000000 |
/20 | 255.255.240.0 | 11111111.11111111.11110000.00000000 |
/21 | 255.255.248.0 | 11111111.11111111.11111000.00000000 |
/22 | 255.255.252.0 | 11111111.11111111.11111100.00000000 |
/23 | 255.255.254.0 | 11111111.11111111.11111110.00000000 |
/24 | 255.255.255.0 | 11111111.11111111.11111111.00000000 |
/25 | 255.255.255.128 | 11111111.11111111.11111111.10000000 |
/26 | 255.255.255.192 | 11111111.11111111.11111111.11000000 |
/27 | 255.255.255.224 | 11111111.11111111.11111111.11100000 |
/28 | 255.255.255.240 | 11111111.11111111.11111111.11110000 |
/29 | 255.255.255.248 | 11111111.11111111.11111111.11111000 |
/30 | 255.255.255.252 | 11111111.11111111.11111111.11111100 |
/31 | 255.255.255.254 | 11111111.11111111.11111111.11111110 |
/32 | 255.255.255.255 | 11111111.11111111.11111111.11111111 |
规律总结:
- 每增加
/1
,二进制掩码就多一个1
。 - 每个字节 8 位 → 所以
/8 = 255.0.0.0
,/16 = 255.255.0.0
,/24 = 255.255.255.0
。 /32
是所有位全为 1 → 255.255.255.255(只匹配单一主机)。
表示方式 | 点分十进制掩码 | CIDR 前缀 | 含义说明 |
---|---|---|---|
255.255.255.255 | 255.255.255.255 | /32 | 只包含 1 个主机地址(单播或特殊用途) |
255.255.255.0 | 255.255.255.0 | /24 | 包含 256 个地址(254 个可用主机) |
255.255.0.0 | 255.255.0.0 | /16 | 包含 65,536 个地址(65,534 个可用主机) |
255.0.0.0 | 255.0.0.0 | /8 | 包含 16,777,216 个地址(16,777,214 个可用主机) |
总结:
- 255.255.255.255 = /32,等价于一个单独的 IP 地址。
- 常用于指定某个唯一主机,或者广播(取决于上下文)。
场景 | 表示方式 | 含义说明 |
---|---|---|
主机 IP 配置 | 255.255.255.255 (/32) | 指向单个主机的地址掩码,表示只匹配本机自身,不涉及其它主机。常用于路由表中精确匹配某台主机。 |
广播 | 255.255.255.255 | 本地网络广播地址(Limited Broadcast),只发送给同一物理或逻辑网络上的所有主机,不经过路由器转发。 |
路由表 | /32 | 指向单个具体 IP 的路由(Host Route),例如静态路由或 VPN、隧道配置中精确指定某一台设备。 |
DHCP / 网络发现 | 255.255.255.255 | 客户端请求 DHCP 或进行 ARP/网络发现时使用的广播地址。 |
小结
- /32:只匹配一台主机(单播),通常用于路由表中。
- 255.255.255.255 作为广播:用于发送到同一网段所有设备(不经过网关)。
- 根据场景不同,同一个十进制地址有不同含义:单播、广播、路由精确匹配。