Quản lý mạng dùng NetworkManager trên CentOS 8 Image Quản lý mạng dùng NetworkManager trên CentOS 8

Bài viết này sẽ giới thiệu với các bạn về cách quản lý mạng dùng NetworkManager trên CentOS 8 của hệ điều hành Linux. Trong bài viết này chúng ta sẽ tìm hiểu về NetworkManager cũng như các ví dụ về nó từ đây giúp cho chúng ta có thể tự học và tự tìm hiểu Linux cơ bản.

1. Giới thiệu về NetworkManager

NetworkManager là một công cụ hỗ trợ chúng ta việc quản lý và thiết lập mạng bằng cả dòng lệnh và giao diện đồ họa, cung cấp API thông qua D-Bus cho phép truy vấn và kiểm soát cấu hình mạng, hỗ trợ linh hoạt cấu hình. Ngoài ra, NetworkManager cũng có thể cấu hình bằng các tệp và Cockpit web console và nó hỗ trợ sử dụng các lệnh tùy chỉnh để bắt đầu hoặc dừng các dịch vụ dựa trên trạng thái kết nối.

Để biết thêm thông tin về systemctlNetworkManager chúng ta chạy lệnh sau:

[root@localhost ~]# man systemctl
[root@localhost ~]# man NetworkManager

2. Cài đặt NetworkManager

Để kiểm tra xem gói NetworkManager có khả dụng trên loại hệ thống của bạn không sử dụng lệnh sau:

[root@localhost ~]# NetworkManager -V
1.14.0-14.el8

Nếu gói NetworkManager không có trên hệ thống của chúng ta, chúng ta có thể dễ dàng cài đặt như sau:

[root@localhost ~]# dnf install NetworkManager
CentOS-8 - AppStream                                                                         1.7 kB/s | 4.3 kB     00:02
CentOS-8 - Base                                                                              1.6 kB/s | 3.9 kB     00:02
CentOS-8 - Extras                                                                            604  B/s | 1.5 kB     00:02
Package NetworkManager-1:1.14.0-14.el8.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!

Sau khi cài đặt thành công thì tệp cấu hình của NetworkManager được đặt tại /etc/NetworkManager/NetworkManager.conf và các tệp cấu hình bổ sung có thể được tìm thấy trong /etc/NetworkManager/ như bên dưới:

[root@localhost ~]# ls -l /etc/NetworkManager/NetworkManager.conf
-rw-r--r--. 1 root root 2145 May 11  2019 /etc/NetworkManager/NetworkManager.conf
[root@localhost ~]# ls -l /etc/NetworkManager/
total 4
drwxr-xr-x. 2 root root    6 May 11  2019 conf.d
drwxr-xr-x. 5 root root   93 Nov  6 03:14 dispatcher.d
drwxr-xr-x. 2 root root    6 May 11  2019 dnsmasq.d
drwxr-xr-x. 2 root root    6 May 11  2019 dnsmasq-shared.d
-rw-r--r--. 1 root root 2145 May 11  2019 NetworkManager.conf
drwxr-xr-x. 2 root root    6 May 11  2019 system-connections

3. Quản lý NetworkManager bằng systemctl

Đối với CentOS hoặc RHEL 8 và hệ thống Linux hiện đại đã trình quản lý dịch vụ và hệ thống bằng công cụ systemctl.

Để có thể kiểm tra xem công cụ NetworkManager có bắt đầu hoạt động và kích hoạt để có thể khởi động cùng lúc với hệ thống chúng ta có thể sử dụng các lệnh sau:

[root@localhost ~]# systemctl is-active NetworkManager
active
[root@localhost ~]# systemctl is-enabled NetworkManager
enabled

Khi chúng ta cần kiểm tra trạng thái của NetworkManager chúng ta thực thi lệnh bên dưới:

[root@localhost ~]# systemctl status NetworkManager
● NetworkManager.service - Network Manager
   Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2019-12-08 10:28:05 EST; 1min 57s ago
     Docs: man:NetworkManager(8)
 Main PID: 958 (NetworkManager)
    Tasks: 3 (limit: 17812)
   Memory: 9.5M
   CGroup: /system.slice/NetworkManager.service
           └─958 /usr/sbin/NetworkManager --no-daemon

