การจัดการการเชื่อมต่อเครือข่ายใน Linux โดยใช้ยูทิลิตี้คอนโซล nmcli

ใช้ประโยชน์อย่างเต็มที่จากเครื่องมือการจัดการเครือข่าย NetworkManager บนบรรทัดคำสั่ง Linux โดยใช้ยูทิลิตี้ nmcli

การจัดการการเชื่อมต่อเครือข่ายใน Linux โดยใช้ยูทิลิตี้คอนโซล nmcli

คุณประโยชน์ เอ็นเอ็มซีแอล เรียก API โดยตรงเพื่อเข้าถึงฟังก์ชัน NetworkManager

ปรากฏในปี 2010 และสำหรับหลาย ๆ คนได้กลายเป็นอีกทางเลือกหนึ่งในการกำหนดค่าอินเทอร์เฟซเครือข่ายและการเชื่อมต่อ แม้ว่าบางคนยังใช้อยู่ก็ตาม ifconfig. เนื่องจาก nmcli เป็นเครื่องมืออินเทอร์เฟซบรรทัดคำสั่ง (CLI) ที่ออกแบบมาเพื่อใช้ในหน้าต่างเทอร์มินัลและสคริปต์ จึงเหมาะอย่างยิ่งสำหรับผู้ดูแลระบบที่ทำงานโดยไม่มี GUI

ไวยากรณ์คำสั่ง ncmli

โดยทั่วไปไวยากรณ์จะมีลักษณะดังนี้:

$ nmcli <options> <section> <action>

  • ตัวเลือกคือพารามิเตอร์ที่กำหนดรายละเอียดปลีกย่อยของการดำเนินการ nmcli
  • ส่วน (ส่วน) - กำหนดคุณสมบัติของยูทิลิตี้ที่จะใช้
  • การดำเนินการ - ช่วยให้คุณระบุสิ่งที่ต้องทำจริง

มีทั้งหมด 8 ส่วนซึ่งแต่ละส่วนเกี่ยวข้องกับชุดคำสั่ง (การกระทำ):

  • การช่วยเหลือ ให้ความช่วยเหลือเกี่ยวกับคำสั่ง ncmcli และการใช้งาน
  • General ส่งคืนสถานะ NetworkManager และการกำหนดค่าส่วนกลาง
  • ระบบเครือข่าย รวมคำสั่งเพื่อค้นหาสถานะการเชื่อมต่อเครือข่ายและเปิด/ปิดการเชื่อมต่อ
  • วิทยุ รวมคำสั่งเพื่อค้นหาสถานะการเชื่อมต่อเครือข่าย WiFi และเปิด/ปิดการเชื่อมต่อ
  • การตรวจสอบ รวมคำสั่งสำหรับตรวจสอบกิจกรรม NetworkManager และการสังเกตการเปลี่ยนแปลงในสถานะการเชื่อมต่อเครือข่าย
  • การเชื่อมต่อ รวมคำสั่งสำหรับจัดการอินเทอร์เฟซเครือข่าย การเพิ่มการเชื่อมต่อใหม่และการลบการเชื่อมต่อที่มีอยู่
  • อุปกรณ์ ส่วนใหญ่ใช้เพื่อเปลี่ยนพารามิเตอร์ที่เกี่ยวข้องกับอุปกรณ์ (เช่นชื่ออินเทอร์เฟซ) หรือเพื่อเชื่อมต่ออุปกรณ์โดยใช้การเชื่อมต่อที่มีอยู่
  • ลับ ลงทะเบียน nmcli เป็น "ตัวแทนลับ" ของ NetworkManager ที่คอยฟังข้อความลับ ส่วนนี้ไม่ค่อยได้ใช้ เนื่องจาก nmcli ทำงานในลักษณะนี้ตามค่าเริ่มต้นเมื่อเชื่อมต่อกับเครือข่าย

ตัวอย่างง่ายๆ

ก่อนที่คุณจะเริ่มต้น ตรวจสอบให้แน่ใจว่า NetworkManager กำลังทำงานอยู่ และ nmcli สามารถสื่อสารกับมันได้:

$ nmcli general
STATE      CONNECTIVITY  WIFI-HW  WIFI     WWAN-HW  WWAN    
connected  full          enabled  enabled  enabled  enabled

งานมักเริ่มต้นด้วยการดูโปรไฟล์การเชื่อมต่อเครือข่ายทั้งหมด:

