Mục lục [Ẩn]
Các công việc thường ngày của quản trị viên hệ thống bao gồm cấu hình, bảo trì, khắc phục sự cố và quản lý các máy chủ và mạng trong các trung tâm dữ liệu. Có rất nhiều công cụ và tiện ích trong Linux được thiết kế cho các mục đích quản trị.
Trong bài viết này, chúng tôi sẽ xem xét một số công cụ dòng lệnh và tiện ích được sử dụng nhiều nhất để quản lý mạng trong Linux, dưới các danh mục khác nhau. Chúng tôi sẽ giải thích một số ví dụ sử dụng phổ biến, điều này sẽ giúp quản lý mạng dễ dàng hơn nhiều trong Linux.
Danh sách này cũng hữu ích không kém đối với các kỹ sư mạng Linux toàn thời gian.
Công cụ cấu hình mạng, khắc phục sự cố và gỡ lỗi
1. Lệnh iconfig
ifconfig là một công cụ giao diện dòng lệnh để cấu hình giao diện mạng và cũng được sử dụng để khởi tạo giao diện tại thời điểm khởi động hệ thống. Sau khi máy chủ được thiết lập và chạy, nó có thể được sử dụng để gán địa chỉ IP cho một giao diện và bật hoặc tắt giao diện theo yêu cầu.
Nó cũng được sử dụng để xem địa chỉ IP, phần cứng/địa chỉ MAC, cũng như kích thước MTU (Đơn vị truyền tối đa) của các giao diện hiện đang hoạt động. ifconfig do đó rất hữu ích để gỡ lỗi hoặc thực hiện điều chỉnh hệ thống.
Đây là một ví dụ để hiển thị trạng thái của tất cả các giao diện mạng đang hoạt động.
$ ifconfig
enp1s0 Link encap:Ethernet HWaddr 28:d2:44:eb:bd:98
inet addr:192.168.0.103 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::8f0c:7825:8057:5eec/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:169854 errors:0 dropped:0 overruns:0 frame:0
TX packets:125995 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:174146270 (174.1 MB) TX bytes:21062129 (21.0 MB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:15793 errors:0 dropped:0 overruns:0 frame:0
TX packets:15793 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:2898946 (2.8 MB) TX bytes:2898946 (2.8 MB)
Để liệt kê tất cả các giao diện hiện có sẵn, cho dù lên hay xuống, hãy sử dụng cờ -a.
$ ifconfig -a
Để gán địa chỉ IP cho một giao diện, hãy sử dụng lệnh sau.
$ sudo ifconfig eth0 192.168.56.5 netmask 255.255.255.0
Để kích hoạt giao diện mạng, hãy nhập.
$ sudo ifconfig up eth0
Để tắt hoặc tắt giao diện mạng, hãy nhập.
$ sudo ifconfig down eth0
Lưu ý: Mặc dù ifconfig là một công cụ tuyệt vời nhưng hiện tại nó đã lỗi thời (không được dùng nữa), thay thế của nó là lệnh IP được giải thích bên dưới.
2. Lệnh IP
IP là một tiện ích dòng lệnh hữu ích khác để hiển thị và thao tác định tuyến, thiết bị mạng, giao diện. Nó là sự thay thế cho ifconfig và nhiều lệnh mạng khác.
Lệnh sau sẽ hiển thị địa chỉ IP và các thông tin khác về giao diện mạng.
$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
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: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 28:d2:44:eb:bd:98 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.103/24 brd 192.168.0.255 scope global dynamic enp1s0
valid_lft 5772sec preferred_lft 5772sec
inet6 fe80::8f0c:7825:8057:5eec/64 scope link
valid_lft forever preferred_lft forever
3: wlp2s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 38:b1:db:7c:78:c7 brd ff:ff:ff:ff:ff:ff
...
Để tạm thời gán Địa chỉ IP cho một giao diện mạng cụ thể (eth0), hãy nhập.
$ sudo ip addr add 192.168.56.1 dev eth0
Để xóa địa chỉ IP được gán khỏi giao diện mạng (eth0), hãy nhập.
$ sudo ip addr del 192.168.56.15/24 dev eth0
Để hiển thị bảng láng giềng hiện tại trong hạt nhân, hãy nhập.
$ ip neigh
192.168.0.1 dev enp1s0 lladdr 10:fe:ed:3d:f3:82 REACHABLE
3. Lệnh ifup, ifdown và ifquery
Lệnh ifup kích hoạt giao diện mạng, giúp nó có thể truyền và nhận dữ liệu.
$ sudo ifup eth0
Lệnh ifdown vô hiệu hóa giao diện mạng, giữ nó ở trạng thái không thể truyền hoặc nhận dữ liệu.
$ sudo ifdown eth0
Lệnh ifquery được sử dụng để phân tích cú pháp cấu hình giao diện mạng, cho phép bạn nhận câu trả lời cho truy vấn về cách nó hiện được cấu hình.
$ sudo ifquery eth0
4. Lệnh Ethtool
Lệnh Ethtool là một tiện ích dòng lệnh để truy vấn và sửa đổi các tham số của bộ điều khiển giao diện mạng và trình điều khiển thiết bị. Ví dụ dưới đây cho thấy cách sử dụng Ethtool và một lệnh để xem các tham số cho giao diện mạng.
$ sudo ethtool enp0s3
Settings for enp0s3:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
MDI-X: off (auto)
Supports Wake-on: umbg
Wake-on: d
Current message level: 0x00000007 (7)
drv probe link
Link detected: yes
5. Lệnh Ping
Lệnh ping (Packet INternet Groper) là một tiện ích thường được sử dụng để kiểm tra kết nối giữa hai hệ thống trên một mạng (Mạng cục bộ (LAN) hoặc Mạng diện rộng (WAN)). Nó sử dụng ICMP (Internet Control Message Protocol) để giao tiếp với các nút trên mạng.
Để kiểm tra kết nối với một nút khác, chỉ cần cung cấp IP hoặc tên máy chủ của nó, chẳng hạn.
$ ping 192.168.0.103
PING 192.168.0.103 (192.168.0.103) 56(84) bytes of data.
64 bytes from 192.168.0.103: icmp_seq=1 ttl=64 time=0.191 ms
64 bytes from 192.168.0.103: icmp_seq=2 ttl=64 time=0.156 ms
64 bytes from 192.168.0.103: icmp_seq=3 ttl=64 time=0.179 ms
64 bytes from 192.168.0.103: icmp_seq=4 ttl=64 time=0.182 ms
64 bytes from 192.168.0.103: icmp_seq=5 ttl=64 time=0.207 ms
64 bytes from 192.168.0.103: icmp_seq=6 ttl=64 time=0.157 ms
^C
--- 192.168.0.103 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5099ms
rtt min/avg/max/mdev = 0.156/0.178/0.207/0.023 ms
Bạn cũng có thể điều chỉnh Ping để thoát sau khi được chỉ định gói ECHO_REQUEST, sử dụng cờ -c như hình minh họa.
$ ping -c 4 192.168.0.103
PING 192.168.0.103 (192.168.0.103) 56(84) bytes of data.
64 bytes from 192.168.0.103: icmp_seq=1 ttl=64 time=1.09 ms
64 bytes from 192.168.0.103: icmp_seq=2 ttl=64 time=0.157 ms
64 bytes from 192.168.0.103: icmp_seq=3 ttl=64 time=0.163 ms
64 bytes from 192.168.0.103: icmp_seq=4 ttl=64 time=0.190 ms
--- 192.168.0.103 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3029ms
rtt min/avg/max/mdev = 0.157/0.402/1.098/0.402 ms
6. Lệnh Traceroute
Traceroute là một tiện ích dòng lệnh để theo dõi đường dẫn đầy đủ từ hệ thống cục bộ của bạn đến hệ thống mạng khác. Nó in một số bước nhảy (IP bộ định tuyến) trong đường dẫn mà bạn di chuyển để đến máy chủ cuối. Đây là một tiện ích khắc phục sự cố mạng dễ sử dụng sau lệnh Ping.
Trong ví dụ này, chúng tôi đang theo dõi các gói định tuyến đi từ hệ thống cục bộ đến một trong các máy chủ của Google có địa chỉ IP 216.58.204.46.
$ traceroute 216.58.204.46
traceroute to 216.58.204.46 (216.58.204.46), 30 hops max, 60 byte packets
1 gateway (192.168.0.1) 0.487 ms 0.277 ms 0.269 ms
2 5.5.5.215 (5.5.5.215) 1.846 ms 1.631 ms 1.553 ms
3 * * *
4 72.14.194.226 (72.14.194.226) 3.762 ms 3.683 ms 3.577 ms
5 108.170.248.179 (108.170.248.179) 4.666 ms 108.170.248.162 (108.170.248.162) 4.869 ms 108.170.248.194 (108.170.248.194) 4.245 ms
6 72.14.235.133 (72.14.235.133) 72.443 ms 209.85.241.175 (209.85.241.175) 62.738 ms 72.14.235.133 (72.14.235.133) 65.809 ms
7 66.249.94.140 (66.249.94.140) 128.726 ms 127.506 ms 209.85.248.5 (209.85.248.5) 127.330 ms
8 74.125.251.181 (74.125.251.181) 127.219 ms 108.170.236.124 (108.170.236.124) 212.544 ms 74.125.251.181 (74.125.251.181) 127.249 ms
9 216.239.49.134 (216.239.49.134) 236.906 ms 209.85.242.80 (209.85.242.80) 254.810 ms 254.735 ms
10 209.85.251.138 (209.85.251.138) 252.002 ms 216.239.43.227 (216.239.43.227) 251.975 ms 209.85.242.80 (209.85.242.80) 236.343 ms
11 216.239.43.227 (216.239.43.227) 251.452 ms 72.14.234.8 (72.14.234.8) 279.650 ms 277.492 ms
12 209.85.250.9 (209.85.250.9) 274.521 ms 274.450 ms 209.85.253.249 (209.85.253.249) 270.558 ms
13 209.85.250.9 (209.85.250.9) 269.147 ms 209.85.254.244 (209.85.254.244) 347.046 ms 209.85.250.9 (209.85.250.9) 285.265 ms
14 64.233.175.112 (64.233.175.112) 344.852 ms 216.239.57.236 (216.239.57.236) 343.786 ms 64.233.175.112 (64.233.175.112) 345.273 ms
15 108.170.246.129 (108.170.246.129) 345.054 ms 345.342 ms 64.233.175.112 (64.233.175.112) 343.706 ms
16 108.170.238.119 (108.170.238.119) 345.610 ms 108.170.246.161 (108.170.246.161) 344.726 ms 108.170.238.117 (108.170.238.117) 345.536 ms
17 lhr25s12-in-f46.1e100.net (216.58.204.46) 345.382 ms 345.031 ms 344.884 ms
7. Công cụ chẩn đoán mạng MTR
MTR là một công cụ chẩn đoán mạng dòng lệnh hiện đại kết hợp chức năng của Ping và theo dõi thành một công cụ chẩn đoán duy nhất. Đầu ra của nó được cập nhật theo thời gian thực, theo mặc định cho đến khi bạn thoát khỏi chương trình bằng cách nhấn q.
Cách dễ nhất để chạy MTR là cung cấp cho nó một tên máy chủ hoặc địa chỉ IP làm đối số, như sau.
$ mtr google.com
HOẶC
$ mtr 216.58.223.78
Đầu ra mẫu
tecmint.com (0.0.0.0) Thu Jul 12 08:58:27 2018
First TTL: 1
Host Loss% Snt Last Avg Best Wrst StDev
1. 192.168.0.1 0.0% 41 0.5 0.6 0.4 1.7 0.2
2. 5.5.5.215 0.0% 40 1.9 1.5 0.8 7.3 1.0
3. 209.snat-111-91-120.hns.net.in 23.1% 40 1.9 2.7 1.7 10.5 1.6
4. 72.14.194.226 0.0% 40 89.1 5.2 2.2 89.1 13.7
5. 108.170.248.193 0.0% 40 3.0 4.1 2.4 52.4 7.8
6. 108.170.237.43 0.0% 40 2.9 5.3 2.5 94.1 14.4
7. bom07s10-in-f174.1e100.net 0.0% 40 2.6 6.7 2.3 79.7 16.
Bạn có thể giới hạn số lần Ping ở một giá trị cụ thể và thoát MTR sau những lần Ping đó, sử dụng cờ -c như hình minh họa.
$ mtr -c 4 google.com
8. Lệnh Route
Route là một tiện ích dòng lệnh để hiển thị hoặc thao tác bảng định tuyến IP của hệ thống Linux. Nó chủ yếu được sử dụng để định cấu hình các tuyến tĩnh đến các máy chủ hoặc mạng cụ thể thông qua một giao diện.
Bạn có thể xem bảng định tuyến Kernel IP bằng cách nhập.
$ route
Destination Gateway Genmask Flags Metric Ref Use Iface
default gateway 0.0.0.0 UG 100 0 0 enp0s3
192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s3
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
Có nhiều lệnh bạn có thể sử dụng để cấu hình định tuyến. Dưới đây là một số hữu ích:
Thêm một cổng mặc định vào bảng định tuyến.
$ sudo route add default gw
Thêm một tuyến mạng vào bảng định tuyến.
$ sudo route add -net gw
Xóa một mục route cụ thể khỏi bảng định tuyến.
$ sudo route del -net
9. Lệnh Nmcli
Nmcli là một công cụ dòng lệnh dễ sử dụng, có thể tập lệnh để báo cáo trạng thái mạng, quản lý kết nối mạng và điều khiển NetworkManager.
Để xem tất cả các thiết bị mạng của bạn, hãy nhập.
$ nmcli dev status
DEVICE TYPE STATE CONNECTION
virbr0 bridge connected virbr0
enp0s3 ethernet connected Wired connection 1
Để kiểm tra kết nối mạng trên hệ thống của bạn, loại.
$ nmcli con show
Wired connection 1 bc3638ff-205a-3bbb-8845-5a4b0f7eef91 802-3-ethernet enp0s3
virbr0 00f5d53e-fd51-41d3-b069-bdfd2dde062b bridge virbr0
Để chỉ xem các kết nối đang hoạt động, hãy thêm cờ -a.
$ nmcli con show -a
Công cụ phân tích hiệu suất và quét mạng
10. Lệnh Netstat
Netstat là một công cụ dòng lệnh hiển thị thông tin hữu ích như kết nối mạng, bảng định tuyến, thống kê giao diện, v.v. liên quan đến hệ thống con mạng Linux. Nó rất hữu ích cho việc khắc phục sự cố mạng và phân tích hiệu suất.
Ngoài ra, nó cũng là một công cụ gỡ lỗi dịch vụ mạng cơ bản được sử dụng để kiểm tra chương trình nào đang nghe trên cổng nào. Ví dụ: lệnh sau sẽ hiển thị tất cả các cổng TCP ở chế độ lắng nghe và chương trình nào đang nghe trên chúng.
$ sudo netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN 1257/master
tcp 0 0 127.0.0.1:5003 0.0.0.0:* LISTEN 1/systemd
tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN 1015/dovecot
tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 1015/dovecot
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd
tcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN 1257/master
tcp 0 0 0.0.0.0:53 0.0.0.0:* LISTEN 1404/pdns_server
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 1064/pure-ftpd (SER
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 972/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 975/cupsd
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 1257/master
tcp 0 0 0.0.0.0:8090 0.0.0.0:* LISTEN 636/lscpd (lscpd -
tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 1015/dovecot
tcp 0 0 0.0.0.0:995 0.0.0.0:* LISTEN 1015/dovecot
tcp6 0 0 :::3306 :::* LISTEN 1053/mysqld
tcp6 0 0 :::3307 :::* LISTEN 1211/mysqld
tcp6 0 0 :::587 :::* LISTEN 1257/master
tcp6 0 0 :::110 :::* LISTEN 1015/dovecot
tcp6 0 0 :::143 :::* LISTEN 1015/dovecot
tcp6 0 0 :::111 :::* LISTEN 1/systemd
tcp6 0 0 :::80 :::* LISTEN 990/httpd
tcp6 0 0 :::465 :::* LISTEN 1257/master
tcp6 0 0 :::53 :::* LISTEN 1404/pdns_server
tcp6 0 0 :::21 :::* LISTEN 1064/pure-ftpd (SER
tcp6 0 0 :::22 :::* LISTEN 972/sshd
tcp6 0 0 ::1:631 :::* LISTEN 975/cupsd
tcp6 0 0 :::25 :::* LISTEN 1257/master
tcp6 0 0 :::993 :::* LISTEN 1015/dovecot
tcp6 0 0 :::995 :::* LISTEN 1015/dovecot
Để xem bảng định tuyến hạt nhân, hãy sử dụng cờ -r(tương đương với chạy lệnh route ở trên).
$ netstat -r
Destination Gateway Genmask Flags MSS Window irtt Iface
default gateway 0.0.0.0 UG 0 0 0 enp0s3
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s3
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
Lưu ý: Mặc dù Netstat là một công cụ tuyệt vời nhưng hiện nay nó đã lỗi thời (không còn được dùng nữa), sự thay thế của nó là lệnh ss được giải thích bên dưới.
11. Lệnh SS
Lệnh ss (thống kê ổ cắm) là một tiện ích dòng lệnh mạnh mẽ để điều tra các ổ cắm. Nó kết xuất số liệu thống kê về ổ cắm và hiển thị thông tin tương tự như Netstat. Ngoài ra, nó hiển thị nhiều TCP và thông tin trạng thái hơn so với các tiện ích tương tự khác.
Ví dụ sau đây cho thấy cách liệt kê tất cả TCP các cổng (ổ cắm) đang mở trên máy chủ.
$ ss -ta
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 100 *:submission *:*
LISTEN 0 128 127.0.0.1:fmpro-internal *:*
LISTEN 0 100 *:pop3 *:*
LISTEN 0 100 *:imap *:*
LISTEN 0 128 *:sunrpc *:*
LISTEN 0 100 *:urd *:*
LISTEN 0 128 *:domain *:*
LISTEN 0 9 *:ftp *:*
LISTEN 0 128 *:ssh *:*
LISTEN 0 128 127.0.0.1:ipp *:*
LISTEN 0 100 *:smtp *:*
LISTEN 0 128 *:8090 *:*
LISTEN 0 100 *:imaps *:*
LISTEN 0 100 *:pop3s *:*
ESTAB 0 0 192.168.0.104:ssh 192.168.0.103:36398
ESTAB 0 0 127.0.0.1:34642 127.0.0.1:opsession-prxy
ESTAB 0 0 127.0.0.1:34638 127.0.0.1:opsession-prxy
ESTAB 0 0 127.0.0.1:34644 127.0.0.1:opsession-prxy
ESTAB 0 0 127.0.0.1:34640 127.0.0.1:opsession-prxy
LISTEN 0 80 :::mysql :::*
...
Để hiển thị tất cả các hoạt động kết nối TCP đang cùng với bộ định thời của chúng, hãy chạy lệnh sau.
$ ss -to
12. Lệnh NC
NC (NetCat) còn được gọi là “Con dao của mạng Quân đội Thụy Sĩ”, là một tiện ích mạnh mẽ được sử dụng cho hầu hết mọi nhiệm vụ liên quan đến ổ cắm miền TCP, UDP hoặc UNIX. Nó được sử dụng để mở các kết nối TCP, lắng nghe trên các cổng TCP và UDP tùy ý, thực hiện quét cổng và hơn thế nữa.
Bạn cũng có thể sử dụng nó như một proxy TCP đơn giản, để kiểm tra nền tảng mạng, để kiểm tra xem các cổng từ xa có thể truy cập được hay không và hơn thế nữa. Hơn nữa, bạn có thể sử dụng NC cùng với lệnh PV để truyền tệp giữa hai máy tính.
Sau đây sẽ chỉ ra cách quét danh sách các cổng.
$ nc -zv server2.tecmint.lan 21 22 80 443 3000
Bạn cũng có thể chỉ định một loạt các cổng như minh họa.
$ nc -zv server2.tecmint.lan 20-90
Ví dụ sau đây cho thấy cách sử dụng NC để mở kết nối TCP tới cổng 5000 trên server2.tecmint.lan, sử dụng cổng 3000 làm cổng nguồn, với thời gian chờ là 10 giây.
$ nc -p 3000 -w 10 server2.tecmint.lan 5000
13. Lệnh Nmap
Nmap (Network Mapper) là một công cụ mạnh mẽ và cực kỳ linh hoạt dành cho quản trị viên hệ thống/mạng Linux. Nó được sử dụng để thu thập thông tin về một máy chủ duy nhất hoặc khám phá các mạng trong toàn bộ mạng. Nmap cũng được sử dụng để thực hiện quét bảo mật, kiểm tra mạng và tìm kiếm các cổng mở trên máy chủ từ xa và hơn thế nữa.
Ví dụ: bạn có thể quét một máy chủ lưu trữ bằng tên máy chủ hoặc địa chỉ IP của nó.
$ nmap google.com
Starting Nmap 6.40 ( https://nmap.org ) at 2018-07-12 09:23 BST
Nmap scan report for google.com (172.217.166.78)
Host is up (0.0036s latency).
rDNS record for 172.217.166.78: bom05s15-in-f14.1e100.net
Not shown: 998 filtered ports
PORT STATE SERVICE
80/tcp open http
443/tcp open https
Nmap done: 1 IP address (