作为Linux管理员的你有各种工具,以用于配置网络连接,如:nmtui,使用GNOME图形用户界面,当然nmcli(网络管理器命令行工具),你NetworkManager的 。
使用nmcli工具配置网络以太网连接
我已经看到了使用nmtui为简单起见,许多管理员。 但是使用nmcli节省您的时间,让你的信心,可以在脚本中使用它,它才能使用的第一个工具, 解决你的Linux服务器的网络 ,并带回很快它的功能。
眼看许多意见询问nmcli的帮助下,我决定写这篇文章。 当然你应该仔细阅读man页面(它的No1帮助为你)。 我的目的是节省你的时间,并给你一些提示。
nmcli的语法是:
# nmcli [OPTIONS] OBJECT {COMMAND | help}
其中, OBJECT
是下列之一:一般,网络,广播,连接,设备,代理。
一个好的起点是检查我们的设备:
# nmcli dev status DEVICE TYPE STATE CONNECTION docker0 bridge connected docker0 virbr0 bridge connected virbr0 enp0s3 ethernet connected enp0s3 virbr0-nic ethernet disconnected -- lo loopback unmanaged --
我们可以看到在第一列是我们的网络设备的列表。 我们有一个名字一个网络卡enp0s3
。 在你的机器,你可以看到其他名字。
命名取决于网卡的类型(如果它是板载的,pci卡等)。 在最后一列中,我们看到我们的设备使用的配置文件,以便连接到网络。
很容易理解,我们的设备本身不能做任何事情。 他们需要我们做一个配置文件告诉他们如何实现网络连接。 我们也呼吁这些文件为“连接配置文件”。 我们发现他们在/ etc / sysconfig / network中-scripts目录。
# cd /etc/sysconfig/network-scripts/ # ls
示例输出
ifcfg-enp0s3 ifdown-isdn ifup ifup-plip ifup-tunnel ifcfg-lo ifdown-post ifup-aliases ifup-plusb ifup-wireless ifdown ifdown-ppp ifup-bnep ifup-post init.ipv6-global ifdown-bnep ifdown-routes ifup-eth ifup-ppp network-functions ifdown-eth ifdown-sit ifup-ib ifup-routes network-functions-ipv6 ifdown-ib ifdown-Team ifup-ippp ifup-sit ifdown-ippp ifdown-TeamPort ifup-ipv6 ifup-Team ifdown-ipv6 ifdown-tunnel ifup-isdn ifup-TeamPort
正如你可以在这里看到名称开头的文件ifcfg-
(接口配置)是连接配置文件。 当我们创建一个新的连接或修改现有的与nmcli或nmtui,结果在此保存为连接配置文件。
我将从我的机器上显示其中两个,一个使用dhcp配置,一个使用静态ip。
# cat ifcfg-static1 # cat ifcfg-Myoffice1
检查网络配置
我们意识到一些属性具有不同的值,如果没有必要,一些属性不存在。 让我们快速看看最重要的。
-
TYPE
,我们这里有以太网类型。 我们可以有wifi,团队,债券和其他。 -
DEVICE
,其与该简档相关联的网络设备的名称。 -
BOOTPROTO
,如果它有值“DHCP”,那么我们的连接配置文件需要动态IP从DHCP服务器上,如果它有值“无”,那么它没有动态IP,可能磨片分配静态IP。 -
IPADDR
,是我们分配给我们的形象静态IP。 -
PREFIX
,子网掩码。 值为24表示255.255.255.0。 如果你记下它的二进制格式,你可以更好地理解子网掩码。 例如,值16,24,26意味着第一个16,24或26位分别是1和其余的0,确切地定义网络地址是什么以及可以分配的ip的范围是多少。 -
GATEWAY
,网关IP。 -
DNS1
,DNS2
,两个DNS服务器,我们要使用。 -
ONBOOT
,如果它有值“是”这意味着,在引导我们的电脑将读取该配置文件,并尝试将它分配给它的设备。
现在,让我们继续并检查我们的连接:
# nmcli con show
显示活动网络连接
设备的最后一列帮助我们理解哪个连接是“UP”和运行,这是不。 在上图中可以看到两个连接这是积极的:Myoffice1和enp0s8。
提示 :如果你想看到的只是活动连接,输入:
# nmcli con show -a
提示 :您可以使用,当您使用nmcli自动完成按Tab,但最好是使用命令的最小格式。 因此,以下命令是相等的:
# nmcli connection show # nmcli con show # nmcli c s
如果我检查我的设备的IP地址:
# ip a
检查服务器IP地址
我看到我的设备enp0s3
接过192.168.1.6的IP从DHCP服务器上,由于连接配置文件Myoffice1
为不超过有一个DHCP配置。 如果我把“up”
与我的名字连接配置文件static1
那么我的设备将采取静态IP 192.168.1.40,因为它是在连接配置文件中定义。
# nmcli con down Myoffice1 ; nmcli con up static1 # nmcli con show
让我们再次看到IP地址:
# ip a
检查网络静态IP地址
我们可以做出我们第一个连接配置文件。 我们必须定义的最小属性类型 ,IFNAME和CON-名称 :
-
type
-用于连接的类型。 -
ifname
-为其分配了连接的设备名称。 -
con-name
-连接的名称。
让我们用名称的新以太网连接Myhome1
,分配给设备enp0s3
:
# nmcli con add type ethernet con-name Myhome1 ifname enp0s3
检查其配置:
# cat ifcfg-Myhome1
创建新的网络连接
正如你可以看到它有BOOTPROTO=dhcp
,因为我们没有给任何静态IP地址。
提示 :我们可以修改的任何联系“nmcli con mod“
命令。 但是,如果您修改DHCP连接并将其更改为静态的,不要忘记改变其“ipv4.method”
从“auto”
为“manual”
。 否则,你会得到两个IP地址:一个从dhcp服务器和静态。
让我们用名称的新的以太网连接配置文件static2
,这将被分配到设备enp0s3
,使用静态IP 192.168.1.50,子网掩码为255.255.255.0 = 24和网关192.168.1.1。
# nmcli con add type ethernet con-name static2 ifname enp0s3 ip4 192.168.1.50/24 gw4 192.168.1.1
检查其配置:
# cat ifcfg-static2
创建新的以太网连接
让我们修改最后一个连接配置文件并添加两个dns服务器。
# nmcli con mod static2 ipv4.dns “8.8.8.8 8.8.4.4”
提示 :也有一些是在这里你必须注意:为IP地址和网关的属性有不同的名称,当您添加,当你修改的连接。 当您添加使用的连接“ip4”
和“gw4”
而当你修改它们使用“ipv4”
和“gwv4”
现在让我们打开这个连接配置文件:
# nmcli con down static1 ; nmcli con up static2
正如你所看到的,设备enp0s3
现在拥有的IP地址192.168.1.50。
# ip a
验证新网络连接的IP地址
提示 :有很多,你可以修改的属性。 如果不通过心脏记住他们,你可以通过键入帮助自己“nmcli con show”
和连接名称后:
# nmcli con show static2
验证新网络连接的IP地址
您可以修改用小写写的所有这些属性。
例如:当你打倒连接配置文件,NetworkManager的搜索另一个连接配置文件,并自动主动提起。 (我把它作为运动检查它)。 如果您不希望您的连接配置文件自动连接:
# nmcli con mod static2 connection.autoconnect no
最后一个练习非常有用:您创建了一个连接配置文件,但您希望它由特定用户使用。 这是很好的分类你的用户!
我们只让用户斯特拉使用此配置文件:
# nmcli con mod static2 connection.permissions stella
提示 :如果你想给权限的多个用户,则必须输入user:user1,user2
他们之间没有空格:
# nmcli con mod static2 connection.permissions user:stella,john
允许与用户的网络连接
如果你登录为另一个用户,你不能把“上”此连接配置:
# nmcli con show # nmcli con up static2 # ls /etc/sysconfig/network-scripts
启用网络连接
一条错误消息说,连接“static2'不存在 ,即使我们看到它的存在。 这是因为当前用户没有启动此连接的权限。
结论 :不要犹豫,使用nmcli。 这是容易和有益的。