Ubuntu22.04配置静态ip
注意:请根据你的网络设置,将上述 IP 地址、网关和 DNS 服务器地址替换为你需要的值。在打开的文件中,找到与你要设置静态 IP 的网络接口相关的部分。默认情况下,接口名称为。按 Ctrl + O 键保存文件,然后按 Ctrl + X 键关闭编辑器。打开终端,并以管理员身份运行。
在 Ubuntu 22.04 中配置静态 IP 的步骤如下:
-
打开终端,并以管理员身份运行。
-
编辑网络配置文件。输入以下命令并按 Enter 键:
sudo nano /etc/netplan/00-installer-config.yaml
-
在打开的文件中,找到与你要设置静态 IP 的网络接口相关的部分。默认情况下,接口名称为
eth0
。 -
在该接口部分添加以下内容来配置静态 IP 地址、子网掩码和网关:
addresses: [192.168.1.100/24] gateway4: 192.168.1.1 nameservers: addresses: [8.8.8.8, 8.8.4.4]
注意:请根据你的网络设置,将上述 IP 地址、网关和 DNS 服务器地址替换为你需要的值。
-
按 Ctrl + O 键保存文件,然后按 Ctrl + X 键关闭编辑器。
-
应用配置更改。运行以下命令:
sudo netplan apply
几点问题的说明
1. dhcp4: false
每张网卡都要加上这个,在 Netplan 中,如果你没有明确设置 dhcp4: false,那么系统可能会默认尝试通过 DHCP 获取 IP 地址。如果 DHCP 服务器不存在,或无法分配 IP,相关网卡可能会处于未配置状态(即没有获得 IP 地址)
2. Netplan 配置文件在重启后恢复默认的问题
这个问题通常是由于系统配置管理工具(如 cloud-init 或其他自动化配置工具)在启动过程中覆盖了你手动编辑的 Netplan 文件。以下是几种可能的原因和解决方法:
原因 1:cloud-init
覆盖 Netplan 配置
Ubuntu 服务器版本通常预装了 cloud-init
,它在启动时自动从外部源(如云服务提供商的元数据)获取网络配置,并生成 Netplan 配置文件。如果 cloud-init
被启用,它可能会在系统重启时覆盖你手动编辑的 Netplan 文件。
解决方法:
-
禁用
cloud-init
的网络管理功能:-
编辑
/etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
文件(如果该文件不存在,创建它):sudo nano /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
-
在文件中加入以下内容:
network: {config: disabled}
-
保存并退出文件,禁用 cloud-init 对网络的控制。然后重新应用 Netplan 配置:
sudo netplan apply
-
重启系统以确保 cloud-init 不再影响网络配置:
sudo reboot
-
3.
renderer: networkd:指定使用 systemd-networkd 作为网络后台服务。你也可以使用 NetworkManager,特别是如果系统运行桌面版的话。
4.
在复杂的网络场景下,使用 routes:
配置静态路由比使用 gateway4
更加灵活,特别是当你有多个网卡需要连接到不同的网段或网络时。通过 routes:
你可以为每个网络接口设置特定的路由规则,从而避免 gateway4
的局限性(只能设置一个默认网关)。下面是如何用 routes:
代替 gateway4
的具体说明和示例。
routes:
的基本语法
在 Netplan 中,routes:
的语法格式如下:
routes:
- to: <目标网络>
via: <下一跳网关>
metric: <优先级>
on-link: <是否直接连接>
参数说明:
to:
指定目标网络,通常是一个网段(如192.168.1.0/24
)或单个 IP 地址。via:
指定流量通过的下一跳网关(gateway)。metric:
用来设置路由优先级,数值越小优先级越高。on-link:
表示目标网络是否在本地链路上,通常在某些复杂的路由场景下使用。
示例 1:使用 routes:
替代单个 gateway4
假设你有一个网卡 enp0s3
,并且希望将其连接到网关 192.168.1.1
,且该网卡的 IP 地址是 192.168.1.10/24
。传统上,你可以通过 gateway4
进行配置:
network:
version: 2
renderer: networkd
ethernets:
enp0s3:
dhcp4: no
addresses:
- 192.168.1.10/24
gateway4: 192.168.1.1
现在,我们可以使用 routes:
来实现相同的功能,替代 gateway4
:
network:
version: 2
renderer: networkd
ethernets:
enp0s3:
dhcp4: no
addresses:
- 192.168.1.10/24
routes:
- to: 0.0.0.0/0
via: 192.168.1.1
metric: 100
解释:
to: 0.0.0.0/0
表示这是一个默认路由,指向所有网络流量(相当于gateway4
)。via: 192.168.1.1
指定流量通过的下一跳网关。metric: 100
是该路由的优先级,值越小优先级越高。
示例 2:多张网卡使用 routes
实现多个路由
假设你有两张网卡 enp0s3
和 enp0s8
,分别连接到不同的网段:
enp0s3
连接到网段192.168.1.0/24
,网关为192.168.1.1
。enp0s8
连接到网段192.168.2.0/24
,网关为192.168.2.1
。
你希望将特定流量(例如访问 192.168.3.0/24
网段的流量)通过 enp0s8
发送,而其他流量默认走 enp0s3
。
通过 routes:
你可以定义特定的路由规则:
network:
version: 2
renderer: networkd
ethernets:
enp0s3:
dhcp4: no
addresses:
- 192.168.1.10/24
routes:
- to: 0.0.0.0/0
via: 192.168.1.1
metric: 100
enp0s8:
dhcp4: no
addresses:
- 192.168.2.10/24
routes:
- to: 192.168.3.0/24
via: 192.168.2.1
metric: 100
解释:
enp0s3
配置了默认路由,所有未指定的流量会通过192.168.1.1
这个网关出去。enp0s8
配置了一个特定的路由规则,即访问192.168.3.0/24
网段的流量通过网关192.168.2.1
传输。
示例 3:多个网卡和多条默认路由
如果你有两张网卡都接入了不同的网络(如内外网),你可以通过 metric
设置路由优先级。通常情况下,只有一张网卡会配置默认路由,但你可以配置多条默认路由,并通过 metric
指定优先级。
例如:
network:
version: 2
renderer: networkd
ethernets:
enp0s3:
dhcp4: no
addresses:
- 10.0.1.10/24
routes:
- to: 0.0.0.0/0
via: 10.0.1.1
metric: 100
enp0s8:
dhcp4: no
addresses:
- 10.0.2.10/24
routes:
- to: 0.0.0.0/0
via: 10.0.2.1
metric: 200
解释:
- 两张网卡都配置了默认路由(
to: 0.0.0.0/0
),但enp0s3
的路由metric
值为 100,优先级更高,通常情况下流量会优先从enp0s3
出口发送。 - 如果
enp0s3
出现问题,系统会自动使用enp0s8
(因为metric
值较大,优先级较低)。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)