前言
实际测试中发现通过 DHCP 获取 IP 地址可能会遇到莫名其妙的问题,例如根据条件延迟启动的服务无法判断当前是否联网,设置静态 IP 地址后故障解决。
以下操作基于 Debian 系统,理论也适用于 Ubuntu 系统,如有差别根据实际情况调整。
操作步骤
1.编辑网络接口配置文件
nano /etc/network/interfaces
当前文件内容:
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto ens160
iface ens160 inet dhcp
以上文件内容可见系统主要有两个网络接口,其中 lo 接口是本机网络接口,默认联网的接口是 ens160,在不同的机子中默认联网接口的名称可能不一样,常见的名称以 eth、ens、enp 开头,这点需要注意,下面的操作中要以实际名称为准。
2.根据以下指南,修改联网接口的配置
(1)将 IP 地址获取方式 DHCP 改为静态地址
原代码:iface ens160 inet dhcp
修改为:iface ens160 inet static
(2)在 iface ens160 inet static
下面添加静态 IP 地址配置信息
# IP 地址
address 192.168.1.123
# 子网掩码
netmask 255.255.255.0
# 网关
gateway 192.168.1.1
# DNS 服务器
dns-nameservers 223.5.5.5 223.6.6.6
最终修改结果示例:
# ens160 接口 IPv4 网络通过静态配置连接
iface ens160 inet static
# IP 地址
address 192.168.1.123
# 子网掩码
netmask 255.255.255.0
# 网关
gateway 192.168.1.1
# DNS 服务器
dns-nameservers 223.5.5.5 223.6.6.6
3.如果需要设置静态 IPv6 地址
如果你的服务器通过 DHCP 获取 IPv6 地址,你的配置文件中应该还包含有 inet6 的代码,示例如下:
# The primary network interface
auto ens160
iface ens160 inet dhcp
iface ens160 inet6 dhcp
静态 IPv6 地址的设置方法和 IPv4 差不多,区别在 IPv6 配置中 netmask
使用前缀长度值来配置,可以按照以下示例修改:
# ens160 接口 IPv6 网络通过静态配置连接
iface ens160 inet6 static
# IP 地址
address 2001:db8:0:1::2
# 前缀长度
netmask 64
# 网关
gateway 2001:db8:0:1::1
# DNS 服务器
dns-nameservers 2001:4860:4860::8888 2001:4860:4860::8844
4.重新启动网络服务
systemctl restart networking
5.验证是否成功修改,可通过以下任意命令查看网络接口信息。
ifconfig
ip addr