Dec 08 10:28:10 localhost.localdomain NetworkManager[958]: <info>  [1575818890.4792] dhcp4 (ens192): state changed unknown ->
Dec 08 10:28:10 localhost.localdomain NetworkManager[958]: <info>  [1575818890.4804] device (ens192): state change: ip-confi>
Dec 08 10:28:10 localhost.localdomain NetworkManager[958]: <info>  [1575818890.4813] device (ens192): state change: ip-check>
Dec 08 10:28:10 localhost.localdomain NetworkManager[958]: <info>  [1575818890.4817] device (ens192): state change: secondar>
Dec 08 10:28:10 localhost.localdomain NetworkManager[958]: <info>  [1575818890.4824] manager: NetworkManager state is now CO>
Dec 08 10:28:10 localhost.localdomain NetworkManager[958]: <info>  [1575818890.4983] manager: NetworkManager state is now CO>
Dec 08 10:28:10 localhost.localdomain NetworkManager[958]: <info>  [1575818890.4985] policy: set 'ens192' (ens192) as defaul>
Dec 08 10:28:10 localhost.localdomain NetworkManager[958]: <info>  [1575818890.5054] device (ens192): Activation: successful>
Dec 08 10:28:10 localhost.localdomain NetworkManager[958]: <info>  [1575818890.5062] manager: NetworkManager state is now CO>
Dec 08 10:28:10 localhost.localdomain NetworkManager[958]: <info>  [1575818890.5067] manager: startup complete
lines 1-20/20 (END)

Nếu NetworkManager không hoạt động chúng ta có thể khởi động nó bằng cách chạy lệnh sau:

[root@localhost ~]# systemctl start NetworkManager

Để dừng hoặc hủy kích hoạt NetworkManager vì lý do nào đó chúng ta chạy lệnh bên dưới:

[root@localhost ~]# systemctl stop NetworkManager

Khi chúng ta thực hiện một thay đổi đối với các tệp cấu hình của NetworkManager thì chúng ta có thể khởi động lại NetworkManager để áp dụng các thay đổi mới:

[root@localhost ~]# systemctl restart NetworkManager

Chúng ta cần tải lại cấu hình của NetworkManager mà không khởi động lại dịch vụ thực thi lệnh bên dưới:

[root@localhost ~]# systemctl reload NetworkManager

4. Sử dụng NetworkManager và làm việc với tệp ifcfg

NetworkManager hỗ trợ một số công cụ tương tác với nó gồm:

  • nmcli sử dụng để cấu hình mạng.
  • nmtui sử dụng để cấu hình và quản lý các kết nối giao diện newtwork.
  • Các công cụ soạn thảo như vi/vim và biểu tượng kết nối mạng (tất cả trong GUI).

Ví dụ 1: Khi chúng ta muốn liệt kê các thiết bị được phát hiện bởi NetworkManager chạy lệnh sau:

[root@localhost ~]# nmcli device
DEVICE  TYPE      STATE      CONNECTION
ens192  ethernet  connected  ens192
lo      loopback  unmanaged  --

Hoặc

[root@localhost ~]# nmcli device status
DEVICE  TYPE      STATE      CONNECTION
ens192  ethernet  connected  ens192
lo      loopback  unmanaged  --

Ví dụ 2: Để xem tất cả các kết nối hoạt động:

[root@localhost ~]# nmcli connection show -a
NAME    UUID                                  TYPE      DEVICE
ens192  c94d64af-3f07-4480-a65f-2093c869608a  ethernet  ens192

Trong đó tùy chọn -a giúp cho chúng ta liệt kê tất cả các cấu hình kết nối.

Ví dụ 3: Để kiểm tra xem NetworkManager có đang chạy không chúng ta có thể sử dụng lệnh dưới đây:

[root@blogd-net-lab01 ~]# nmcli -t -f RUNNING general
running

Để kiểm tra một trạng thái chung chúng ta thực thi lệnh sau:

[root@blogd-net-lab01 ~]# nmcli general
STATE      CONNECTIVITY  WIFI-HW  WIFI     WWAN-HW  WWAN
connected  full          enabled  enabled  enabled  enabled

Ví dụ 4: Để xem và liệt kê tất cả các thiết bị có sẵn trên hệ thống Linux bằng cách sử dụng lệnh bên dưới:

[root@blogd-net-lab01 ~]# nmcli dev status
DEVICE  TYPE      STATE      CONNECTION
ens192  ethernet  connected  ens192
lo      loopback  unmanaged  --

Ví dụ 5: Khi chúng ta muốn liệt kê tất cả các kết nối có sẵn thực thi lệnh bên dưới:

[root@blogd-net-lab01 ~]# nmcli con show
NAME    UUID                                  TYPE      DEVICE
ens192  7ce724d6-0326-3f7a-9b6a-630504393a99  ethernet  ens192

Ví dụ 6: Chúng ta muốn xem tất cả các giá trị được cấu hình (mặc định hay đã được tùy chỉnh) của interface:

[root@blogd-net-lab01 ~]# nmcli con show ens192
connection.id:                          ens192
connection.uuid:                        7ce724d6-0326-3f7a-9b6a-630504393a99
connection.stable-id:                   --
connection.type:                        802-3-ethernet
connection.interface-name:              ens192
connection.autoconnect:                 yes
connection.autoconnect-priority:        0
connection.autoconnect-retries:         -1 (default)
connection.multi-connect:               0 (default)
connection.auth-retries:                -1
connection.timestamp:                   1581349608
connection.read-only:                   no
connection.permissions:                 --
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.autoconnect-slaves:          -1 (default)
connection.secondaries:                 --
connection.gateway-ping-timeout:        0
connection.metered:                     unknown

Ví dụ 7: Chúng ta có thể sử dụng nmcli để kiểm tra hostname và để thay đổi hostname của máy chủ:

Kiểm tra hostname của máy chủ hiện tại chúng ta thực thi lệnh sau:

[root@blogd-net-lab01 ~]# nmcli general hostname
blogd-net-lab01

Tiếp theo để có thể thay đổi hostname của máy chủ sử dụng lệnh nmcli thực thi lệnh bên dưới:

[root@blogd-net-lab01 ~]# nmcli general hostname blogd-net-lab02
[root@blogd-net-lab01 ~]# reboot

Sau khi reboot máy hoàn thành chúng ta kiểm tra lại hostname đã được thay đổi hay chưa:

[root@blogd-net-lab02 ~]# nmcli general hostname
blogd-net-lab02
[root@blogd-net-lab02 ~]# hostname
blogd-net-lab02

Ví dụ 10: Chúng ta có thể sử dụng lệnh nmcli để chỉnh sửa file cấu hình của kết nối hiện có hoặc thêm kết nối mới. Trong ví dụ dưới đây, chúng ta sẽ chỉnh sửa địa chỉ IP của interface ens192:

[root@blogd-net-lab02 ~]# nmcli con edit  ens192

===| nmcli interactive connection editor |===

Editing existing '802-3-ethernet' connection: 'ens192'

Type 'help' or '?' for available commands.
Type 'print' to show all the connection properties.
Type 'describe [<setting>.<prop>]' for detailed property description.

You may edit the following settings: connection, 802-3-ethernet (ethernet), 802-1x, dcb, sriov, ethtool, match, ipv4, ipv6, tc, proxy
nmcli> help
------------------------------------------------------------------------------
---[ Main menu ]---
goto     [<setting> | <prop>]        :: go to a setting or property
remove   <setting>[.<prop>] | <prop> :: remove setting or reset property value
set      [<setting>.<prop> <value>]  :: set property value
describe [<setting>.<prop>]          :: describe property
print    [all | <setting>[.<prop>]]  :: print the connection
verify   [all | fix]                 :: verify the connection
save     [persistent|temporary]      :: save the connection
activate [<ifname>] [/<ap>|<nsp>]    :: activate the connection
back                                 :: go one level up (back)
help/?   [<command>]                 :: print this help
nmcli    <conf-option> <value>       :: nmcli configuration
quit                                 :: exit nmcli
------------------------------------------------------------------------------
nmcli> print ipv4.addresses
ipv4.addresses: 192.168.0.2/24
nmcli> remove ipv4.address "192.168.0.2/24"
nmcli> print ipv4.address
ipv4.addresses:
nmcli> set ipv4.address 192.168.0.3/24
Do you also want to set 'ipv4.method' to 'manual'? [yes]: yes
nmcli> print ipv4.address
ipv4.addresses: 192.168.0.3/24
nmcli> verify
Verify connection: OK
nmcli> save
Connection 'ens192' (7ce724d6-0326-3f7a-9b6a-630504393a99) successfully updated.
nmcli> quit

