Linux 网络基础:IP、子网掩码、网关
·
Linux 网络基础:IP、子网掩码、网关
| 不讲复杂的路由协议,只讲日常配网络需要理解的概念。
从一个场景开始
你有一台服务器,要配 IP:
ip addr add 192.168.1.100/24 dev eth0
192.168.1.100 是 IP,/24 是什么意思?为什么不是 /16 或 /32?网关又是什么?
IP 地址:机器在网络中的"门牌号"
IPv4 地址格式
192.168.1.100
│ │ │ └── 主机号(这台机器的编号)
│ │ └────── 网络号(这个网段的编号)
│ └────────── 网络号
└───────────── 网络号
IP 地址由 4 个 8 位二进制数组成,每个 0~255。
私有 IP vs 公网 IP
| 类型 | 范围 | 用途 |
|---|---|---|
| 公网 IP | 全网唯一 | 能被互联网访问 |
| 私有 IP | 10.0.0.0/8、172.16.0.0/12、192.168.0.0/16 | 内网使用,不能直接访问互联网 |
你家里的路由器、公司内网用的都是私有 IP。要访问互联网,需要经过 NAT(网络地址转换)。
子网掩码:划分网络范围
/24 是什么意思
/24 表示前 24 位是网络号,后 8 位是主机号。
192.168.1.100/24
二进制:11000000.10101000.00000001.01100100
└───────24位网络号──────┘ └─8位主机号─┘
常见的子网掩码
| CIDR | 子网掩码 | 可用主机数 | 典型用途 |
|---|---|---|---|
| /8 | 255.0.0.0 | 1677 万 | 超大型网络 |
| /16 | 255.255.0.0 | 6.5 万 | 大型公司网络 |
| /24 | 255.255.255.0 | 254 | 小型办公室、家庭网络 |
| /32 | 255.255.255.255 | 1 | 单台主机 |
/24 网络的例子
网段:192.168.1.0/24
网络号:192.168.1.0
广播地址:192.168.1.255
可用 IP:192.168.1.1 ~ 192.168.1.254(共 254 个)
注意:.0 是网络号,.255 是广播地址,不能分配给主机。
为什么需要子网掩码
子网掩码告诉机器"哪些位是网络号,哪些位是主机号"。机器判断两个 IP 是否在同一个网段,就是看网络号是否相同。
192.168.1.100/24 和 192.168.1.200/24
网络号都是 192.168.1.0 → 同一个网段,可以直接通信
192.168.1.100/24 和 192.168.2.100/24
网络号不同 → 不同网段,需要经过网关
网关:通往外界的门
网关是什么
网关是一个路由器或三层交换机,负责把你的数据包转发到其他网络。
你的电脑 (192.168.1.100)
│
└── 网关 (192.168.1.1)
│
└── 互联网
什么时候需要网关
- 访问同一个网段的机器(如 192.168.1.200):不需要网关,直接发
- 访问不同网段的机器(如 8.8.8.8):需要网关转发
配置网关
# 临时配置(重启失效)
ip route add default via 192.168.1.1
# 永久配置(Ubuntu)
vim /etc/netplan/00-installer-config.yaml
network:
version: 2
ethernets:
eth0:
addresses:
- 192.168.1.100/24
routes:
- to: default
via: 192.168.1.1
# 永久配置(CentOS)
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
ONBOOT=yes
DNS:域名解析
DNS 是什么
DNS 把域名(如 www.example.com)解析成 IP 地址(如 93.184.216.34)。
配置 DNS
# 临时修改
echo "nameserver 8.8.8.8" > /etc/resolv.conf
# 永久修改(Ubuntu)
vim /etc/systemd/resolved.conf
[Resolve]
DNS=8.8.8.8 8.8.4.4
# 永久修改(CentOS)
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DNS1=8.8.8.8
DNS2=8.8.4.4
测试 DNS
nslookup www.example.com
dig www.example.com
完整的网络配置示例
Ubuntu
# 查看当前配置
ip addr show
ip route show
# 修改配置文件
sudo vim /etc/netplan/00-installer-config.yaml
network:
version: 2
ethernets:
eth0:
addresses:
- 192.168.1.100/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
# 应用配置
sudo netplan apply
CentOS
# 查看当前配置
ip addr show
ip route show
# 修改配置文件
sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=8.8.4.4
ONBOOT=yes
# 重启网络服务
sudo systemctl restart network
常用网络命令
# 查看网卡和 IP
ip addr show
# 或
ifconfig
# 查看路由表
ip route show
# 或
route -n
# 查看网络连接
ss -tlnp
# 或
netstat -tlnp
# 测试连通性
ping 8.8.8.8
# 测试端口
telnet 192.168.1.100 3306
# 或
nc -zv 192.168.1.100 3306
# 追踪路由路径
traceroute 8.8.8.8
# 查看网关
ip route | grep default
常见问题
能 ping 通 IP 但 ping 不通域名
DNS 配置有问题。检查 /etc/resolv.conf 或网络配置文件中的 DNS 设置。
能 ping 通网关但 ping 不通外网
可能是网关配置错了,或者网关本身没有外网连接。
# 检查网关是否可达
ping 192.168.1.1
# 检查路由表
ip route show
同一个网段的两台机器 ping 不通
检查:
- 防火墙是否放行 ICMP
- 两台机器的子网掩码是否一致
- 是否有 VLAN 隔离
IP 冲突
两台机器用了同一个 IP,会导致网络异常。
# 检查 IP 是否被占用
arping -D -I eth0 192.168.1.100
总结
| 概念 | 作用 | 常见值 |
|---|---|---|
| IP 地址 | 机器在网络中的标识 | 192.168.1.100 |
| 子网掩码 | 划分网络范围 | /24、255.255.255.0 |
| 网关 | 通往其他网络的出口 | 192.168.1.1 |
| DNS | 域名解析 | 8.8.8.8 |
配网络时记住:
- IP 和子网掩码决定你在哪个网段
- 网关决定你怎么去别的网段
- DNS 决定你怎么访问域名
配完这三样,网络基本就能用了。
更多推荐




所有评论(0)