title: 02-ubuntu-server使用nmcli管理网络
order: 2
icon: lightbulb
预备需求
- Ubuntu Server 20.04
- root权限
- 可以访问互联网
步骤
1. 安装network-manager
sudo apt install network-manager
2. 使用 ip addr 查看要配置的网卡
cc@ubuntu:~$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:59:f9:bf brd ff:ff:ff:ff:ff:ff
inet 192.168.93.132/24 brd 192.168.93.255 scope global dynamic ens33
valid_lft 1688sec preferred_lft 1688sec
inet6 fe80::20c:29ff:fe59:f9bf/64 scope link
valid_lft forever preferred_lft forever
cc@ubuntu:~$
3. 我的网卡为ens33
4. 启用network-manager,编辑NetworkManager.conf 文件
sudo nano /etc/NetworkManager/NetworkManager.conf
5. 将managed=false修改为managed=true然后重启 服务
sudo systemctl restart network-manager.service
6. 编辑/etc/netplan/*.yaml ,在我的机器上为:
cc@ubuntu:~$ sudo nano /etc/netplan/00-installer-config.yaml
7. 修改内容如下
network:
version: 2
renderer: NetworkManager
8. 应用配置
cc@ubuntu:~$ sudo netplan apply
此时已经可以通过nmcli
管理网络了
使用nmcli -p device
查看设备状态
cc@ubuntu:~$ nmcli -p device
=====================
Status of devices
=====================
DEVICE TYPE STATE CONNECTION
----------------------------------------------------------------------
ens33 ethernet connected Wired connection 1
lo loopback unmanaged --
cc@ubuntu:~$
例子:使用nmcli配置静态ip地址
1. 创建一个连接,语法如下
sudo nmcli connection add con-name <连接名> ifname <网卡名> type <连接类型> ipv4.method manual ipv4.addresses <ipv4地址> ipv4.gateway <ipv4网关地址> ipv4.dns <ipv4 dns服务器>
2. 例如:
sudo nmcli connection add con-name test ifname ens33 type ethernet ipv4.method manual ipv4.addresses 192.168.93.4/24 ipv4.gateway 192.168.93.2 ipv4.dns 192.168.93.2
3. 激活连接,语法如下
sudo nmcli connection up <连接名> ifname <网卡名>
4. 例如:
sudo nmcli connection up test ifname ens33
后续步骤:
查看连接状态
cc@ubuntu:~$ nmcli connection
NAME UUID TYPE DEVICE
test 4bd559fe-191d-460c-a4cd-56ae44c27859 ethernet ens33
Wired connection 1 e3f905c8-ba3f-3a5f-ab41-8397381e6fe6 ethernet --
删除多余连接
cc@ubuntu:~$ sudo nmcli connection delete Wired\ connection\ 1
查看ip地址
cc@ubuntu:~$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:0c:29:59:f9:bf brd ff:ff:ff:ff:ff:ff
inet 192.168.93.4/24 brd 192.168.93.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::cfb6:10b:de98:a885/64 scope link noprefixroute
valid_lft forever preferred_lft forever
cc@ubuntu:~$
开机如果停留在网卡出很久,进入系统后修改如下文件
root@k8s:~# cat /etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service
# SPDX-License-Identifier: LGPL-2.1-or-later
#
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
[Unit]
Description=Wait for Network to be Configured
Documentation=man:systemd-networkd-wait-online.service(8)
DefaultDependencies=no
Conflicts=shutdown.target
Requires=systemd-networkd.service
After=systemd-networkd.service
Before=network-online.target shutdown.target
[Service]
Type=oneshot
ExecStart=/lib/systemd/systemd-networkd-wait-online
RemainAfterExit=yes
TimeoutStartSec=2sec # 跳过
[Install]
WantedBy=network-online.target
评论区