配置IP
使用nmcli命令
说明:
使用nmcli命令配置的网络配置可以立即生效且系统重启后配置也不会丢失。
nmcli介绍
nmcli是NetworkManager的一个命令行工具,它提供了使用命令行配置由NetworkManager管理网络连接的方法。nmcli命令的基本格式为:
1nmcli [OPTIONS] OBJECT { COMMAND | help }
其中,OBJECT选项可以是general、networking、radio、connection或device等。在日常使用中,最常使用的是-t,--terse(用于脚本),-p,--pretty选项(用于用户)及-h,--help选项,用户可以使用“nmcli help”获取更多参数及使用信息。
1# nmcli help
常用命令使用举例如下:
- 显示NetworkManager状态:
1# nmcli general status
- 显示所有连接:
1# nmcli connection show
- 只显示当前活动连接,如下所示添加 -a, --active:
1# nmcli connection show --active
- 显示由NetworkManager识别到设备及其状态:
1# nmcli device status
- 使用nmcli工具启动和停止网络接口,在root权限下执行如下命令:
1# nmcli connection up id enp3s0
2# nmcli device disconnect enp3s0
设备管理
连接到设备
使用如下命令,NetworkManager将连接到对应网络设备,尝试找到合适的连接配置,并激活配置。
1nmcli device connect "$IFNAME"
说明:
如果不存在相应的配置连接,NetworkManager将创建并激活具有默认设置的新配置文件。
断开设备连接
使用如下命令,NetworkManager将断开设备连接,并防止设备自动激活。
1 nmcli device disconnect "$IFNAME"
设置网络连接
列出目前可用的网络连接:
1# nmcli con show
2NAME UUID TYPE DEVICE
3enp4s0 5afce939-400e-42fd-91ee-55ff5b65deab ethernet enp4s0
4enp3s0 c88d7b69-f529-35ca-81ab-aa729ac542fd ethernet enp3s0
5virbr0 ba552da6-f014-49e3-91fa-ec9c388864fa bridge virbr0
说明:
输出结果中的NAME字段代表连接ID(名称)。
添加一个网络连接会生成相应的配置文件,并与相应的设备关联。检查可用的设备,方法如下:
1# nmcli dev status
2DEVICE TYPE STATE CONNECTION
3enp3s0 ethernet connected enp3s0
4enp4s0 ethernet connected enp4s0
5virbr0 bridge connected virbr0
6lo loopback unmanaged --
7virbr0-nic tun unmanaged --
配置动态IP连接
配置IP
要使用 DHCP 分配网络时,可以使用动态IP配置添加网络配置文件,命令格式如下:
1nmcli connection add type ethernet con-name connection-name ifname interface-name
例如创建名为net-test的动态连接配置文件,在root权限下使用以下命令:
1# nmcli connection add type ethernet con-name net-test ifname enp3s0
2Connection 'net-test' (a771baa0-5064-4296-ac40-5dc8973967ab) successfully added.
NetworkManager会将参数connection.autoconnect设定为yes,并将设置保存到 “/etc/sysconfig/network-scripts/ifcfg-net-test”文件中,在该文件中会将ONBOOT设置为yes。
激活连接并检查状态
在root权限下使用以下命令激活网络连接:
1# nmcli con up net-test
2Connection successfully activated (D-Bus active path:/org/freedesktop/NetworkManager /ActiveConnection/5)
检查这些设备及连接的状态,使用以下命令:
1# nmcli device status
2
3DEVICE TYPE STATE CONNECTION
4enp4s0 ethernet connected enp4s0
5enp3s0 ethernet connected net-test
6virbr0 bridge connected virbr0
7lo loopback unmanaged --
8virbr0-nic tun unmanaged --
配置静态IP连接
配置IP
添加静态IPv4配置的网络连接,可使用以下命令:
1nmcli connection add type ethernet con-name connection-name ifname interface-name ip4 address gw4 address
说明:
如果要添加IPv6地址和网关信息,使用ip6和gw6选项。
例如创建名为net-static的静态连接配置文件,在root权限下使用以下命令:
1# nmcli con add type ethernet con-name net-static ifname enp3s0 ip4 192.168.0.10/24 gw4 192.168.0.254
还可为该设备同时指定 IPv6 地址和网关,示例如下:
1# nmcli con add type ethernet con-name test-lab ifname enp3s0 ip4 192.168.0.10/24 gw4 192.168.0.254 ip6 abbe::**** gw6 2001:***::*
2Connection 'net-static' (63aa2036-8665-f54d-9a92-c3035bad03f7) successfully added.
NetworkManager会将其内部参数ipv4.method设定为manual,将connection.autoconnect设定为yes,并将设置写入/etc/sysconfig/network-scripts/ifcfg-net-static文件,其中会将对应BOOTPROTO设定为none,将ONBOOT设定为yes。
设定两个IPv4 DNS服务器地址,在root权限下使用以下命令:
1# nmcli con mod net-static ipv4.dns "*.*.*.* *.*.*.*"
设置两个IPv6 DNS服务器地址,在root权限下使用以下命令:
1# nmcli con mod net-static ipv6.dns "2001:4860:4860::**** 2001:4860:4860::****"
激活连接并检查状态
激活新的网络连接,在root权限下使用以下命令:
1# nmcli con up net-static ifname enp3s0
2Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)
检查这些设备及连接的状态,使用以下命令:
1# nmcli device status
2DEVICE TYPE STATE CONNECTION
3enp4s0 ethernet connected enp4s0
4enp3s0 ethernet connected net-static
5virbr0 bridge connected virbr0
6lo loopback unmanaged --
7virbr0-nic tun unmanaged --
查看配置的连接详情,使用以下命令(使用-p,--pretty选项在输出结果中添加标题和分段):
1# nmcli -p con show net-static
2=================================================================
3Connection profile details (net-static )
4=================================================================
5connection.id: net-static
6connection.uuid: b9f18801-6084-4aee-af28-c8f0598ff5e1
7connection.stable-id: --
8connection.type: 802-3-ethernet
9connection.interface-name: enp3s0
10connection.autoconnect: yes
11connection.autoconnect-priority: 0
12connection.autoconnect-retries: -1 (default)
13connection.multi-connect: 0 (default)
14connection.auth-retries: -1
15connection.timestamp: 1578988781
16connection.read-only: no
17connection.permissions: --
18connection.zone: --
19connection.master: --
20connection.slave-type: --
21connection.autoconnect-slaves: -1 (default)
22connection.secondaries: --
23connection.gateway-ping-timeout: 0
24connection.metered: unknown
25connection.lldp: default
26connection.mdns: -1 (default)
27connection.llmnr: -1 (default)
使用ip命令
说明:
使用ip命令配置的网络配置可以立即生效但系统重启后配置会丢失。
配置IP地址
使用ip命令为接口配置地址,命令格式如下,其中 interface-name 为网卡名称。
1ip addr [ add | del ] address dev interface-name
配置静态地址
在root权限下,配置设置IP地址,使用示例如下:
1# ip address add 192.168.0.10/24 dev enp3s0
查看配置结果,在root权限使用如下命令:
1# ip addr show dev enp3s0
22: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP
3 group default qlen 1000
4 link/ether 52:54:00:aa:ad:4a brd ff:ff:ff:ff:ff:ff
5 inet 192.168.202.248/16 brd 192.168.255.255 scope global dynamic noprefixroute
6 enp3s0
7 valid_lft 9547sec preferred_lft 9547sec
8 inet 192.168.0.10/24 scope global enp3s0
9 valid_lft forever preferred_lft forever
10 inet6 fe80::32e8:cc22:9db2:f4d4/64 scope link noprefixroute
11 valid_lft forever preferred_lft forever
配置多个地址
ip命令支持为同一接口分配多个地址,可在root权限下重复多次使用ip命令实现分配多个地址。使用示例如下:
1# ip address add 192.168.2.223/24 dev enp4s0
2# ip address add 192.168.4.223/24 dev enp4s0
3# ip addr
43: enp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP
5 group default qlen 1000
6 link/ether 52:54:00:aa:da:e2 brd ff:ff:ff:ff:ff:ff
7 inet 192.168.203.12/16 brd 192.168.255.255 scope global dynamic noprefixroute
8 enp4s0
9 valid_lft 8389sec preferred_lft 8389sec
10 inet 192.168.2.223/24 scope global enp4s0
11 valid_lft forever preferred_lft forever
12 inet 192.168.4.223/24 scope global enp4s0
13 valid_lft forever preferred_lft forever
14 inet6 fe80::1eef:5e24:4b67:f07f/64 scope link noprefixroute
15 valid_lft forever preferred_lft forever
配置静态路由
如果需要静态路由,可使用ip route add命令在路由表中添加,使用ip route del命令删除。最常使用的ip route命令格式如下:
1ip route [ add | del | change | append | replace ] destination-address
在root权限下使用ip route命令显示当前的IP路由表。示例如下:
1# ip route
2default via 192.168.0.1 dev enp3s0 proto dhcp metric 100
3default via 192.168.0.1 dev enp4s0 proto dhcp metric 101
4192.168.0.0/16 dev enp3s0 proto kernel scope link src 192.168.202.248 metric 100
5192.168.0.0/16 dev enp4s0 proto kernel scope link src 192.168.203.12 metric 101
6192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 linkdown
在主机地址中添加一个静态路由,在root权限下,使用以下命令格式:
1ip route add 192.168.2.1 via 10.0.0.1 [dev interface-name]
其中192.168.2.1是用点分隔的十进制符号中的IP地址,10.0.0.1是下一个跃点,interface-name是进入下一个跃点的退出接口。
要在网络中添加一个静态路由,即代表IP地址范围的IP地址,请在root权限下运行以下命令格式:
1ip route add 192.168.2.0/24 via 10.0.0.1 [dev interface-name]
其中192.168.2.1是目标网络的IP地址,10.0.0.1是网络前缀,interface-name为网卡名称。
通过ifcfg文件配置网络
说明:
通过ifcfg文件配置的网络配置不会立即生效,需要重启网卡或机器后才生效。
配置静态网络
以enp4s0网络接口进行静态网络设置为例,通过在root权限下修改ifcfg文件实现,在/etc/sysconfig/network-scripts/目录中生成名为ifcfg-enp4s0的文件中,修改参数配置,示例如下:
1TYPE=Ethernet
2PROXY_METHOD=none
3BROWSER_ONLY=no
4BOOTPROTO=none
5IPADDR=192.168.0.10
6GATEWAY=192.168.0.1
7PREFIX=24
8DEFROUTE=yes
9IPV4_FAILURE_FATAL=no
10IPV6INIT=yes
11IPV6_AUTOCONF=yes
12IPV6_DEFROUTE=yes
13IPV6_FAILURE_FATAL=no
14IPV6_ADDR_GEN_MODE=stable-privacy
15NAME=enp4s0static
16UUID=08c3a30e-c5e2-4d7b-831f-26c3cdc29293
17DEVICE=enp4s0
18ONBOOT=yes
配置动态网络
要通过ifcfg文件为em1接口配置动态网络,请按照如下操作在/etc/sysconfig/network-scripts/目录中生成名为ifcfg-em1的文件,示例如下:
1DEVICE=em1
2BOOTPROTO=dhcp
3ONBOOT=yes
要配置一个向DHCP服务器发送不同的主机名的接口,请在ifcfg文件中新增一行内容,如下所示:
1DHCP_HOSTNAME=hostname
要配置忽略由DHCP服务器发送的路由,防止网络服务使用从DHCP服务器接收的DNS服务器更新/etc/resolv.conf。请在ifcfg文件中新增一行内容,如下所示:
1PEERDNS=no
要配置一个接口使用具体DNS服务器,请将参数PEERDNS=no,并在ifcfg文件中添加以下行:
1DNS1=ip-address
2DNS2=ip-address
其中ip-address是DNS服务器的地址。这样就会让网络服务使用指定的DNS服务器更新/etc/resolv.conf。
配置默认网关
在确定默认网关时,首先解析/etc/sysconfig/network文件,然后解析ifcfg文件,将最后读取的GATEWAY的取值作为路由表中的默认路由。
在动态网络环境中,使用NetworkManager管理主机时,建议设置为由DHCP来分配。
评价此篇文章
