两个 IPv4 能不能直接二层/三层按「同一网段」通信,看的不是长得像不像,而是网络号是否相同。网络号 = IP 和子网掩码按位与。
掩码里连续的 1 表示网络部分。255.255.255.0 是 /24,前 24 位相同才算一段。
从 CIDR 算出范围
以教材网段 192.168.1.0/24 为例:
| 值 | |
|---|---|
| 掩码 | 255.255.255.0 |
| 网络地址 | 192.168.1.0 |
| 广播地址 | 192.168.1.255 |
| 可用主机 | 192.168.1.1 ~ 192.168.1.254 |
| 网关(常见习惯) | 常取 192.168.1.1,不是语法规定 |
给容器划网时,subnet / gateway 就填这张表里的值,不要和宿主机其它网冲突。
判断两个 IP 是否同网段
192.168.0.120 和 192.168.1.11:
- 掩码
255.255.255.0:前 24 位分别是192.168.0和192.168.1,不同段 - 掩码
255.255.0.0(/16):前 16 位都是192.168,同一段
算法:两边都和掩码做 AND,结果相等就是同一网络号。不要再用「A/B/C 类只看前几段」当唯一标准——有了 CIDR,网络边界由掩码长度说了算,10.0.0.0/12 和 10.0.0.0/24 不是一回事。
Docker 自定义 bridge、虚拟机 Host-Only、办公网 VLAN,出问题先把掩码和网络号对上,再查防火墙。