Cách quản lý kết nối mạng Linux từ dòng lệnh

Lệnh nmcli
cho phép bạn khai thác sức mạnh của Linux NetworkManager ngay từ dòng lệnh, làm cho nó hoàn hảo cho các máy chủ không có môi trường máy tính để bàn và quản trị trình bao SSH từ xa.
Lệnh nmcli
Lệnh nmcli
không phải là mới, nó được phát hành vào năm 2010. Cùng với lệnh ip, nó thay thế ifconfig
đáng kính — nhưng không được dùng nữa — ifconfig. Các thói quen cũ đã chết dần và nhiều sysadmins vẫn sử dụng ifconfig
. Họ đã biết cách sử dụng nó, không cần phải học gì cả, và họ chỉ cần hoàn thành công việc. Vậy tại sao lại học thêm một công cụ khác?
Cuối cùng, ifconfig
sẽ bị loại bỏ bởi các bản phân phối, vì vậy đó là một sự thay đổi sắp tới, dù muốn hay không. Nhưng nmcli
có một số thủ thuật gọn gàng của riêng nó khiến việc tìm hiểu những gì nó có thể cung cấp rất đáng giá.
Các khái niệm và cú pháp ncmli
Giống như tất cả các lệnh CLI, nmcli
chấp nhận các tham số dòng lệnh. Các tham số được nhóm thành ba loại.
- Tùy chọn : Những điều này sửa đổi hành vi của
nmcli
- Phần : Những phần này cho
nmcli
biết bạn đang gọi nhóm hành động nào. Hãy coi các phần như một tập hợp các lệnh. - Hành động : Những điều này cho
nmcli
biết bạn muốn nó làm gì. Hãy coi chúng như những mệnh lệnh.
Định dạng cú pháp chung là:
nmcli <tùy chọn> <phần chọn> <phần>
nmcli
phần là:
- Trợ giúp : Cung cấp các văn bản trợ giúp ngắn về các lệnh
ncmcli
- Chung : Truy xuất trạng thái và cấu hình của NetworkManager
- Kết nối mạng : Truy vấn, bật hoặc tắt kết nối mạng
- Radio : Truy vấn, bật hoặc tắt kết nối mạng Wi-Fi
- Giám sát : Theo dõi NetworkManager và các thay đổi trạng thái của các kết nối mạng
- Kết nối : Thao tác trực tiếp các giao diện mạng, bao gồm bật và tắt chúng, thêm các kết nối mới và xóa các kết nối hiện có
- Thiết bị : Sửa đổi các thông số thiết bị mạng và kết nối hoặc ngắt kết nối thiết bị khỏi kết nối hiện có
- Bí mật : Đăng ký
nmcli
làm mật vụ NetworkManager. Bởi vìnmcli
thực hiện điều này tự động, điều này rất hiếm khi được sử dụng.
Các bước đầu tiên với nmcli
Hãy đảm bảo NetworkManager đã được cài đặt, đang chạy và chúng ta có thể kết nối với nó bằng nmcli
. Chúng tôi sẽ sử dụng hành động status
general
.
tình trạng chung của nmcli
Trên thực tế, trạng thái là hành động mặc định cho chung, vì vậy chúng ta có thể bỏ từ đó ra khỏi lệnh. Nhưng chúng tôi đã xác minh rằng nmcli
—và do đó NetworkManager — đã được cài đặt và hoạt động. Chúng ta hãy tìm hiểu thêm một chút về chiếc máy tính này.
Chúng tôi có thể liệt kê tất cả các cấu hình kết nối mạng trong bộ nhớ và trên đĩa bằng cách sử dụng hành động hiển thị từ phần kết nối:
chương trình kết nối nmcli
Đầu ra rộng hơn cửa sổ đầu cuối. Kết quả của chúng tôi là:
TÊN THIẾT BỊ LOẠI UUID Kết nối có dây 1 d2864443-9cee-31ec-ab2e-55e9ebddd53e ethernet enp0s3 ethernet-enp0s8 9aad8efa-3427-4a5c-bef5-270340cd33d0 ethernet enp0s8 ethernet-enp0s9 5bc49cef-bc3d-4832-9073-460b408932b6 ethernet enp0s9
Máy kiểm tra được sử dụng cho bài viết này đang chạy phiên bản Ubuntu 21.10 trước khi khởi chạy. Nó có ba bộ điều hợp mạng được cài đặt trong đó, có tên là enp0s3
, enp0s8
và enp0s9
.
Hiểu về hệ thống ống nước
Kết nối mạng cho phép máy tính của bạn giao tiếp qua mạng với một thiết bị khác. Bên trong, nmcli
giữ tất cả thông tin liên quan đến kết nối mạng trong một đối tượng dữ liệu mà nó gọi là kết nối.
nmcli
đóng gói tất cả thông tin liên quan đến kết nối đó, bao gồm cả lớp liên kết dữ liệu và thông tin địa chỉ IP. Bạn có thể nmcli
các kết nối của nmcli là chi tiết cấu hình cho các kết nối mạng trong thế giới thực.
Để tiếp cận thế giới bên ngoài, một kết nối phải sử dụng thiết bị giao diện mạng, chẳng hạn như card mạng. Một kết nối được liên kết với một thiết bị. Khi một thiết bị đang hoạt động và khả năng tiếp nhận hoặc truyền dữ liệu, kết nối được cho là active
hoặc up
. Trạng thái không hoạt động tương ứng được gọi là, gì ngạc nhiên, inactive
hoặc down
.
Thêm kết nối mạng
Với nmcli
bạn có thể tạo kết nối mạng và thiết lập một số tùy chọn cấu hình của nó bằng một lệnh duy nhất. Trên máy tính thử nghiệm này, không có kết nối nào trên enp0s8
, tên cho kết nối có dây (ethernet) số 2. Chúng tôi sẽ thêm kết nối vào enp0s8
. Vì chúng tôi đang thực hiện các thay đổi hệ thống, bạn sẽ cần sử dụng sudo
:
kết nối sudo nmcli thêm loại ethernet ifname enp0s8
Lệnh này sử dụng hành động add
connection
. Chúng tôi đã sử dụng type
để yêu cầu kết nối ethernet và ifname
(tên giao diện) để chỉ định thiết bị giao diện mạng mà chúng tôi muốn kết nối này sử dụng.
Hãy kiểm tra những gì đã xảy ra:
chương trình kết nối nmcli
TÊN THIẾT BỊ LOẠI UUID Kết nối có dây 1 d2864443-9cee-31ec-ab2e-55e9ebddd53e ethernet enp0s3 ethernet-enp0s8 9aad8efa-3427-4a5c-bef5-270340cd33d0 ethernet enp0s8 ethernet-enp0s9 5bc49cef-bc3d-4832-9073-460b408932b6 ethernet enp0s9 ethernet-enp0s8-1 b874aa09-3a25-4f52-b20b-1b95d9741be9 ethernet -
Kết nối mới của chúng tôi, ethernet-enp0s8-1
, đã được tạo. Mã định danh duy nhất phổ biến (UUID) của nó đã được chỉ định và loại kết nối là ethernet. Bây giờ chúng ta có thể kích hoạt nó bằng lệnh up
Lệnh up
phải được theo sau bởi tên kết nối hoặc UUID của nó:
kết nối nmcli lên ethernet-enp0s8-1
Hãy kiểm tra các kết nối đang hoạt động của chúng tôi một lần nữa:
hiển thị kết nối nmcli - hoạt động
TÊN THIẾT BỊ LOẠI UUID Kết nối có dây 1 d2864443-9cee-31ec-ab2e-55e9ebddd53e ethernet enp0s3 ethernet-enp0s8-1 b874aa09-3a25-4f52-b20b-1b95d9741be9 ethernet enp0s8 ethernet-enp0s9 5bc49cef-bc3d-4832-9073-460b408932b6 ethernet enp0s9
Kết nối mới của chúng tôi, ethernet-enp0s8-1
, hiện đang hoạt động và liên kết với thiết bị giao diện mạng enp0s8
Điều chỉnh kết nối
Tất nhiên, ncmli
cho phép bạn thay đổi các thông số của các kết nối hiện có. Giả sử chúng ta muốn chuyển giao diện mạng từ Giao thức cấu hình máy chủ động (DHCP) sang sử dụng địa chỉ IP tĩnh. Để phù hợp với mạng của chúng tôi, chúng tôi cần một địa chỉ IP cố định là 192.168.1.40 cho kết nối mới của chúng tôi.
Để đạt được điều đó, bạn cần đưa ra hai lệnh. Một để đặt địa chỉ IP và một để đặt phương pháp lấy địa chỉ IP của kết nối thành thủ công:
kết nối nmcli sửa đổi ethernet-enp0s8-1 ipv4.address 192.168.1.40/24
kết nối nmcli sửa đổi ethernet-enp0s8-1 hướng dẫn sử dụng ipv4.method
“/ 24” chúng tôi cung cấp địa chỉ IP là mặt nạ mạng con trong Định tuyến liên miền không phân lớp (CIDR). Trong ngữ cảnh này “/ 24” có nghĩa là “255.255.255.0.”
Các thay đổi sẽ không có hiệu lực cho đến khi kết nối được “trả lại”. Đó là, bị vô hiệu hóa và đưa trở lại trực tuyến. Lệnh đầu tiên gỡ bỏ kết nối và lệnh thứ hai đưa nó trở lại.
kết nối nmcli xuống ethernet-enp0s8-1
kết nối nmcli lên ethernet-enp0s8-1
Nếu bạn muốn đảo ngược thay đổi và chuyển từ địa chỉ IP tĩnh sang Địa chỉ IP DHCP, hãy sử dụng tùy chọn auto
manual
.
kết nối nmcli sửa đổi ethernet-enp0s8-1 ipv4.method auto
Quản lý thiết bị
Phần device
nmcli
chứa các hành động (lệnh) cho phép bạn quản lý các giao diện mạng được cài đặt trên máy tính của bạn. Để xem trạng thái của tất cả các giao diện mạng trên máy tính của bạn đang sử dụng:
trạng thái thiết bị nmcli
Hiển thị chi tiết thiết bị
Để kiểm tra chi tiết của giao diện mạng, chúng tôi sử dụng hành động show
device
. Nếu bạn không cung cấp tên thiết bị, thông tin chi tiết của tất cả các thiết bị sẽ được truy xuất và hiển thị. Bạn có thể cuộn và trang lên xuống để xem lại chúng.
Hãy xem enp0s8
, thiết bị mà chúng ta đang sử dụng kết nối mới. Chúng tôi có thể xác minh rằng địa chỉ IP đang sử dụng là địa chỉ mà chúng tôi đã yêu cầu trước đó.
thiết bị nmcli hiển thị enp0s8
TỔNG HỢP.DEVICE: enp0s8 CHUNG. LOẠI: ethernet TỔNG HỢP.HWADDR: 08: 00: 27: 79: A7: 68 TỔNG HỢP.MTU: 1500 TỔNG HỢP.STATE: 100 (đã kết nối) TỔNG HỢP. KẾT NỐI: ethernet-enp0s8-1 TỔNG HỢP.CON-PATH: / org / Liberationesktop / NetworkManager / ActiveConnection / 8 WIRED-PROPERTIES.CARRIER: bật IP4.ADDRESS [1]: 192.168.1.40/24 IP4.GATEWAY: - IP4.ROUTE [1]: dst = 192.168.1.0/24, nh = 0.0.0.0, mt = 102 IP6.ADDRESS [1]: fe80 :: 3241: 457d: cd1c: 2436/64 IP6.GATEWAY: - IP6.ROUTE [1]: dst = fe80 :: / 64, nh = ::, mt = 102
Một vài thông tin được trả về bởi nmcli
. Một số vật phẩm hữu ích thường gặp là:
- THIẾT BỊ : Tên của thiết bị chúng tôi đang kiểm tra.
- TYPE : Loại kết nối sử dụng thiết bị này.
- HWADDR : Địa chỉ MAC của thẻ giao diện.
- STATE : Thiết bị này có kết nối trực tiếp hay không.
- IP4.ADDRESS [1] : Địa chỉ IP và mặt nạ mạng con cho thiết bị này.
- CONNECTION : Tên của kết nối sử dụng thiết bị này.
Trình chỉnh sửa tương tác nmcli
Mặc dù nmcli
là một công cụ dòng lệnh, nó có một trình soạn thảo tương tác cơ bản. Hành động chỉnh sửa trong phần kết nối sẽ mở trình chỉnh sửa tương tác trên kết nối bạn chuyển qua dòng lệnh:
kết nối nmcli chỉnh sửa ethernet-enp0s8-1
Một số văn bản trợ giúp được in ra màn hình và bạn sẽ thấy dấu nhắc lệnh “nmcli>”.
nếu bạn nhập print
và nhấn “Enter”, nmcli
liệt kê tất cả các thuộc tính liên quan đến kết nối. Chúng có rất nhiều. Bạn có thể cuộn qua chúng để xem lại chúng.
in
Hãy thay đổi kết nối của chúng ta trở lại sử dụng DHCP. Chúng tôi sẽ sử dụng cài đặt “ipv4”. Để làm được điều đó, chúng ta cần “chuyển đến” cài đặt IPv4.
goto ipv4
Thuộc tính chúng tôi muốn thay đổi là method
. Chúng tôi muốn đặt nó thành tự động.
đặt phương pháp tự động
Bạn sẽ thấy lời nhắc sau:
Bạn cũng muốn xóa 'ipv4.addresses'? [đúng]:
Nếu bạn không xóa địa chỉ IP, lần tiếp theo bạn đặt kết nối này để sử dụng địa chỉ IP tĩnh, nó sẽ sử dụng địa chỉ IP đã được đặt trước đó. Nếu bạn xóa nó, bạn sẽ cần đặt một địa chỉ IP mới nếu bạn thay đổi kết nối này trở lại sử dụng địa chỉ IP tĩnh. Nhập “có” hoặc chỉ cần nhấn “Enter” để xóa. Nhập “không” và nhấn “Enter” để giữ nguyên.
Chúng tôi cần lưu các thay đổi của mình:
cứu
Nhập “thoát” để thoát khỏi trình chỉnh sửa tương tác. Nếu bạn không muốn thoát, hãy gõ “back” để quay lại cấp độ chính và tiếp tục sử dụng trình chỉnh sửa.
Còn nhiều hơn thế nữa trong con người
Lệnh nmcli
có thể làm được nhiều hơn thế. Nó có rất nhiều tham số và tùy chọn dòng lệnh. Trên thực tế, rất nhiều trang người dùng của nó dài tới hơn 1200 dòng. Xem lại chúng để xem nmcli
có thể làm gì khác cho bạn.
Và tất nhiên, nếu bạn đang quản lý các kết nối mạng từ xa, đừng tắt kết nối mà bạn đã kết nối. Điều đó không bao giờ vui.
Dịch từ: https://www.cloudsavvyit.com/12989/how-to-manage-linux-network-connections-from-the-command-line/