linux如何自动获取ip地址(命令设置自动获取ip地址)
>Red Hat Enterprise Linux 8 提供用于网络接口的一致性和可预测的设备命名方法。这些特性有助于查找和区分网络接口。
内核为网络接口分配名称的方法是,使用一个固定前缀,再加上随着内核初始化网络设备时增加的数字。例如: eth0 将代表引导时被探测的第一个设备。但是这些名称不一定与设备外壳上的标签对应。具有多个网络适配器的现代服务器平台,可能会遇到这些接口的命名不明确的情况。这会影响系统中嵌入的网络适配器和附加适配器。
在 Red Hat Enterprise Linux 8 中,udev 设备管理器支持很多不同的命名方案。默认情况下,udev 根据固件、拓扑和位置信息分配固定名称。它有以下优点:
设备名称完全可预测。
在添加或删除硬件时,设备名称也会保持不变。
因此,有问题的硬件可以被无缝地替换。
1.1.网络接口设备命名等级
如果启用了一致的设备命名(在 Red Hat Enterprise Linux 8 中是默认设置),udev设备管理器会根据以下方案生成设备名称:
方案 | 描述 | 示例 |
1 | 设备名称包含固件或者 BIOS 提供的索引号,用于板上的设备。如果此信息不适用,udev将使用方案 2。 | eno1 |
2 | 设备名称包含固件或 BIOS 提供的 PCI Express(PCIe)热插件插槽索引号。如果此信息不适用,udev 将使用方案 3。 | ens1 |
3 | 设备名称包含硬件连接器的物理位置。如果此信息不适用,udev 将使用方案 5。 | enp2s0 |
4 | 设备名称包含 MAC 地址。Red Hat Enterprise Linux 默认不使用这个方案,但管理员可选择性地使用它。 | enx525400d5e0fb |
5 | 传统的无法预计的内核命名方案。如果 udev 无法应用任何其他方案,设备管理器将使用这个方案。 | eth0 |
如果您手动配置udev规则以更改内核设备名称,则优先使用这些规则。
默认情况下,Red Hat Enterprise Linux 根据
/usr/lib/systemd/network/99-default.link 文件中的 NamePolicy 设置选择设备名称。NamePolicy 中值的顺序非常重要。Red Hat Enterprise Linux 使用在该文件中指定的以及 udev 生成的第一个设备名称。
如果您手动配置 udev 规则以更改内核设备名称,则优先使用这些规则。
1.2.网络接口名称解释
1.3.修改网卡命名方式为早期的规则(ethx)
2.网络配置工具概述
2.1使用 nmtui 添加连接配置
2.2NMCLI 入门
2.3使用 GNOME GUI 配置网络入门
以上内容来源于Redhat官网
3. 以下菜单栏内容为官方文档:
3.1【nmtui入门】
3.2【nmcli入门】
3.3【使用GNOME GUI配置网络入门】
3.4【配置网络bond/team】
4.网络配置常用命令汇总
以下内容来于笔者的总结
4.1 查看系统网卡设备
[root@localhost ~]# nmcli device status
DEVICE TYPE STATE CONNECTION
ens160 ethernet connected ens160
virbr0 bridge connected (externally) virbr0
lo loopback unmanaged --
virbr0-nic tun unmanaged --
DEVICE 网卡设备名(系统内核为网络接口分配名称,本文中只有一个ens160的网卡设备)
TYPE 网络类型
STATE 当前的状态
CONNECTION 网络连接名(ens160连接名对应的配置文件
/etc/sysconfig/network-scripts/ifcfg-ens160)
注意:一个网卡设备可以有多个网络连接名,但在系统里同时只一个网卡连接名被激活。
4.2 设置网卡ens160 DHCP自动获取IP地址,并开始自启动
[root@localhost ~]# nmcli connection modify ens160 ipv4.method manual autoconnect yes
拨出网卡
[root@localhost ~]# nmcli device disconnect ens160
载入网卡
[root@localhost ~]# nmcli device connect ens160
4.3 给ens160 手动配置一个IP
[root@localhost ~]# nmcli connection modify ens160 ipv4.addresses 192.168.10.2/24 ipv4.gateway 192.168.10.254 ipv4.dns 8.8.8.8 ipv4.method manual autoconnect yes
重新加载配置文件(增加或修改之后必需执行)
[root@localhost ~]# nmcli connection reload
启动网卡
[root@localhost ~]# nmcli connection up ens160
4. 4 查看ens160网络信息
[root@localhost ~]# nmcli device show ens160|grep -i ip4
IP4.ADDRESS[1]: 192.168.10.2/24
IP4.GATEWAY: 192.168.10.254
IP4.ROUTE[1]: dst = 192.168.10.0/24, nh = 0.0.0.0, mt = 100
IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 192.168.10.254, mt = 100
IP4.DNS[1]: 8.8.8.8
IP4.ADDRESS[1]: 192.168.122.1/24
IP4.GATEWAY: --
IP4.ROUTE[1]: dst = 192.168.122.0/24, nh = 0.0.0.0, mt = 0
IP4.ADDRESS[1]: 127.0.0.1/8
IP4.GATEWAY: --
4.5 添加一个网络配置文件ens160-new,并配置IP地址
[root@localhost network-scripts]# nmcli connection add type ethernet con-name ens160-new ifname ens160 ipv4.addresses 192.168.10.3 ipv4.gateway 192.168.10.254/24 ipv4.dns 114.114.114.114 ipv4.method manual
Connection \'ens160-new\' (5825bc94-9919-4993-9abd-e4ec5ef9a4d5) successfully added.
4.5.1 查看网络连接名信息(这里可以看到多出一个ens160-new)
[root@localhost network-scripts]# nmcli connection show
NAME UUID TYPE DEVICE
ens160 42e915da-c4bc-44ca-9d27-7cd21e2b3755 ethernet ens160
virbr0 4e4a1f37-2072-4368-ae9c-e87c0cd5cc40 bridge virbr0
ens160-new 5825bc94-9919-4993-9abd-e4ec5ef9a4d5 ethernet --
4.5.2 查看网络配置文件ens160-new是否生成
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# pwd
/etc/sysconfig/network-scripts
[root@localhost network-scripts]# ls
ifcfg-ens160 ifcfg-ens160-new
4.5.3 查看网络配置文件ens160-new内容
[root@localhost network-scripts]# cat ifcfg-ens160-new
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=192.168.10.3
PREFIX=24
GATEWAY=192.168.10.254
DNS1=114.114.114.114
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens160-new
UUID=5825bc94-9919-4993-9abd-e4ec5ef9a4d5
DEVICE=ens160
ONBOOT=yes
4.5.4 重新加载并启动ens160-new配置文件
[root@localhost ~]# nmcli connection reload
[root@localhost ~]# nmcli connection up ens160-new
4.5.5 查看当前活动配置文件(可以看到CONNECT这一栏里的连接名变成ens160-new)
[root@localhost ~]# nmcli device status
DEVICE TYPE STATE CONNECTION
ens160 ethernet connected ens160-new
virbr0 bridge connected (externally) virbr0
lo loopback unmanaged --
virbr0-nic tun unmanaged --
4.5.6 查看设备ens160当前激活的网络信息
[root@localhost ~]# nmcli device show ens160 |grep -i ip4
IP4.ADDRESS[1]: 192.168.10.3/24
IP4.GATEWAY: 192.168.10.254
IP4.ROUTE[1]: dst = 192.168.10.0/24, nh = 0.0.0.0, mt = 100
IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 192.168.10.254, mt = 100
IP4.DNS[1]: 114.114.114.114
4.5.7 也可以通过连接名ens160-new查看网络信息(注意关键字,这里用的是nmcli connect)
[root@localhost ~]# nmcli connection show ens160-new |grep -i ip4
IP4.ADDRESS[1]: 192.168.10.3/24
IP4.GATEWAY: 192.168.10.254
IP4.ROUTE[1]: dst = 192.168.10.0/24, nh = 0.0.0.0, mt = 100
IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 192.168.10.254, mt = 100
IP4.DNS[1]: 114.114.114.114
4.6 创建网卡绑定(最常用的两种模式 active backup 与LACP)
#1.创建team接口
#2.给team分配地址
#3.创建team的子接口(slave interface)
#4.激活team接口和team的子接口
4.6 .1 手工配置active backup
nmcli connection add type team con-name tema0 ifname team0 team.runner activebackup
ipv4.addresses 192.168.10.11/24 ipv4.method manual
nmcli con add con-name team0-port1 ifname ens160 type team-slave master team0
nmcli con add con-name team0-port2 ifname ens256 type team-slave master team0
nmcli con up team0
nmcli con up team0-port1
nmcli con up team0-port2
查看team配置
teamdctl team0 state
setup:
runner: activebackup
ports:
ens160
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0
ens256
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0
runner:
active port: ens160
4.6 .2手工配置lacp (此模式下上连交换机也要配置端口聚合)
nmcli connection add type team con-name tema1 ifname team1 team.runner lacp
192.168.10.21/24 ipv4.method man
nmcli con add con-name team1-port1 ifname ens160 type team-slave master team1
nmcli con add con-name team1-port2 ifname ens265 type team-slave master team1
nmcli con up team1-port1
nmcli con up team1-port2
nmcli con up team1
[root@localhost ~]# teamdctl team1 state
setup:
runner: lacp
ports:
ens160
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0
runner:
aggregator ID: 5, Selected
selected: yes
state: current
ens265
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0
runner:
aggregator ID: 5, Selected
selected: yes
state: current
runner:
active: yes
fast rate: no
注意: man nmcli-example 里的信息还没更新, 您也可以按linux7 的方式配置。
man nmcli-examples
Example 8. Adding a bonding master and two slave connection profiles
$ nmcli con add type bond ifname mybond0 mode active-backup
$ nmcli con add type ethernet ifname eth1 master mybond0
$ nmcli con add type ethernet ifname eth2 master mybond0
This example demonstrates adding a bond master connection and two slaves. The first command adds a master bond
connection, naming the bonding interface mybond0 and using active-backup mode. The next two commands add slaves
connections, both enslaved to mybond0. The first slave will be bound to eth1 interface, the second to eth2.
Example 9. Adding a team master and two slave connection profiles
$ nmcli con add type team con-name Team1 ifname Team1 config team1-master-json.conf
$ nmcli con add type ethernet con-name Team1-slave1 ifname em1 master Team1
$ nmcli con add type ethernet con-name Team1-slave2 ifname em2 master Team1
man teamd.conf
{
\"device\": \"team0\",
\"runner\": {\"name\": \"activebackup\"},
\"link_watch\": {
\"name\": \"ethtool\",
\"delay_up\": 2500,
\"delay_down\": 1000
},
\"ports\": {
\"eth1\": {
\"prio\": -10,
\"sticky\": true
},
\"eth2\": {
\"prio\": 100
}
}
}
4.6 .3下面的语法是linux 7 的配置, linux8 也应该支持,感兴趣的小伙伴可以试试
nmcli connection add type team con-name tema0 ifname team0 config \'{\"runner\": {\"name\": \"activebackup\"}\'
nmcli con add con-name team0-port1 ifname ens160 type team-slave master team0
nmcli con add con-name team0-port2 ifname ens256 type team-slave master team0
nmcli con up team0
nmcli con up team0-port1
nmcli con up team0-port2