$ nmcli connection show
NAME                UUID                                  TYPE      DEVICE
Wired connection 1  ac3241e4-b424-35d6-aaa7-07498561688d  ethernet  enp0s3
Wired connection 2  2279d917-fa02-390c-8603-3083ec5a1d3e  ethernet  enp0s8
Wired connection 3  52d89737-de92-35ec-b082-8cf2e5ac36e6  ethernet  enp0s9

คำสั่งนี้ใช้ การกระทำ แสดงในส่วนการเชื่อมต่อ

เครื่องทดสอบใช้ Ubuntu 20.04 ในกรณีนี้ เราพบการเชื่อมต่อแบบมีสายสามแบบ: enp0s3, enp0s8 และ enp0s9

จัดการการเชื่อมต่อ

สิ่งสำคัญคือต้องเข้าใจว่าใน nmcli โดยคำว่า Connection เราหมายถึงเอนทิตีที่มีข้อมูลทั้งหมดเกี่ยวกับการเชื่อมต่อ กล่าวอีกนัยหนึ่ง นี่คือการกำหนดค่าเครือข่าย การเชื่อมต่อสรุปข้อมูลที่เกี่ยวข้องกับการเชื่อมต่อทั้งหมด รวมถึงเลเยอร์ลิงก์และข้อมูลที่อยู่ IP เหล่านี้คือเลเยอร์ 2 และเลเยอร์ 3 ในรูปแบบเครือข่าย OSI

เมื่อคุณตั้งค่าเครือข่ายใน Linux คุณมักจะตั้งค่าการเชื่อมต่อที่จะเชื่อมโยงกับอุปกรณ์เครือข่าย ซึ่งจะเป็นอินเทอร์เฟซเครือข่ายที่ติดตั้งบนคอมพิวเตอร์ เมื่อใช้การเชื่อมต่อ อุปกรณ์จะถือว่าใช้งานอยู่หรือยกระดับ หากไม่ได้ใช้งานการเชื่อมต่อ การเชื่อมต่อนั้นจะไม่ทำงานหรือรีเซ็ต

การเพิ่มการเชื่อมต่อเครือข่าย

ยูทิลิตี้ ncmli ช่วยให้คุณเพิ่มและกำหนดค่าการเชื่อมต่อได้อย่างรวดเร็ว ตัวอย่างเช่น หากต้องการเพิ่มการเชื่อมต่อแบบใช้สาย 2 (ด้วย enp0s8) คุณต้องรันคำสั่งต่อไปนี้ในฐานะ superuser:

$ sudo nmcli connection add type ethernet ifname enp0s8
Connection 'ethernet-enp0s8' (09d26960-25a0-440f-8b20-c684d7adc2f5) successfully added.

ในตัวเลือกประเภทเราระบุว่านี่คือการเชื่อมต่ออีเธอร์เน็ต และในตัวเลือก ifname (ชื่ออินเทอร์เฟซ) เราระบุอินเทอร์เฟซเครือข่ายที่เราต้องการใช้

นี่คือสิ่งที่จะเกิดขึ้นหลังจากรันคำสั่ง:

$ nmcli connection show
NAME                UUID                                  TYPE      DEVICE
Wired connection 1  ac3241e4-b424-35d6-aaa7-07498561688d  ethernet  enp0s3
Wired connection 2  2279d917-fa02-390c-8603-3083ec5a1d3e  ethernet  enp0s8
Wired connection 3  52d89737-de92-35ec-b082-8cf2e5ac36e6  ethernet  enp0s9
ethernet-enp0s8     09d26960-25a0-440f-8b20-c684d7adc2f5  ethernet  --  

สร้างการเชื่อมต่อใหม่แล้ว ethernet-enp0s8 ได้รับการกำหนด UUID และประเภทการเชื่อมต่อคืออีเธอร์เน็ต มายกระดับโดยใช้คำสั่ง up:

$ nmcli connection up ethernet-enp0s8
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)

ตรวจสอบรายการการเชื่อมต่อที่ใช้งานอยู่อีกครั้ง:

$ nmcli connection show --active
NAME                UUID                                  TYPE      DEVICE
Wired connection 1  ac3241e4-b424-35d6-aaa7-07498561688d  ethernet  enp0s3
ethernet-enp0s8     09d26960-25a0-440f-8b20-c684d7adc2f5  ethernet  enp0s8
Wired connection 3  52d89737-de92-35ec-b082-8cf2e5ac36e6  ethernet  enp0s9

มีการเพิ่มการเชื่อมต่อใหม่ ethernet-enp0s8 ซึ่งเปิดใช้งานอยู่และใช้อินเทอร์เฟซเครือข่าย enp0s8

การตั้งค่าการเชื่อมต่อ

