Nếu bạn mới làm quen với dòng lệnh Linux và muốn tìm hiểu về mạng, có nhiều tiện ích dòng lệnh mà bạn nên biết. Một trong những công cụ như vậy là netstat. Trong bài viết này, chúng ta sẽ thảo luận về lệnh này bằng một số ví dụ dễ hiểu.
Nhưng trước khi làm điều đó, cần đề cập rằng tất cả các ví dụ này đều đã được thử nghiệm trên máy Ubuntu 16.04 LTS.
Đây là cách trang hướng dẫn giải thích lệnh này:
Sau đây là một số ví dụ theo kiểu Hỏi & Đáp sẽ giúp bạn hiểu rõ hơn về cách lệnh netstat hoạt động.
Ví dụ, trong trường hợp của tôi, đầu ra sau được tạo ra:
Vì vậy, theo mặc định, lệnh sẽ hiển thị danh sách tất cả các socket đang mở.
Ví dụ trong trường hợp của tôi, đầu ra sau đây đã được tạo ra:
Vì vậy, bạn chỉ có thể thấy các giá trị số được tạo ra trong đầu ra (trong cột Địa chỉ nước ngoài) lần này.
Ví dụ, trong trường hợp của tôi, đầu ra sau được tạo ra:
Ví dụ, đầu ra sau được tạo ra trong trường hợp của tôi:
Ví dụ:
Xem cột cuối cùng để biết thông tin về PID/tên chương trình.
Trong trường hợp này, công cụ sẽ tạo ra thông tin như tổng số gói đã nhận, đã loại bỏ, đã phân phối và nhiều thông tin khác. Sau đây là một ví dụ về đầu ra khi tùy chọn dòng lệnh -s được sử dụng.
Sau đây là đầu ra được tạo ra trong trường hợp của tôi:
Lưu ý rằng netstat -r và route -e tạo ra cùng một đầu ra.
Nhưng trước khi làm điều đó, cần đề cập rằng tất cả các ví dụ này đều đã được thử nghiệm trên máy Ubuntu 16.04 LTS.
Lệnh netstat Linux
Lệnh netstat cho phép bạn in các kết nối mạng, bảng định tuyến, số liệu thống kê giao diện, kết nối giả mạo và tư cách thành viên đa hướng. Sau đây là cú pháp của lệnh:
Mã:
netstat [OPTIONS]
Mã:
Netstat in thông tin về hệ thống mạng con Linux. Loại thông tin được in ra được kiểm soát bởi đối số đầu tiên, như sau:
(không có)
Theo mặc định, netstat hiển thị danh sách các socket mở. Nếu bạn không
chỉ định bất kỳ họ địa chỉ nào, thì các socket đang hoạt động của tất cả các họ địa chỉ
đã cấu hình sẽ được in ra.
--route , -r
Hiển thị các bảng định tuyến hạt nhân. Xem mô tả trong route(8) để biết
chi tiết. netstat -r và route -e tạo ra cùng một đầu ra.
--groups , -g
Hiển thị thông tin thành viên nhóm đa hướng cho IPv4 và IPv6.
--interfaces, -i
Hiển thị bảng của tất cả các giao diện mạng.
--masquerade , -M
Hiển thị danh sách các kết nối được ngụy trang.
--statistics , -s
Hiển thị số liệu thống kê tóm tắt cho từng giao thức.
Câu hỏi 1. Làm thế nào để sử dụng lệnh netstat?
Cách sử dụng cơ bản khá đơn giản - chỉ cần chạy lệnh netstat mà không cần bất kỳ tùy chọn nào.
Mã:
netstat
Mã:
Kết nối Internet đang hoạt động (không có máy chủ)
Proto Recv-Q Send-Q Địa chỉ cục bộ Địa chỉ nước ngoài Trạng thái
tcp 0 0 192.168.1.7:59510 mails11.telegram.:https ESTABLISHED
tcp 0 0 192.168.1.7:57318 13.70.5.200:https ESTABLISHED
tcp 0 1 192.168.1.7:51238 52.114.32.7:https SYN_SENT
tcp 390 0 192.168.1.7:60392 del03s09-in-f10.1:https ĐÃ THÀNH LẬP
tcp 0 1 192.168.1.7:51240 52.114.32.7:https ĐÃ GỬI SYN
tcp 0 0 192.168.1.7:50196 del03s10-in-f10.1:https THỜI GIAN CHỜ
tcp 0 0 192.168.1.7:41996 maa05s05-in-f4.1e:https THỜI GIAN CHỜ
tcp 0 0 192.168.1.7:56680 wa-in-f94.1e100.n:https ĐÃ THÀNH LẬP
tcp 0 0 192.168.1.7:54578 del03s10-in-f14.1:https TIME_WAIT
tcp 0 0 192.168.1.7:51310 del03s10-in-f2.1e:https TIME_WAIT
Câu hỏi 2. Làm thế nào để netstat hiển thị địa chỉ số?
Theo mặc định, lệnh netstat sẽ cố gắng xác định tên máy chủ tượng trưng, cổng hoặc tên người dùng. Điều này có thể làm chậm công cụ. Tuy nhiên, nếu bạn ổn với các giá trị số, bạn có thể khiến công cụ xuất ra các giá trị số bằng cách sử dụng tùy chọn dòng lệnh -n.
Mã:
netstat -n
Mã:
Kết nối Internet đang hoạt động (không có máy chủ)
Proto Recv-Q Send-Q Địa chỉ cục bộ Địa chỉ nước ngoài Trạng thái
tcp 0 0 192.168.1.7:59510 149.154.171.22:443 ESTABLISHED
tcp 0 0 192.168.1.7:57318 13.70.5.200:443 ESTABLISHED
tcp 0 0 192.168.1.7:51682 52.114.32.7:443 TIME_WAIT
tcp 0 0 192.168.1.7:54884 172.217.161.14:443 TIME_WAIT
tcp 0 0 192.168.1.7:35112 172.217.161.5:443 ĐÃ THIẾT LẬP
tcp 0 0 192.168.2.97:45662 148.251.237.53:21 ĐÃ THIẾT LẬP
tcp 0 0 192.168.1.7:50892 149.154.164.224:443 ĐÃ THIẾT LẬP
tcp 0 0 192.168.1.7:58772 172.217.194.189:443 TIME_WAIT
tcp 0 1 192.168.1.7:47728 144.76.158.93:443 ĐÃ GỬI ĐỒNG BỘ
tcp 0 1 192.168.1.7:47730 144.76.158.93:443 ĐÃ GỬI ĐỒNG BỘ
tcp 0 0 192.168.1.7:59548 149.154.171.22:443 ĐÃ THIẾT LẬP
tcp 0 0 192.168.1.7:35818 169.55.74.50:443 ĐÃ THIẾT LẬP
tcp 0 0 192.168.1.7:50888 149.154.164.224:443 ĐÃ THÀNH LẬP
tcp 0 0 192.168.1.7:44156 152.195.11.6:443 ĐÃ THÀNH LẬP
tcp 0 0 192.168.1.7:58478 52.229.174.94:443 ĐÃ THÀNH LẬP
tcp 52 0 127.0.0.1:60342 127.0.1.1:139 ĐÃ THÀNH LẬP
tcp 0 0 192.168.1.7:58820 172.217.161.3:443 ĐÃ THÀNH LẬP
tcp 0 0 192.168.1.7:45588 52.175.17.224:443 TIME_WAIT
tcp 0 0 192.168.1.7:50890 149.154.164.224:443 ĐÃ THIẾT LẬP
tcp 0 0 192.168.1.7:58192 52.77.195.144:443 ĐÃ THIẾT LẬP
tcp 0 0 192.168.1.7:54224 172.217.31.2:443 ĐÃ THIẾT LẬP
tcp 0 0 127.0.1.1:139 127.0.0.1:60342 ĐÃ THIẾT LẬP
tcp 0 0 192.168.1.7:34500 192.241.190.153:443 ESTABLISHED
tcp 0 0 192.168.1.7:54888 172.217.161.14:443 ESTABLISHED
Câu hỏi 3. Làm thế nào để netstat chỉ hiển thị các kết nối tcp?
Bạn có thể thực hiện việc này bằng tùy chọn dòng lệnh -t.
Mã:
netstat -t
Mã:
Kết nối Internet đang hoạt động (không có máy chủ)
Proto Recv-Q Send-Q Địa chỉ cục bộ Trạng thái địa chỉ nước ngoài
tcp 0 0 192.168.1.7:44236 152.195.11.6:https ESTABLISHED
tcp 0 0 192.168.1.7:59510 mails11.telegram.:https ESTABLISHED
tcp 0 0 192.168.1.7:57318 13.70.5.200:https ESTABLISHED
tcp 0 0 192.168.1.7:42706 maa05s05-in-f4.1e:https ĐÃ THÀNH LẬP
tcp 0 0 192.168.1.7:51984 del03s10-in-f2.1e:https ĐÃ THÀNH LẬP
tcp 0 0 192.168.1.7:51786 52.114.32.7:https ĐÃ THÀNH LẬP
tcp 0 0 192.168.1.7:52294 xx-fbcdn-shv-01-m:https ĐÃ THÀNH LẬP
tcp 0 0 192.168.1.7:54372 del03s01-in-f2.1e:https ĐÃ THÀNH LẬP
tcp 0 1 192.168.1.7:47788 hyperserver.semse:https SYN_SENT
tcp 0 0 192.168.1.7:52298 xx-fbcdn-shv-01-m:https ĐÃ THÀNH LẬP
tcp 0 0 192.168.1.7:51840 149.154.164.224:https TIME_WAIT
tcp 0 0 192.168.1.7:35258 del03s10-in-f1.1e:https ĐÃ THÀNH LẬP
tcp 0 0 192.168.2.97:45662 blog.gsmarena.com:ftp ĐÃ THÀNH LẬP
tcp 0 0 192.168.1.7:50728 del03s10-in-f10.1:https TIME_WAIT
tcp 0 0 192.168.1.7:56468 del03s09-in-f3.1e:https ĐÃ THIẾT LẬP
tcp 0 0 192.168.1.7:50892 149.154.164.224:https ĐÃ THIẾT LẬP
tcp 0 0 192.168.1.7:45670 52.175.17.224:https ĐÃ THIẾT LẬP
tcp 0 0 192.168.1.7:55180 del03s10-in-f14.1:https TIME_WAIT
tcp 0 1 192.168.1.7:47790 hyperserver.semse:https SYN_SENT
tcp 0 0 192.168.1.7:59548 mails11.telegram.:https ĐÃ THIẾT LẬP
tcp 0 0 192.168.1.7:35818 32.4a.37a9.ip4.st:https ĐÃ THIẾT LẬP
tcp 0 0 192.168.1.7:50888 149.154.164.224:https ĐÃ THIẾT LẬP
tcp 0 0 192.168.1.7:33360 del03s10-in-f13.1:https TIME_WAIT
tcp 0 0 192.168.1.7:52332 207.46.140.70:https ĐÃ THÀNH LẬP
tcp 0 0 192.168.1.7:58478 52.229.174.94:https ĐÃ THÀNH LẬP
tcp 0 0 192.168.1.7:54374 del03s01-in-f2.1e:https THỜI GIAN CHỜ
tcp 0 0 192.168.1.7:50216 104.24.1.68:https THỜI GIAN CHỜ
tcp 52 0 localhost:60342 ansh:netbios-ssn ĐÃ THÀNH LẬP
tcp 0 0 192.168.1.7:50890 149.154.164.224:https ĐÃ THIẾT LẬP
tcp 0 0 192.168.1.7:55200 del03s10-in-f14.1:https THỜI GIAN CHỜ
tcp 0 0 192.168.1.7:54224 del03s01-in-f2.1e:https ĐÃ THIẾT LẬP
tcp 0 0 ansh:netbios-ssn localhost:60342 ĐÃ THIẾT LẬP
tcp 0 0 192.168.1.7:55212 del03s10-in-f14.1:https THỜI GIAN CHỜ
tcp 0 1 192.168.1.7:47800 hyperserver.semse:https ĐÃ GỬI ĐỒNG BỘ
tcp 0 0 192.168.1.7:45668 52.175.17.224:https ĐÃ THIẾT LẬP
tcp 0 0 192.168.1.7:58878 del03s10-in-f3.1e:https TIME_WAIT
tcp 0 0 192.168.1.7:34500 do-11.lastpass.co:https ĐÃ THIẾT LẬP
tcp 0 0 192.168.1.7:41844 a23-35-40-198.dep:https ĐÃ THIẾT LẬP
Câu hỏi 4. Cách để netstat chỉ hiển thị các kết nối udp
Bạn có thể thực hiện việc này bằng cách sử dụng tùy chọn dòng lệnh -u.
Mã:
netstat -u
Câu hỏi 5. Làm thế nào để netstat chỉ hiển thị các socket đang lắng nghe?
Điều này có thể thực hiện được bằng cách sử dụng tùy chọn dòng lệnh -l.
Mã:
netstat -l
Mã:
Kết nối Internet đang hoạt động (chỉ máy chủ)
Proto Recv-Q Send-Q Địa chỉ cục bộ Trạng thái địa chỉ nước ngoài
tcp 0 0 ansh:domain *:* LISTEN
tcp 0 0 localhost:ipp *:* LISTEN
tcp 0 0 *:microsoft-ds *:* LISTEN
tcp 0 0 *:netbios-ssn *:* LISTEN
tcp6 0 0 ip6-localhost:ipp [::]:* LISTEN
tcp6 0 0 [::]:microsoft-ds [::]:* LISTEN
tcp6 0 0 [::]:netbios-ssn [::]:* LISTEN
...
...
...
Câu hỏi 6. Làm thế nào để netstat hiển thị tên và PID của các chương trình?
Trong trường hợp bạn muốn netstat hiển thị tên của ID tiến trình của các tiến trình mà mỗi socket thuộc về, hãy sử dụng tùy chọn dòng lệnh -p.
Mã:
netstat -p
Mã:
Kết nối Internet đang hoạt động (không có máy chủ)
Proto Recv-Q Send-Q Địa chỉ cục bộ Địa chỉ nước ngoài Trạng thái PID/Tên chương trình
tcp 0 0 192.168.1.7:57318 13.70.5.200:https ĐÃ THÀNH LẬP 3247/firefox
tcp 0 0 192.168.1.7:36732 13.76.170.95:https ĐÃ THÀNH LẬP 3247/firefox
tcp 0 0 192.168.1.7:52050 149.154.164.224:https ĐÃ THÀNH LẬP 3247/firefox
tcp 0 0 192.168.1.7:55974 del03s10-in-f14.1:https ĐÃ THÀNH LẬP 3247/firefox
tcp 0 0 192.168.1.7:52074 149.154.164.224:https ĐÃ THÀNH LẬP 3247/firefox
tcp 0 0 192.168.1.7:60590 mails11.telegram.:https ĐÃ THÀNH LẬP 3247/firefox
tcp 0 0 192.168.1.7:52254 149.154.164.224:https ĐÃ THÀNH LẬP 3247/firefox
tcp 0 0 192.168.2.97:45662 blog.gsmarena.com:ftp ĐÃ THÀNH LẬP 3160/filezilla
tcp 0 0 192.168.1.7:35818 32.4a.37a9.ip4.st:https ĐÃ THÀNH LẬP 3247/firefox
tcp 0 0 192.168.1.7:52528 52.114.32.7:https ĐÃ THÀNH LẬP 3247/firefox
tcp 0 0 192.168.1.7:55950 del03s10-in-f14.1:https ĐÃ THÀNH LẬP 3247/firefox
tcp 68 0 localhost:60342 ansh:netbios-ssn ĐÃ THÀNH LẬP 2625/gvfsd-smb-brow
tcp 0 0 192.168.1.7:44974 152.195.11.6:https ĐÃ THÀNH LẬP 3247/firefox
tcp 0 0 192.168.1.7:36730 13.76.170.95:https ĐÃ THÀNH LẬP 3247/firefox
tcp 0 0 ansh:netbios-ssn localhost:60342 ĐÃ THÀNH LẬP -
tcp 0 0 192.168.1.7:52732 del03s10-in-f2.1e:https ĐÃ THÀNH LẬP 3247/firefox
tcp 0 0 192.168.1.7:60314 52.229.174.94:https ĐÃ THÀNH LẬP 3247/firefox
tcp 0 0 192.168.1.7:53072 207.46.140.70:https ĐÃ THÀNH LẬP 3247/firefox
tcp 0 0 192.168.1.7:34500 do-11.lastpass.co:https ĐÃ THÀNH LẬP 3247/firefox
Câu hỏi 7. Làm thế nào để netstat in số liệu thống kê mạng?
Bạn có thể thực hiện việc này bằng cách sử dụng tùy chọn dòng lệnh -s.
Mã:
netstat -s
Mã:
Ip:
Tổng số 592215 gói tin nhận được
41 gói tin có địa chỉ không hợp lệ
0 gói tin được chuyển tiếp
0 gói tin đến bị loại bỏ
580699 gói tin đến được phân phối
539118 yêu cầu được gửi đi
627 gói tin đi bị loại bỏ
482 gói tin bị loại bỏ do thiếu tuyến đường
2 phân đoạn không thành công
Icmp:
Đã nhận 2337 tin nhắn ICMP
6 tin nhắn ICMP đầu vào không thành công.
Biểu đồ đầu vào ICMP:
Không thể truy cập đích: 2337
Đã gửi 3917 tin nhắn ICMP
0 tin nhắn ICMP không thành công
Biểu đồ đầu ra ICMP:
Không thể truy cập đích: 3917
IcmpMsg:
InType3: 2337
OutType3: 3917
Tcp:
10943 kết nối đang hoạt động mở
127 kết nối thụ động mở
38 nỗ lực kết nối không thành công
467 kết nối được đặt lại đã nhận
34 kết nối được thiết lập
443643 phân đoạn đã nhận
414589 phân đoạn được gửi đi
6929 phân đoạn được truyền lại
428 phân đoạn bị lỗi đã nhận.
11713 đã gửi đặt lại
...
...
...
Câu 8. Làm thế nào để netstat hiển thị bảng định tuyến hạt nhân?
Điều này có thể được thực hiện bằng cách sử dụng tùy chọn dòng lệnh -r.
Mã:
netstat -r
Mã:
Bảng định tuyến IP hạt nhân
Cổng đích Genmask Cờ MSS Cửa sổ irtt Iface
mặc định 192.168.1.1 0.0.0.0 UG 0 0 0 wlx18a6f713679b
liên kết cục bộ * 255.255.0.0 U 0 0 0 wlx18a6f713679b
192.168.1.0 * 255.255.255.0 U 0 0 0 wlx18a6f713679b