ใช้ประโยชน์อย่างเต็มที่จากเครื่องมือการจัดการเครือข่าย NetworkManager บนบรรทัดคำสั่ง Linux โดยใช้ยูทิลิตี้ nmcli
คุณประโยชน์
ปรากฏในปี 2010 และสำหรับหลาย ๆ คนได้กลายเป็นอีกทางเลือกหนึ่งในการกำหนดค่าอินเทอร์เฟซเครือข่ายและการเชื่อมต่อ แม้ว่าบางคนยังใช้อยู่ก็ตาม
ไวยากรณ์คำสั่ง 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 ในบรรทัดเดียวหรือสคริปต์ คุณจะต้องใช้เวอร์ชันบรรทัดคำสั่งปกติ
เมื่อคุณมีพื้นฐานแล้ว ลองดูสิ
เป็นโฆษณา
เซิร์ฟเวอร์มหากาพย์ - เป็น
ที่มา: will.com