ยูทิลิตี้ ncmli ช่วยให้คุณเปลี่ยนพารามิเตอร์ของการเชื่อมต่อที่มีอยู่ได้อย่างง่ายดาย ตัวอย่างเช่น คุณต้องเปลี่ยนที่อยู่ IP แบบไดนามิก (DHCP) เป็นที่อยู่ IP แบบคงที่

สมมติว่าเราต้องตั้งค่าที่อยู่ IP เป็น 192.168.4.26 ในการทำเช่นนี้เราใช้สองคำสั่ง อันแรกจะตั้งค่าที่อยู่ IP โดยตรง และอันที่สองจะเปลี่ยนวิธีการตั้งค่าที่อยู่ IP เป็นแบบแมนนวล:

$ nmcli connection modify ethernet-enp0s8 ipv4.address 192.168.4.26/24
$ nmcli connection modify ethernet-enp0s8 ipv4.method manual

อย่าลืมตั้งค่าซับเน็ตมาสก์ด้วย สำหรับการเชื่อมต่อทดสอบของเรา นี่คือ 255.255.255.0 หรือด้วย /24 สำหรับการกำหนดเส้นทางแบบไม่มีคลาส (CIDR)

เพื่อให้การเปลี่ยนแปลงมีผล คุณต้องปิดใช้งานแล้วเปิดใช้งานการเชื่อมต่ออีกครั้ง:

$ nmcli connection down ethernet-enp0s8
Connection 'ethernet-enp0s8' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
$ nmcli connection up ethernet-enp0s8
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveC

ในทางกลับกัน หากคุณต้องการติดตั้ง DHCP ให้ใช้อัตโนมัติแทนการติดตั้งด้วยตนเอง:

$ nmcli connection modify ethernet-enp0s8 ipv4.method auto

การทำงานกับอุปกรณ์

สำหรับสิ่งนี้เราใช้ส่วนอุปกรณ์

กำลังตรวจสอบสถานะอุปกรณ์

$ nmcli device status
DEVICE  TYPE      STATE      CONNECTION        
enp0s3  ethernet  connected  Wired connection 1
enp0s8  ethernet  connected  ethernet-enp0s8    
enp0s9  ethernet  connected  Wired connection 3
lo      loopback  unmanaged  --  

การขอข้อมูลอุปกรณ์

เมื่อต้องการทำเช่นนี้ ให้ใช้การดำเนินการแสดงจากส่วนอุปกรณ์ (คุณต้องระบุชื่ออุปกรณ์) ยูทิลิตี้นี้แสดงข้อมูลจำนวนมาก โดยมักจะปรากฏบนหลายหน้า
มาดูอินเทอร์เฟซ enp0s8 ที่การเชื่อมต่อใหม่ของเราใช้กัน ตรวจสอบให้แน่ใจว่าใช้ที่อยู่ IP ที่เราตั้งไว้ก่อนหน้านี้ทุกประการ:

$ nmcli device show enp0s8
GENERAL.DEVICE:                         enp0s8
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         08:00:27:81:16:20
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                     ethernet-enp0s8
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/6
WIRED-PROPERTIES.CARRIER:               on
IP4.ADDRESS[1]:                         192.168.4.26/24
IP4.GATEWAY:                            --
IP4.ROUTE[1]:                           dst = 192.168.4.0/24, nh = 0.0.0.0, mt = 103
IP6.ADDRESS[1]:                         fe80::6d70:90de:cb83:4491/64
IP6.GATEWAY:                            --
IP6.ROUTE[1]:                           dst = fe80::/64, nh = ::, mt = 103
IP6.ROUTE[2]:                           dst = ff00::/8, nh = ::, mt = 256, table=255

มีข้อมูลค่อนข้างมาก เรามาเน้นสิ่งสำคัญ:

  • ชื่ออินเทอร์เฟซเครือข่าย: enp0s8
  • ประเภทการเชื่อมต่อ: การเชื่อมต่ออีเธอร์เน็ตแบบมีสาย
  • เราเห็นที่อยู่ MAC ของอุปกรณ์
  • ระบุหน่วยส่งสัญญาณสูงสุด (MTU) — ขนาดสูงสุดของบล็อกข้อมูลที่มีประโยชน์ของหนึ่งแพ็กเก็ตที่สามารถส่งโดยโปรโตคอลโดยไม่มีการกระจายตัว
  • เครื่อง เชื่อมต่ออยู่ในขณะนี้.
  • ชื่อการเชื่อมต่ออุปกรณ์ใดที่ใช้: ethernet-enp0s8
  • อุปกรณ์ใช้ ที่อยู่ IPซึ่งเราติดตั้งไว้ก่อนหน้านี้: 192.168.4.26/24

