ค้นหาเว็บไซต์

วิธีจัดการเครือข่ายด้วย NetworkManager ใน RHEL/CentOS 8


ใน RHEL และ CentOS 8 บริการเครือข่ายได้รับการจัดการโดย NetworkManager daemon และใช้เพื่อกำหนดค่าและควบคุมอุปกรณ์เครือข่ายแบบไดนามิก และรักษาการเชื่อมต่อไว้ และใช้งานได้เมื่อพร้อมใช้งาน

NetworkManager มาพร้อมกับคุณประโยชน์มากมาย เช่น การสนับสนุนสำหรับการตั้งค่าเครือข่ายที่ง่ายดายและการจัดการโดยใช้ทั้งอินเทอร์เฟซบรรทัดคำสั่งและเครื่องมืออินเทอร์เฟซผู้ใช้แบบกราฟิก ให้ API ผ่าน D-Bus ซึ่งช่วยให้สามารถสืบค้นและควบคุมการกำหนดค่าเครือข่าย การสนับสนุน เพื่อความยืดหยุ่นในการกำหนดค่าและอื่นๆ อีกมากมาย

นอกจากนี้ NetworkManager ยังสามารถกำหนดค่าโดยใช้ไฟล์และเว็บคอนโซลของ Cockpit และสนับสนุนการใช้สคริปต์ที่กำหนดเองเพื่อเริ่มหรือหยุดบริการอื่น ๆ ตามสถานะการเชื่อมต่อ

อ่านเพิ่มเติม: วิธีกำหนดค่าและจัดการการเชื่อมต่อเครือข่ายโดยใช้เครื่องมือ 'nmcli'

ก่อนที่เราจะไปไกลกว่านั้น ต่อไปนี้คือประเด็นสำคัญอื่นๆ ที่ควรทราบเกี่ยวกับเครือข่ายใน CentOS/RHEL 8:

  • ไฟล์ประเภท ifcfg แบบดั้งเดิม (เช่น ไฟล์ ifcfg-eth0, ifcfg-enp0s3) ยังคงได้รับการสนับสนุน
  • สคริปต์เครือข่ายเลิกใช้แล้วและไม่มีให้ตามค่าเริ่มต้นอีกต่อไป
  • การติดตั้งขั้นต่ำจะทำให้มีสคริปต์ ifup และ ifdown เวอร์ชันใหม่ที่เรียก NetworkManager ผ่านเครื่องมือ nmcli
  • หากต้องการเรียกใช้สคริปต์ ifup และ ifdown NetworkManager จะต้องทำงานอยู่

การติดตั้ง NetworkManager บน CentOS/RHEL 8

NetworkManager ควรติดตั้งไว้ล่วงหน้าในการติดตั้งพื้นฐาน CentOS/RHEL 8 ไม่เช่นนั้น คุณจะติดตั้งได้โดยใช้ตัวจัดการแพ็คเกจ DNF ดังที่แสดง

dnf install NetworkManager

ไฟล์การกำหนดค่าส่วนกลางสำหรับ NetworkManager อยู่ที่ /etc/NetworkManager/NetworkManager.conf และไฟล์การกำหนดค่าเพิ่มเติมสามารถพบได้ใน /etc/NetworkManager/ .

การจัดการ NetworkManager โดยใช้ Systemctl บน CentOS/RHEL 8

ใน CentOS/RHEL 8 และระบบ Linux สมัยใหม่อื่นๆ ที่ใช้ systemd (ตัวจัดการระบบและบริการ) บริการจะได้รับการจัดการโดยใช้เครื่องมือ systemctl

ต่อไปนี้เป็น คำสั่ง systemctl ที่เป็นประโยชน์สำหรับการจัดการบริการ NetworkManager

การตรวจสอบสถานะของ NetworkManager