Bây giờ chúng ta cần xác minh các thay đổi trong file cấu hình của ens192:

[root@blogd-net-lab02 ~]# egrep IPADDR /etc/sysconfig/network-scripts/ifcfg-ens192
IPADDR=192.168.0.3

So sánh sự khác biệt cách thiết lập địa chỉ IPv4 file network sử dụng lệnh nmcli với tùy chỉnh trong file cấu hình:

Lệnh nmcliFile ifcfgChức năng
ipv4.method manualBOOTPROTO=noneĐịa chỉ IPv4 cấu hình tĩnh
ipv4.method autoBOOTPROTO=dhcpĐịa chỉ IPv4 được cấp tự động dự trên DHCP của máy chủ
ipv4.address 192.168.0.1/24IPADDR=192.168.0.10 PREFIX=24Đặt địa chỉ IPv4 tĩnh và Prefix của mạng
ipv4.gateway 192.168.0.1GATEWAY=192.168.0.1Đặt IPv4 Gateway
ipv4.dns 8.8.8.8DNS1=8.8.8.8Sửa file /etc/resolv.conf để sử dụng DNS này
ipv4.dns-search google.comDOMAIN=google.comSửa file /etc/resolv.conf để sử dụng tên miền này trong tìm kiếm
ipv4.ignore-auto-dns truePEERDNS=noBỏ qua thông tin DNS server từ DHCP server
connection.autoconnect yesONBOOT=yesTự động kết nối internet khi được khởi động
connection.id ens33NAME=ens33Đặt tên của kết nối
connection.interface-name ens33DEVICE=ens33Kết nối được liên kết với network interface
802-3-ethernet.mac-address 09:01:26:4c:7b:82HWADDR=09:01:26:4c:7b:82Kết nối được liên kết với network interface có địa chỉ MAC
ipv4.never-default noDEFROUTE=yesKhông sử dụng interface gateway làm default gateway

So sánh sự khác biệt cách thiết lập địa chỉ IPv6 file network sử dụng lệnh nmcli với tùy chỉnh trong file cấu hình:

Lệnh nmcliFile ifcfgChức năng
ipv6.method manualBOOTPROTO=noneĐịa chỉ IPv6 cấu hình tĩnh
ipv6.method autoIPV6_AUTOCONF=yesSẽ cấu hình cài đặt mạng bằng SLAAC từ router
ipv6.method dhcpIPV6_AUTOCONF=no DHCPV6C=yesSẽ cấu hình cài đặt mạng bằng DHCPv6 không phải bằng SLAAC
ipv6.addresses "2001:db8::a/64 2001:db8::1"IPV6ADDR=2001:db8::a/64 IPV6_DEFAULTGW=2001:db8::1Đặt địa chỉ IPv6 tĩnh và Gateway
ipv6.dns ...DNS0=...Sửa file /etc/resolv.conf để sử dụng DNS này
ipv6.dns-search google.comDOMAIN=google.comSửa file /etc/resolv.conf để sử dụng tên miền này trong tìm kiếm
ipv6.ignore-auto-dns trueIPV6_PEERDNS=noBỏ qua thông tin DNS server từ DHCP server
connection.autoconnect yesONBOOT=yesTự động kết nối internet khi được khởi động
connection.id ens192NAME=ens192Đặt tên của kết nối
connection.interface-name ens192DEVICE=ens192Kết nối được liên kết với network interface
802-3-ethernet.mac-address ...HWADDR=...Kết nối được liên kết với network interface có địa chỉ MAC

Ví dụ 11: Chúng ta sẽ thực hiện cấu hình interface ens37 tĩnh, sử dụng địa chỉ IPv4 và network prefix 10.10.10.5/24 cùng với default gateway là 10.10.10.1, tự động kết nối khi khởi động và lưu cấu hình của nó vào file /etc/sysconfig/network-scripts/ifcfg-ens37:

[root@blogd-net-lab01 ~]# nmcli con add con-name ens37 type ethernet ifname ens37 ipv4.method manual ipv4.address 10.10.10.5/24 ipv4.gateway 10.10.10.1
Connection 'ens37' (ce30feec-0926-4c31-8579-3b8d3906fba4) successfully added.