ข้อมูลอื่นๆ เกี่ยวข้องกับพารามิเตอร์การกำหนดเส้นทางเริ่มต้นและเกตเวย์การเชื่อมต่อ ขึ้นอยู่กับเครือข่ายเฉพาะ

ตัวแก้ไข nmcli แบบโต้ตอบ

nmcli ยังมีโปรแกรมแก้ไขเชิงโต้ตอบที่เรียบง่าย ซึ่งอาจสะดวกกว่าสำหรับบางคนในการทำงานด้วย หากต้องการรันบนการเชื่อมต่อ ethernet-enp0s8 ให้ใช้ การกระทำ แก้ไข:

$ nmcli connection edit ethernet-enp0s8

นอกจากนี้ยังมีความช่วยเหลือเล็กน้อยซึ่งมีขนาดเล็กกว่าเวอร์ชันคอนโซล:

===| nmcli interactive connection editor |===
Editing existing '802-3-ethernet' connection: 'ethernet-enp0s8'
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>

หากคุณพิมพ์คำสั่งพิมพ์แล้วกด Enter nmcli จะแสดงคุณสมบัติการเชื่อมต่อทั้งหมด:

===============================================================================
                 Connection profile details (ethernet-enp0s8)
===============================================================================
connection.id:                          ethernet-enp0s8
connection.uuid:                        09d26960-25a0-440f-8b20-c684d7adc2f5
connection.stable-id:                   --
connection.type:                        802-3-ethernet
connection.interface-name:              enp0s8
connection.autoconnect:                 yes
connection.autoconnect-priority:        0
connection.autoconnect-retries:         -1 (default)
connection.multi-connect:               0 (default)
connection.auth-retries:                -1
connection.timestamp:                   1593967212
connection.read-only:                   no
connection.permissions:                 --
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.autoconnect-slaves:          -1 (default)
connection.secondaries:                 --

ตัวอย่างเช่น หากต้องการตั้งค่าการเชื่อมต่อกับ DHCP ให้พิมพ์ goto ipv4 แล้วคลิก เข้าสู่:

nmcli> goto ipv4
You may edit the following properties: method, dns, dns-search, 
dns-options, dns-priority, addresses, gateway, routes, route-metric, 
route-table, routing-rules, ignore-auto-routes, ignore-auto-dns, 
dhcp-client-id, dhcp-iaid, dhcp-timeout, dhcp-send-hostname, 
dhcp-hostname, dhcp-fqdn, dhcp-hostname-flags, never-default, may-fail, 
dad-timeout
nmcli ipv4>

จากนั้นเขียน set method auto แล้วคลิก เข้าสู่:

nmcli ipv4> set method auto
Do you also want to clear 'ipv4.addresses'? [yes]:

หากคุณต้องการล้างที่อยู่ IP แบบคงที่ ให้คลิก เข้าสู่. หรือพิมพ์ no แล้วกด Enter คุณสามารถบันทึกได้หากคุณคิดว่าจำเป็นต้องใช้ในอนาคต แต่ถึงแม้จะมีที่อยู่ IP แบบคงที่ที่บันทึกไว้ DHCP ก็ยังถูกใช้หากตั้งค่าวิธีเป็นอัตโนมัติ

ใช้คำสั่งบันทึกเพื่อบันทึกการเปลี่ยนแปลงของคุณ:

nmcli ipv4> save
Connection 'ethernet-enp0s8' (09d26960-25a0-440f-8b20-c684d7adc2f5) successfully updated.
nmcli ipv4>

พิมพ์ exit เพื่อออกจาก nmcli Interactive Editor หากคุณเปลี่ยนใจที่จะออก ให้ใช้คำสั่ง back

และนั่นไม่ใช่ทั้งหมด

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

เมื่อคุณมีพื้นฐานแล้ว ลองดูสิ หน้าคน nmcli เพื่อดูว่าสามารถช่วยคุณได้อย่างไร

เป็นโฆษณา

เซิร์ฟเวอร์มหากาพย์ - เป็น เซิร์ฟเวอร์เสมือนบน Windows หรือ Linux พร้อมโปรเซสเซอร์ตระกูล AMD EPYC อันทรงพลังและไดรฟ์ Intel NVMe ที่รวดเร็วมาก รีบสั่งเลย!

การจัดการการเชื่อมต่อเครือข่ายใน Linux โดยใช้ยูทิลิตี้คอนโซล nmcli

ที่มา: will.com

เพิ่มความคิดเห็น