1. 为什么需要配置静态IP?
刚接触Ubuntu服务器的新手可能会疑惑:为什么放着好好的DHCP自动分配不用,非要手动配置静态IP?这个问题我当初也纠结过。简单来说,DHCP虽然方便,但每次重启都可能分配不同的IP地址。想象一下你正在用FinalShell远程连接服务器,突然IP变了,就像搬家没告诉朋友新地址一样尴尬。
我在管理实验室的树莓派集群时就吃过这个亏。某次断电重启后,3台设备的IP全变了,不得不挨个接显示器重新查看。更麻烦的是,当你在Nginx配置里写死了上游服务器IP,或者用Ansible做自动化部署时,动态IP简直就是灾难。
静态IP的优势很明显:
- 服务稳定性:Web服务器、数据库等需要固定地址的服务不会因IP变动而中断
- 远程维护便利:SSH连接、文件传输等操作无需反复查询新IP
- 内网设备管理:NAS、智能家居网关等设备需要永久可访问地址
提示:家用路由器通常保留DHCP地址池范围(如192.168.1.100-200),建议静态IP设置在池外(如192.168.1.50)
2. 配置前的准备工作
2.1 查看当前网络信息
在终端输入这几个命令,建议新手直接复制粘贴:
# 查看网卡和IP信息 ifconfig | grep -A 1 "flags" # 更清晰的IP展示(需安装net-tools) ip addr show # 查看网关地址 route -n | grep 'UG' | awk '{print $2}' # 检查DNS服务器 systemd-resolve --status | grep 'DNS Servers'以我的ThinkPad T480为例,输出是这样的:
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.31.178 netmask 255.255.255.0 broadcast 192.168.31.255 192.168.31.1 DNS Servers: 192.168.31.1 8.8.8.8重点记录四个参数:
- 网卡名称(如ens33、eth0)
- 当前IP(192.168.31.178)
- 网关地址(192.168.31.1)
- 子网掩码(255.255.255.0)
2.2 选择合适的静态IP地址
有个新手容易踩的坑:随便选个IP就配置。我建议遵循这些原则:
- 避开路由器的DHCP分配范围(通常在路由器后台可查)
- 与当前动态IP同网段(如192.168.31.x)
- 末尾数字建议50-200之间,避开1(网关)、2(常见路由器)、255(广播地址)
可以用这个命令测试IP是否被占用:
ping -c 3 192.168.31.100如果显示"Destination Host Unreachable",说明该IP可用。
3. 修改Netplan配置文件
3.1 定位配置文件
Ubuntu 22.04使用Netplan管理网络,配置文件在:
ls /etc/netplan/*.yaml常见文件名:
- 桌面版:01-network-manager-all.yaml
- 服务器版:50-cloud-init.yaml
重要:修改前先备份!
sudo cp /etc/netplan/01-network-manager-all.yaml ~/netplan_backup.yaml3.2 解决gateway4报错问题
网上很多教程还在用已废弃的gateway4参数,执行时会报错:
`gateway4` has been deprecated, use default routes instead.正确写法是用routes替代:
network: version: 2 renderer: NetworkManager ethernets: ens33: addresses: [192.168.31.100/24] dhcp4: no dhcp6: no routes: - to: default via: 192.168.31.1 nameservers: addresses: [8.8.8.8, 114.114.114.114]关键点说明:
/24对应子网掩码255.255.255.0- DNS推荐用谷歌和114公共DNS
- 缩进必须用空格(建议2空格)
3.3 文件权限问题处理
保存时可能遇到:
Permissions for /etc/netplan/01-network-manager-all.yaml are too open.这是因为YAML文件权限太宽松。解决方法:
sudo chmod 600 /etc/netplan/01-network-manager-all.yaml4. 验证与故障排除
4.1 应用配置
执行以下命令使配置生效:
sudo netplan apply如果报错,可以用调试模式:
sudo netplan --debug apply4.2 常见问题排查
问题1:网络连接断开
- 检查网线/WiFi连接
- 确认IP、网关、子网掩码正确
- 临时恢复DHCP:
sudo dhclient ens33
问题2:能ping通内网但无法上网
- 检查网关是否正确
- 测试DNS解析:
nslookup baidu.com
问题3:配置未生效
- 检查YAML语法:
sudo netplan try - 查看日志:
journalctl -xe
5. 高级配置技巧
5.1 多网卡配置
我的开发机有有线+无线双网卡,配置示例:
network: version: 2 ethernets: enp2s0: addresses: [192.168.31.100/24] routes: - to: default via: 192.168.31.1 wlp3s0: dhcp4: yes5.2 绑定MAC地址
防止网卡名称变化(如eth0变成eth1):
network: version: 2 renderer: networkd ethernets: eth-port: match: macaddress: 00:11:22:33:44:55 set-name: eth-main addresses: [192.168.1.100/24]5.3 备用配置方案
如果Netplan配置不成功,可以尝试传统方法:
sudo nano /etc/network/interfaces添加:
auto ens33 iface ens33 inet static address 192.168.31.100 netmask 255.255.255.0 gateway 192.168.31.1 dns-nameservers 8.8.8.8最后提醒:配置静态IP后,建议在路由器后台为该MAC地址保留IP,避免地址冲突。我在实际运维中发现,很多网络问题都是IP冲突引起的,特别是当有多台设备手动配置静态IP时。