Kết quả sau khi thực hiện lệnh trên:

[root@blogd-net-lab01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens37
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=10.10.10.5
PREFIX=24
GATEWAY=10.10.10.1
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=ens37
UUID=ce30feec-0926-4c31-8579-3b8d3906fba4
DEVICE=ens37
ONBOOT=yes

Ví dụ 12: Khi chúng ta muốn tạo kết nối ethernet mới và gán địa chỉ IP dựa trên DHCP server. Thì thực thi lệnh sau sẽ thêm một kết nối mới cho interface ens39, sẽ nhận địa chỉ IPv4 bằng DHCP và sẽ tự động kết nối khi khởi động. Cấu hình sẽ được lưu vào file /etc/sysconfig/network-scripts/ifcfg-ens39con-name có tên là ens39:

[root@blogd-net-lab01 ~]# nmcli con add con-name ens39 type ethernet ifname ens39 ipv4.method auto
Connection 'ens39' (9c3a12a5-5df1-459f-9b6b-68f024270e9c) successfully added.

Chúng ta có thể kiểm tra file cấu hình bằng cách sử dụng lệnh egrep như sau:

[root@blogd-net-lab01 ~]# egrep BOOTPROTO /etc/sysconfig/network-scripts/ifcfg-ens39
BOOTPROTO=dhcp

Ví dụ 13: Thay đổi kết nối ethernet BOOTPROTO từ DHCP sang tĩnh bằng lệnh nmcli, trong đó chúng ta phải sửa đổi ipv4.method:

Thực hiện kiểm tra BOOTPROTO của file cấu hình /etc/sysconfig/network-scripts/ifcfg-ens39

[root@blogd-net-lab01 ~]# egrep BOOTPROTO /etc/sysconfig/network-scripts/ifcfg-ens39
BOOTPROTO=dhcp

Thực thi lệnh sau để chuyển từ BOOTPROTO từ dhcp sang none:

[root@blogd-net-lab01 ~]# nmcli con mod ens39 ipv4.method manual ipv4.address 10.10.20.5/24 ipv4.gateway 10.10.20.1

Kết quả sau khi chạy lệnh bên trên:

[root@blogd-net-lab01 ~]# egrep 'BOOTPROTO|IPADDR|PREFIX|GATEWAY' /etc/sysconfig/network-scripts/ifcfg-ens39
BOOTPROTO=none
IPADDR=10.10.20.5
PREFIX=24
GATEWAY=10.10.20.1

Ví dụ 14: Thay đổi kết nối ethernet BOOTPROTO từ tĩnh sang DHCP bằng lệnh nmcli, trong đó chúng ta phải sửa đổi ipv4.method bằng cách thực thi lệnh bên dưới:

[root@blogd-net-lab01 ~]# nmcli con mod ens37 ipv4.method auto

Sau khi thực thi lệnh trên chúng ta kiểm tra như sau:

[root@blogd-net-lab01 ~]# egrep 'BOOTPROTO' /etc/sysconfig/network-scripts/ifcfg-ens39
BOOTPROTO=none
[root@blogd-net-lab01 ~]# ip add
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: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:fc:cd:6d brd ff:ff:ff:ff:ff:ff
    inet 192.168.129.128/24 brd 192.168.129.255 scope global dynamic noprefixroute ens37
       valid_lft 1046sec preferred_lft 1046sec
    inet6 fe80::be58:1207:35b:406e/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

Ví dụ 15: Khi chúng ta muốn thay đổi ONBOOT có trong file cấu hình interface. Vì vậy, để vô hiệu hóa ONBOOT, chúng ta phải sửa đổi connection.autoconnect bằng cách sử dụng lệnh nmcli thực hiện như sau:

Xác minh giá trị ONBOOT trước khi thay đổi:

[root@blogd-net-lab01 ~]# egrep 'ONBOOT' /etc/sysconfig/network-scripts/ifcfg-ens39
ONBOOT=yes

Thực thị lệnh bên dưới để vô hiệu hóa giá trị ONBOOT:

[root@blogd-net-lab01 ~]# nmcli con mod ens39 connection.autoconnect no

Xác minh giá trị ONBOOT sau khi thay đổi:

[root@blogd-net-lab01 ~]# egrep 'ONBOOT' /etc/sysconfig/network-scripts/ifcfg-ens39
ONBOOT=no

Ví dụ 16: Thay đổi chỉ thị DEFROUTE (Không sử dụng mạng này cho default route). Theo mặc định, bất kỳ cổng được thêm cho bất kỳ kết nối ethernet nào cũng sẽ được coi là cổng mặc định, để tắt sử dụng lệnh này ipv4.never-default:

Trước tiên chúng ta thực hiện xác minh DEFROUTE trong file cấu hình ens39:

[root@blogd-net-lab01 ~]# egrep '^DEFROUTE' /etc/sysconfig/network-scripts/ifcfg-ens39
DEFROUTE=yes

Theo mặc định thì DEFROUTE sẽ YES, chúng ta sẽ vô hiệu hóa tùy chọn cổng mặc định cho ens39 bằng cách thực thi lệnh sau:

[root@blogd-net-lab01 ~]# nmcli con mod ens39 ipv4.never-default yes

Sác thực lại giá trị đã thay đổi sau khi thực hiện lệnh trên:

[root@blogd-net-lab01 ~]# egrep '^DEFROUTE' /etc/sysconfig/network-scripts/ifcfg-ens39
DEFROUTE=no

Ví dụ 17: Vô hiệu hóa Địa chỉ IPv6 cho kết nối ethernet:

Theo mặc định thì kết nối IPv4 và IPv6 đều được bật cho mọi kết nối ethernet. Để chỉ sử dụng IPv4 và tắt IPv6 bằng cách sử dụng lệnh nmcli:

Sác thực IPv6INIT trong file cấu hình ethernet:

[root@blogd-net-lab01 ~]# egrep 'IPV6INIT' /etc/sysconfig/network-scripts/ifcfg-ens39
IPV6INIT=yes

Thực thi lệnh sau để tắt địa chỉ IPv6 cho tệp cấu hình ethernet:

[root@blogd-net-lab01 ~]# nmcli con mod ens39 ipv6.method ignore

Sác thực IPv6INIT trong file cấu hình ethernet sau khi thực hiện lệnh trên:

[root@blogd-net-lab01 ~]# egrep 'IPV6INIT' /etc/sysconfig/network-scripts/ifcfg-ens39
IPV6INIT=no

Ví dụ 18: Khi chúng ta muốn thêm hoặc thay đổi DNS server của kết nối hiện tại bằng lệnh nmcli chúng ta thực hiện như sau:

Kiểm tra DNS hiện tại của kết nối:

[root@blogd-net-lab01 ~]# egrep DNS /etc/sysconfig/network-scripts/ifcfg-ens37

Tiếp theo thực hiện thêm DNS server cho kết nối bằng cách thực thi lệnh sau:

[root@blogd-net-lab01 ~]# nmcli con mod ens37 ipv4.dns 8.8.8.8

Sác thực lại xem DNS server đã được thêm vào kết nối hiện tại hay chưa:

[root@blogd-net-lab01 ~]# egrep DNS /etc/sysconfig/network-scripts/ifcfg-ens37
DNS1=8.8.8.8

Nếu chúng ta muốn sử dụng nhiều DNS server thì chúng ta có thể sử dụng lệnh nmcli cùng với phép + theo sau nó là ipv4.dns. Ở trên chúng ta đã thêm DNS1=8.8.8.8 trong ví dụ này chúng ta thực hiện thêm một DNS server có IP là 8.4.4.4:

[root@blogd-net-lab01 ~]# nmcli con mod ens37 +ipv4.dns 8.4.4.4

Thực hiện kiểm tra lại DNS server đã được thêm vào kết nối hiện tại:

[root@blogd-net-lab01 ~]# egrep DNS /etc/sysconfig/network-scripts/ifcfg-ens37
DNS1=8.8.8.8
DNS2=8.4.4.4

Ví dụ 19: Chúng ta muốn xóa một hoặc nhiều DNS server của kết nối hiện tại bằng lệnh nmcli cùng với dấu - theo sau nó là ipv4.dns như bên dưới:

[root@blogd-net-lab01 ~]# nmcli con mod ens37 -ipv4.dns 8.4.4.4
[root@blogd-net-lab01 ~]# nmcli con mod ens37 -ipv4.dns 8.8.8.8

Kiểm tra lại DNS server của kết nối hiện tại:

[root@blogd-net-lab01 ~]# egrep DNS /etc/sysconfig/network-scripts/ifcfg-ens37

Ví dụ 20: Kích hoạt hoặc vô hiệu hóa kết nối

Khi chúng ta muốn kích hoạt một kết nối bằng cách sử dụng lệnh nmcli cùng với tùy chọn up như sau:

Kiểm tra số kết nối khả dụng:

[root@blogd-net-lab01 ~]# nmcli con show --active
NAME   UUID                                  TYPE      DEVICE
ens33  3067faf9-4b17-4028-b4db-1e6c721cfb20  ethernet  ens33

Thực hiện kích hoạt kết nối bằng cách thực thi lệnh sau:

[root@blogd-net-lab01 ~]# nmcli con up ens37
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)

