前言

实际测试中发现通过 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
最后修改:2023 年 10 月 30 日
如果觉得我的文章对你有用,请随意赞赏