Ubuntu22双网卡指定网关
- 一、背景
- 二、问题解决思路
- 三、具体解决步骤
- 3.1 确定网卡名
- 3.2 编辑 Netplan 配置
- 3.3 修改配置文件
- 3.4 应用配置
- 3.5 验证配置
- 四、Netplan 配置文件讲解
- 4.1 配置文件结构
- 4.2 网卡配置
- 4.2.1 第一个网卡 (enp0s3)
- 4.2.2 第二个网卡 (enp0s8)
- 4.2.3 路由配置
- 五、总结
一、背景
设备有两个网卡,第1个网卡使用固定IP直连。第2个IP是静态IP,需要走网关。
遇到的问题是设备在上电重启的时候,概率性的走第1个网卡的网关,导致其他局域网无法访问设备。
二、问题解决思路
设置设备的默认网关
三、具体解决步骤
3.1 确定网卡名
获取两个网卡名称,通常是类似 enp0s3的格式。
ip a
3.2 编辑 Netplan 配置
Ubuntu 22.04 使用 Netplan 来管理网络配置。配置文件通常在 /etc/netplan/ 目录下,文件名各式 01-netcfg.yaml,以 .yaml 结尾的文件。
sudo vim /etc/netplan/01-netcfg.yaml
3.3 修改配置文件
假设第2个网卡名称为 enp0s8,IP 地址需要根据实际情况修改。
network:
version: 2
renderer: networkd
ethernets:
enp0s3:
dhcp4: no
addresses:
- 192.168.1.38/24
enp0s8:
dhcp4: no
addresses:
- 192.168.2.38/24 # 第2个网卡的静态IP
routes:
- to: 0.0.0.0/0
via: 192.168.2.1
table: 100
3.4 应用配置
保存并关闭文件后,运行以下命令应用新的网络配置。
sudo netplan apply
3.5 验证配置
使用以下命令检查当前路由表,确保默认网关指向第二个网卡:
ip route
类似于下面的输出,其中 default via 192.168.2.1 表示默认网关已正确设置。
四、Netplan 配置文件讲解
4.1 配置文件结构
network:
version: 2
renderer: networkd
- network: 定义网络配置的根元素。
- version: 2: 指定使用的 Netplan 版本,这里是版本 2。
- renderer: networkd: 告诉系统使用 systemd-networkd 来管理网络。还有其他渲染器,如 NetworkManager,但在服务器环境中通常使用 networkd。
4.2 网卡配置
4.2.1 第一个网卡 (enp0s3)
ethernets:
enp0s3:
dhcp4: no
addresses:
- 192.168.1.38/24
ethernets: 定义有线网络接口。
enp0s3: 表示第一个网卡的名称。你可以用 ip a 命令确认网卡名称。
dhcp4: no: 禁止通过 DHCP 自动获取 IPv4 地址。
addresses: 指定该网卡的静态 IP 地址。在此例中,设置为 192.168.1.38,子网掩码为 /24 ,表示该网段的有效地址范围是 192.168.1.1 到 192.168.1.254。
4.2.2 第二个网卡 (enp0s8)
enp0s8:
dhcp4: no
addresses:
- 192.168.2.38/24 # 第二个网卡的静态IP
routes:
- to: 0.0.0.0/0
via: 192.168.2.1
- enp0s8: 表示第二个网卡的名称。
- dhcp4: no: 同样禁用 DHCP。
- addresses: 设置第二个网卡的静态 IP 地址,这里是 192.168.2.38,同样使用 /24 子网掩码。
4.2.3 路由配置
routes:
- to: 0.0.0.0/0
via: 192.168.2.1
table: 100
- routes: 自定义路由配置。
- to: 0.0.0.0/0: 指所有 IP 地址(即任何目的地)。
- via: 192.168.2.1: 指明通过哪一条网关发送流量。
- table: 100: 指定路由表,这里使用主路由表。可以不需要
五、总结
- 该配置定义了两个静态 IP 地址的网卡。
- 第一个网卡用于局域网通信,第二个网卡连接外部网络,并作为默认网关。
- 所有不属于 192.168.2.0/24 子网的流量将通过第二个网卡的网关 192.168.2.1 转发。