1. 为什么需要固定IPv4地址
在Ubuntu系统中配置固定IPv4地址是服务器管理和局域网设备部署的基础操作。动态获取IP(DHCP)虽然方便,但在以下场景中固定IP更为必要:
- 服务器需要提供稳定服务时,客户端需通过固定IP访问
- 内网设备需要通过IP进行互相通信
- 需要配置端口转发或防火墙规则时
- 运行需要绑定IP的服务(如Web服务器、数据库等)
注意:修改网络配置前建议先记录原始配置,以便出现问题时快速恢复。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 网络配置方式选择
Ubuntu系统主要有两种网络配置方式:
2.1 Netplan(推荐)
Ubuntu 17.10及以后版本默认使用Netplan,配置文件位于:
code复制/etc/netplan/*.yaml
典型配置文件示例(以01-netcfg.yaml为例):
yaml复制network:
version: 2
renderer: networkd
ethernets:
ens33:
dhcp4: no
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
2.2 传统ifupdown
旧版Ubuntu使用interfaces文件:
code复制/etc/network/interfaces
配置示例:
code复制auto ens33
iface ens33 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8 8.8.4.4
3. 详细配置步骤
3.1 确定网卡名称
首先需要确认要配置的网卡名称:
bash复制ip a
或
bash复制nmcli device status
常见网卡命名规则:
- ens33:常见于VMware虚拟机
- eth0:传统命名方式
- enp0s3:物理机常见命名
3.2 Netplan配置实操
- 备份原始配置:
bash复制sudo cp /etc/netplan/01-netcfg.yaml /etc/netplan/01-netcfg.yaml.bak
- 编辑配置文件:
bash复制sudo nano /etc/netplan/01-netcfg.yaml
- 应用配置:
bash复制sudo netplan apply
提示:如果配置出错导致网络断开,可通过SSH另一会话或控制台执行
sudo netplan apply恢复。
3.3 多网卡配置示例
对于多网卡服务器,配置示例:
yaml复制network:
version: 2
ethernets:
ens33:
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8]
ens34:
addresses: [10.0.0.100/24]
4. 验证与排错
4.1 配置验证命令
检查IP配置:
bash复制ip addr show
测试网络连通性:
bash复制ping -c 4 8.8.8.8
检查路由:
bash复制ip route
测试DNS解析:
bash复制nslookup google.com
4.2 常见问题解决
- 网络服务未启动:
bash复制sudo systemctl restart systemd-networkd
- 配置语法错误:
bash复制sudo netplan --debug apply
- 网卡未启用:
bash复制sudo ip link set ens33 up
- IP冲突检测:
bash复制arping -I ens33 192.168.1.100
5. 高级配置技巧
5.1 多IP地址绑定
单个网卡绑定多个IP:
yaml复制ens33:
addresses:
- 192.168.1.100/24
- 192.168.1.101/24
5.2 自定义路由
添加特定路由:
yaml复制routes:
- to: 10.0.0.0/8
via: 192.168.1.254
5.3 网络绑定(Bonding)
配置网络绑定提高可靠性:
yaml复制bonds:
bond0:
interfaces: [ens33, ens34]
parameters:
mode: active-backup
6. 持久化配置注意事项
- 云服务器特别处理:
- AWS/Azure等云平台可能需要额外配置
- 部分云平台禁止修改网络配置
- 网络服务依赖:
bash复制sudo systemctl enable systemd-networkd
- 禁用NetworkManager干扰:
bash复制sudo systemctl stop NetworkManager
sudo systemctl disable NetworkManager
- 配置备份策略:
- 定期备份网络配置
- 记录原始DHCP获取的参数
7. 不同Ubuntu版本差异
- Ubuntu 22.04 LTS:
- 默认使用Netplan
- 网络设备命名可能变化
- Ubuntu 20.04 LTS:
- 同时支持Netplan和ifupdown
- 建议统一使用Netplan
- Ubuntu 18.04 LTS:
- 过渡版本,配置方式可能混合
8. 实际应用案例
8.1 家庭服务器配置
典型家庭网络配置:
yaml复制network:
version: 2
ethernets:
enp3s0:
dhcp4: no
addresses: [192.168.31.200/24]
gateway4: 192.168.31.1
nameservers:
addresses: [192.168.31.1, 114.114.114.114]
8.2 企业级多网卡配置
服务器多网卡分流配置:
yaml复制network:
version: 2
ethernets:
eno1:
addresses: [10.0.0.100/24]
eno2:
addresses: [192.168.100.100/24]
vlans:
vlan100:
id: 100
link: eno1
addresses: [10.0.100.100/24]
9. 安全加固建议
- 禁用不必要的网络服务:
bash复制sudo systemctl disable avahi-daemon
- 配置防火墙规则:
bash复制sudo ufw allow from 192.168.1.0/24
- 定期检查网络配置:
bash复制sudo netplan generate
sudo netplan apply
- 监控网络流量:
bash复制sudo apt install nethogs
sudo nethogs
10. 性能优化技巧
- 调整MTU值:
yaml复制ens33:
mtu: 9000
- 启用巨帧(需交换机支持):
bash复制sudo ip link set ens33 mtu 9000
- TCP参数优化:
bash复制sudo sysctl -w net.ipv4.tcp_window_scaling=1
- 中断平衡配置:
bash复制sudo apt install irqbalance
sudo systemctl enable irqbalance