การติดตั้ง CentOS/RHEL 8 ขั้นต่ำควรให้ NetworkManager เริ่มต้นและเปิดใช้งานให้เริ่มทำงานโดยอัตโนมัติในเวลาบูตตามค่าเริ่มต้น คุณสามารถใช้คำสั่งต่อไปนี้เพื่อตรวจสอบว่า NetworkManager ทำงานอยู่ เปิดใช้งาน และพิมพ์ข้อมูลสถานะรันไทม์ของ NetworkManager หรือไม่

systemctl is-active NetworkManager
systemctl is-enabled NetworkManager
systemctl status NetworkManager 

กำลังเริ่ม NetworkManager

หาก NetworkManager ไม่ทำงาน คุณสามารถเริ่มต้นได้โดยการเรียกใช้

systemctl start NetworkManager

กำลังหยุด NetworkManager

หากต้องการหยุดหรือปิดใช้งาน NetworkManager ด้วยเหตุผลใดก็ตาม ให้ใช้คำสั่งต่อไปนี้

systemctl stop NetworkManager

กำลังรีสตาร์ท NetworkManager

หากคุณได้ทำการเปลี่ยนแปลงใดๆ ในไฟล์การกำหนดค่าอินเทอร์เฟซหรือการกำหนดค่าของ NetworkManager daemon (โดยทั่วไปจะอยู่ภายใต้ไดเร็กทอรี /etc/NetworkManager/) คุณสามารถรีสตาร์ท (หยุดแล้วเริ่ม) NetworkManager เพื่อใช้การเปลี่ยนแปลงเป็น แสดง

systemctl restart NetworkManager

กำลังโหลด NetworkManager อีกครั้ง

หากต้องการโหลดการกำหนดค่าของ NetworkManager daemon ใหม่ (แต่ไม่ใช่ไฟล์การกำหนดค่าหน่วยของ systemd) โดยไม่ต้องเริ่มบริการใหม่ ให้เรียกใช้คำสั่งต่อไปนี้

systemctl reload NetworkManager

การใช้เครื่องมือ NetworkManager และการทำงานกับไฟล์ ifcfg

NetworkManager รองรับเครื่องมือบางอย่างเพื่อให้ผู้ใช้สามารถโต้ตอบกับมันได้ ซึ่งได้แก่:

  1. nmcli – เครื่องมือบรรทัดคำสั่งที่ใช้ในการกำหนดค่าเครือข่าย
  2. nmtui – ส่วนต่อประสานผู้ใช้แบบข้อความที่ใช้คำสาปอย่างง่าย ซึ่งใช้ในการกำหนดค่าและจัดการการเชื่อมต่อส่วนต่อประสาน newtwork
  3. เครื่องมืออื่นๆ ได้แก่ nm-connection-editor, control-center และ ไอคอนการเชื่อมต่อเครือข่าย (ทั้งหมดอยู่ภายใต้ GUI)

หากต้องการแสดงรายการอุปกรณ์ที่ NetworkManager ตรวจพบ ให้เรียกใช้ คำสั่ง nmcli

 
nmcli device 
OR
nmcli device status

หากต้องการดูการเชื่อมต่อที่ใช้งานอยู่ทั้งหมด ให้รันคำสั่งต่อไปนี้ (โปรดทราบว่าหากไม่มี -a คำสั่งนี้จะแสดงรายการโปรไฟล์การเชื่อมต่อที่พร้อมใช้งาน)

nmcli connection show -a

ตั้งค่าที่อยู่ IP แบบคงที่บน CentOS/RHEL 8

ไฟล์การกำหนดค่าเฉพาะอินเทอร์เฟซเครือข่ายจะอยู่ในไดเร็กทอรี /etc/sysconfig/network-scripts/ คุณสามารถแก้ไขไฟล์เหล่านี้ได้ เช่น เพื่อตั้งค่าที่อยู่ IP แบบคงที่สำหรับเซิร์ฟเวอร์ CentOS/RHEL 8 ของคุณ

vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