Kiểm tra lại các kết nối khả dụng:

[root@blogd-net-lab01 ~]# nmcli con show --active
NAME   UUID                                  TYPE      DEVICE
ens33  3067faf9-4b17-4028-b4db-1e6c721cfb20  ethernet  ens33
ens37  ce30feec-0926-4c31-8579-3b8d3906fba4  ethernet  ens37

Trong một số trường hợp chúng ta muốn vô hiệu hóa một kết nối thì chúng ta sử dụng lệnh nmcli cùng với tùy chọn down như bên dưới:

[root@blogd-net-lab01 ~]# nmcli con down ens37
Connection 'ens37' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)

Kiểm tra lại các kết nối khả dụng:

[root@blogd-net-lab01 ~]# nmcli con show --active
NAME   UUID                                  TYPE      DEVICE
ens33  3067faf9-4b17-4028-b4db-1e6c721cfb20  ethernet  ens33

5. Cài đặt lệnh Network trên CentOS 8/RHEL 8

Theo mặc định thì các tập lệnh network không được dùng trong CentOS 8 hoặc RHEL 8 và không được cài đặt. Nếu chúng ta muốn sử dụng lệnh network chúng ta cần cài đặt gói sau:

[root@localhost ~]# yum install network-scripts
Last metadata expiration check: 0:16:47 ago on Sun 08 Dec 2019 10:38:13 AM EST.
Dependencies resolved.
=============================================================================================================================
 Package                              Arch                   Version                            Repository              Size
=============================================================================================================================
Installing:
 network-scripts                      x86_64                 10.00.1-1.el8_0.1                  BaseOS                 194 k
Installing weak dependencies:
 network-scripts-team                 x86_64                 1.27-10.el8                        BaseOS                  25 k

Transaction Summary
=============================================================================================================================
Install  2 Packages

Total download size: 219 k
Installed size: 179 k
Is this ok [y/N]: y
Downloading Packages:
(1/2): network-scripts-10.00.1-1.el8_0.1.x86_64.rpm                                          161 kB/s | 194 kB     00:01
(2/2): network-scripts-team-1.27-10.el8.x86_64.rpm                                            20 kB/s |  25 kB     00:01
-----------------------------------------------------------------------------------------------------------------------------
Total                                                                                         64 kB/s | 219 kB     00:03
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                     1/1
  Installing       : network-scripts-10.00.1-1.el8_0.1.x86_64                                                            1/2
  Running scriptlet: network-scripts-10.00.1-1.el8_0.1.x86_64                                                            1/2
  Installing       : network-scripts-team-1.27-10.el8.x86_64                                                             2/2
  Running scriptlet: network-scripts-team-1.27-10.el8.x86_64                                                             2/2
  Verifying        : network-scripts-10.00.1-1.el8_0.1.x86_64                                                            1/2
  Verifying        : network-scripts-team-1.27-10.el8.x86_64                                                             2/2

Installed:
  network-scripts-10.00.1-1.el8_0.1.x86_64                      network-scripts-team-1.27-10.el8.x86_64

Complete!

Sau khi cài đặt thành công thì gói này cung cấp một phiên bản mới của tập lệnh ifupifdown. NetworkManager phải được chạy để chúng ta có thể chạy các tập lệnh này.

6. Lời kết

Qua bài trên, giúp cho chúng ta cách quản lý mạng dùng NetworkManager trên CentOS 8 của hệ điều hành Linux, cách thiết lập IP cho CentOS 8 từ đó chúng ta có thể trải nghiệm máy chủ CentOS 8 cách tốt nhất.