นี่คือตัวอย่างการกำหนดค่าสำหรับการตั้งค่าที่อยู่ IP แบบคงที่

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
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=enp0s3
UUID=e81c46b7-441a-4a63-b695-75d8fe633511
DEVICE=enp0s3
ONBOOT=yes
IPADDR=192.168.0.110
PREFIX=24
GATEWAY=192.168.0.1
DNS1=8.8.8.8
PEERDNS=no

หลังจากบันทึกการเปลี่ยนแปลง คุณจะต้องโหลดโปรไฟล์การเชื่อมต่อทั้งหมดใหม่หรือรีสตาร์ท NetworkManager เพื่อให้การเปลี่ยนแปลงใหม่มีผล

nmcli connection reload
OR
systemctl restart NetworkManager

การเริ่มต้นหรือการหยุดบริการเครือข่าย/สคริปต์ตามการเชื่อมต่อเครือข่าย

NetworkManager มีตัวเลือกที่เป็นประโยชน์ที่ช่วยให้ผู้ใช้สามารถดำเนินการบริการ (เช่น NFS, SMB ฯลฯ) หรือสคริปต์แบบง่ายตามการเชื่อมต่อเครือข่าย

ตัวอย่างเช่น หากคุณต้องการเมานต์ไดเร็กทอรีระยะไกลในเครื่องโดยอัตโนมัติด้วย sshfs, เมานต์การแชร์ SMB หรือเมานต์การแชร์ NFS หลังจากสลับระหว่างเครือข่าย คุณอาจต้องการดำเนินการบริการเครือข่ายดังกล่าวจนกว่า NetworkManager จะเปิดใช้งาน (การเชื่อมต่อทั้งหมดใช้งานได้)

คุณลักษณะนี้ให้บริการโดยบริการ NetworkManager-dispatcher (ซึ่งจะต้องเริ่มต้นและเปิดใช้งานเพื่อเริ่มโดยอัตโนมัติเมื่อบูตระบบ) เมื่อบริการทำงานแล้ว คุณสามารถเพิ่มสคริปต์ของคุณลงในไดเร็กทอรี /etc/NetworkManager/dispatcher.d

สคริปต์ทั้งหมดจะต้องปฏิบัติการและเขียนได้ และเป็นของ root ตัวอย่างเช่น:

chown root:root /etc/NetworkManager/dispatcher.d/10-nfs-mount.sh
chmod 755 /etc/NetworkManager/dispatcher.d/10-nfs-mount.sh

ข้อสำคัญ: สคริปต์โปรแกรมเลือกจ่ายงานจะถูกดำเนินการตามลำดับตัวอักษร ณ เวลาเชื่อมต่อ และในลำดับตัวอักษรกลับกันในเวลาตัดการเชื่อมต่อ

การใช้สคริปต์เครือข่ายแบบเดิม

ดังที่เราได้กล่าวไปแล้ว สคริปต์เครือข่ายเลิกใช้งานแล้วใน CentOS/RHEL 8 และไม่ได้ติดตั้งมาตามค่าเริ่มต้น หากคุณยังคงต้องการใช้ nสคริปต์เครือข่าย คุณจะต้องติดตั้งแพ็คเกจ สคริปต์เครือข่าย

yum install network-scripts

เมื่อติดตั้งแล้ว แพ็คเกจนี้จะมีเวอร์ชันใหม่ของสคริปต์ ifup และ ifdown ซึ่งเรียกใช้ NetworkManager ผ่านเครื่องมือ nmcli เราได้ดูที่ด้านบนแล้ว โปรดทราบว่า NetworkManager ควรทำงานเพื่อให้คุณเรียกใช้สคริปต์เหล่านี้

สำหรับข้อมูลเพิ่มเติม โปรดดูที่หน้าคู่มือ systemctl และ NetworkManager

man systemctl
man NetworkManager

นั่นคือทั้งหมดที่เราเตรียมไว้ในบทความนี้ คุณสามารถขอคำชี้แจงในประเด็นใดๆ หรือถามคำถามหรือเพิ่มเติมใดๆ ในคู่มือนี้ผ่านแบบฟอร์มคำติชมด้านล่าง