Sử dụng lệnh netstat trên Linux

Tìm hiểu lệnh netstat và một số ví dụ thời gian thực là gì.


netstat (thống kê mạng) là một công cụ dòng lệnh hiển thị các kết nối mạng (cả đến và đi), các bảng định tuyến và một số thống kê giao diện mạng.

Nó có sẵn trên các hệ điều hành Linux, giống như Unix và Windows. netstat rất mạnh và có thể là một công cụ hữu ích để khắc phục sự cố liên quan đến mạng và xác minh thống kê kết nối.

Nếu bạn nhập netstat -help, bạn sẽ nhận được các nguyên tắc sử dụng sau.

[[email được bảo vệ] ~] # netstat-trợ giúp
cách sử dụng: netstat [-vWeenNcCF] [] -r netstat {-V | –version | -h | –help}
netstat [-vWnNcaeol] […]
netstat {[-vWeenNac] -I [] | [-veenNac] -i | [-cnNe] -M | -s [-6tuw]} [trì hoãn]

-r, – định tuyến bảng định tuyến hiển thị
-I, –interfaces = hiển thị bảng giao diện cho
-i, – giao diện hiển thị bảng giao diện
-g, – nhóm hiển thị thành viên nhóm phát đa hướng
-s, –statistic hiển thị số liệu thống kê mạng (như SNMP)
-M, – hiển thị các kết nối giả trang

-v, –verbose là dài dòng
-W, – trên toàn thế giới không cắt bớt địa chỉ IP
-n, –numeric không giải quyết tên
–máy chủ số không giải quyết tên máy chủ
–cổng số không giải quyết tên cổng
–người dùng số không giải quyết tên người dùng
-N, –symbolic giải quyết tên phần cứng
-e, –extend hiển thị khác / thêm thông tin
-p, – chương trình hiển thị tên PID / Chương trình cho ổ cắm
-o, –timers hiển thị bộ hẹn giờ
-c, – danh sách liên tục liên tục

-l, – lắng nghe ổ cắm máy chủ hiển thị
-a, –all hiển thị tất cả các ổ cắm (mặc định: đã kết nối)
-F, –fib hiển thị Cơ sở thông tin chuyển tiếp (mặc định)
-C, –cache hiển thị bộ đệm định tuyến thay vì FIB
-Z, – hiển thị nội dung bối cảnh bảo mật SELinux cho ổ cắm

= {- t | –tcp} {-u | –udp} {-U | –udplite} {-S | –sctp} {-w | –raw}
{-x | –unix} –ax25 –ipx – từ đó
= Sử dụng ‘-6 | -4’ hoặc ‘-A’ hoặc ‘-‘; mặc định: inet
Danh sách các họ địa chỉ có thể (hỗ trợ định tuyến):
inet (Internet DARPA) inet6 (IPv6) ax25 (AMPR AX.25)
netp (AMPR NET / ROM) ipx (Novell IPX) ddp (Appletalk DDP)
x25 (CCITT X.25)
[[email được bảo vệ] ~] #

Hãy để tôi chỉ cho bạn một số ví dụ về lệnh. Những điều sau đây được thử nghiệm trên RHEL / CentOS, nhưng tôi không thấy bất kỳ lý do nào để không hoạt động trên một bản phân phối khác như Ubuntu.

Thiết lập kết nối

Nếu bạn đang tìm kiếm tất cả các kết nối được thiết lập từ máy chủ.

[[email được bảo vệ] ~] # netstat -natu | grep ‘THÀNH LẬP’
tcp 0 21 68.183.37.102:22 222.186.31.135:21714 THÀNH LẬP
tcp 0 36 68.183.37.102:22 52.148.155.182:49859 THÀNH LẬP
tcp 0 0 68.183.37.102:22 61.177.142.158:55481 THÀNH LẬP
[[email được bảo vệ] ~] #

Nếu bạn có nhiều kết nối được thiết lập và muốn tìm kiếm một trong các IP, thì bạn có thể sử dụng một grep khác.

[[email được bảo vệ] ~] # netstat -natu | grep ‘THÀNH LẬP’ | grep 61.177.142.158
tcp 0 1280 68.183.37.102:22 61.177.142.158:33932 THÀNH LẬP
[[email được bảo vệ] ~] #

Kết nối nghe

Hãy nói rằng bạn đã bắt đầu một số dịch vụ và được cho là nghe trên một IP cụ thể: Cổng, điều này sẽ hữu ích để xác minh.

[[email được bảo vệ] ~] # netstat -an | grep ‘NGHE’
tcp 0 0 127.0.0.1:25 0.0.0.0:* NGHE
tcp 0 0 0.0.0.0:111 0.0.0.0:* NGHE
tcp 0 0 0.0.0.0:22 0.0.0.0:* NGHE
tcp6 0 0 ::: 111 ::: * NGHE
tcp6 0 0 ::: 80 ::: * NGHE
tcp6 0 0 ::: 22 ::: * NGHE
[[email được bảo vệ] ~] #

Hoặc, bạn có thể sử dụng đối số -l để hiển thị tất cả các ổ cắm nghe.

[[email được bảo vệ] ~] # netstat -l
Kết nối Internet đang hoạt động (chỉ máy chủ)
Proto Recv-Q Send-Q Địa chỉ địa phương Nhà nước địa chỉ
tcp 0 0 localhost: smtp 0.0.0.0:* NGHE
tcp 0 0 0.0.0.0:sunrpc 0.0.0.0:* NGHE
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* NGHE
tcp6 0 0 [::]: sunrpc [::]: * NGHE
tcp6 0 0 [::]: webcache [::]: * NGHE
tcp6 0 0 [::]: ssh [::]: * NGHE
udp 0 0 0.0.0.0:805 0.0.0.0:*
udp 0 0 0.0.0.0:sunrpc 0.0.0.0:*
udp 0 0 localhost: 323 0.0.0.0:*
udp6 0 0 [::]: 805 [::]: *
udp6 0 0 [::]: sunrpc [::]: *
udp6 0 0 ip6-localhost: 323 [::]: *
Ổ cắm tên miền UNIX hoạt động (chỉ máy chủ)
Proto RefCnt Flag Loại trạng thái Đường dẫn I-Node
unix 2 [ACC] STREAM LISTENING 15108 / run / dbus / system_bus_socket
unix 2 [ACC] STREAM LISTENING 8202 / run / systemd / tạp chí / stdout
unix 2 [ACC] SEQPACKET LISTENING 12813 / run / udev / control
unix 2 [ACC] STREAM LISTENING 17542 công khai / đón
unix 2 [ACC] DANH SÁCH STREAM 15165 /var/run/rpcbind.sock
unix 2 [ACC] STREAM LISTENING 17546 công khai / dọn dẹp
unix 2 [ACC] DANH SÁCH STREAM 15605 /var/lib/gssproxy/default.sock
unix 2 [ACC] STREAM LISTENING 12706 / run / systemd / private
unix 2 [ACC] DANH SÁCH STREAM 17549 công khai / qmgr
unix 2 [ACC] STREAM LISTENING 17571 công khai / tuôn ra
unix 2 [ACC] STREAM LISTENING 17553 private / tlsmgr
unix 2 [ACC] STREAM LISTENING 17586 công khai / showq
unix 2 [ACC] STREAM LISTENING 17556 private / viết lại
unix 2 [ACC] STREAM LISTENING 17559 riêng tư / bị trả lại
unix 2 [ACC] STREAM LISTENING 17562 private / defer
unix 2 [ACC] STREAM LISTENING 17565 private / dấu vết
unix 2 [ACC] STREAM LISTENING 17568 private / verify
unix 2 [ACC] STREAM LISTENING 17574 private / proxymap
unix 2 [ACC] STREAM LISTENING 17577 private / proxywrite
unix 2 [ACC] STREAM LISTENING 17580 private / smtp
unix 2 [ACC] STREAM LISTENING 17583 private / rơle
unix 2 [ACC] STREAM LISTENING 17589 private / error
unix 2 [ACC] STREAM LISTENING 17592 private / retry
unix 2 [ACC] STREAM LISTENING 17595 private / disard
unix 2 [ACC] STREAM LISTENING 17598 private / local
unix 2 [ACC] STREAM LISTENING 17601 riêng tư / ảo
unix 2 [ACC] STREAM LISTENING 17604 private / lmtp
unix 2 [ACC] STREAM LISTENING 17607 private / anvil
unix 2 [ACC] STREAM LISTENING 17610 private / scache
unix 2 [ACC] DANH SÁCH STREAM 15606 /run/gssproxy.sock
[[email được bảo vệ] ~] #

Tận dụng grep để lọc kết quả.

Số cổng được sử dụng bởi PID

Bạn biết ứng dụng của mình đã bắt đầu và nhận biết về PID (Mã nhận dạng quy trình) nhưng không chắc chắn về số cổng mà nó sử dụng. Ví dụ dưới đây là dành cho PID 3937

[[email được bảo vệ] ~] # netstat -anlp | grep 3937
tcp6 0 0 ::: 80 ::: * NGHE 3937 / httpd
unix 3 [] STREAM KẾT NỐI 2442387 3937 / httpd
[[email được bảo vệ] ~] #

Như bạn có thể thấy, cổng 80 đang được sử dụng cho PID 3937.

Tất cả các giao thức thống kê

Có ngắt kết nối thường xuyên do gói bị loại bỏ? Đối số -s sẽ hiển thị cho bạn các số liệu thống kê tổng thể nơi bạn có thể chú ý đến các gói tin bị loại bỏ.

[[email được bảo vệ] ~] # netstat -s
Ip:
731422 tổng số gói nhận được
0 chuyển tiếp
0 gói đến bị loại bỏ
731399 gói đến được gửi
787732 yêu cầu được gửi đi
16 người bị rớt vì mất tuyến
Icmp:
5277 tin nhắn ICMP nhận được
120 thông báo ICMP đầu vào không thành công.
InCsumErrors: 6
Biểu đồ đầu vào ICMP:
điểm đến không thể truy cập: 193
thời gian chờ quá cảnh: 16
yêu cầu tiếng vang: 5060
tiếng vang trả lời: 2
9355 tin nhắn ICMP được gửi
0 tin nhắn ICMP không thành công
Biểu đồ đầu ra của ICMP:
điểm đến không thể truy cập: 4295
tiếng vang trả lời: 5060
IcmpMsg:
InType0: 2
Loại 3: 193
Loại 8: 5060
InType11: 16
OutType0: 5060
Loại 3: 4295
Tcp:
42 mở kết nối hoạt động
35226 mở kết nối thụ động
1693 lần thử kết nối không thành công
645 thiết lập lại kết nối nhận được
2 kết nối được thiết lập
646705 phân khúc nhận được
648037 phân đoạn gửi đi
99463 phân đoạn được truyền lại
27377 phân khúc xấu nhận được.
150893 đặt lại
InCsumErrors: 27377
Udp:
74547 gói tin nhận được
Nhận được 4814 gói đến cổng không xác định.
56 lỗi nhận gói
74584 gói đã được gửi
0 nhận lỗi bộ đệm
0 gửi lỗi bộ đệm
InCsumErrors: 56
UdpLite:
TcpExt:
Đã nhận được 177 mã SYN không hợp lệ
1693 đặt lại nhận được cho ổ cắm phôi SYN_RECV
Ổ cắm TCP TCP kết thúc thời gian chờ trong bộ đếm thời gian nhanh
3 gói từ chối trong các kết nối được thiết lập vì dấu thời gian
70248 acks bị gửi chậm
6 acks bị trì hoãn thêm nữa vì ổ cắm bị khóa
Chế độ ack nhanh được kích hoạt 3082 lần
17 SYNs để LISTEN ổ cắm bị rơi
28179 gói được xếp hàng trực tiếp vào recvmsg prequeue.
9802 byte nhận trực tiếp trong bối cảnh quá trình từ prequeue
Tiêu đề gói 72106 dự đoán
94182 xác nhận không chứa tải dữ liệu nhận được
40094 dự đoán xác nhận
Đã phục hồi 332 lần sau khi mất gói bằng các xác nhận chọn lọc
8 cửa sổ tắc nghẽn được phục hồi mà không khởi động chậm bằng DSACK
1173 cửa sổ tắc nghẽn được phục hồi mà không khởi động chậm sau khi ack một phần
1029 thời gian chờ sau khi phục hồi SACK
8 thời gian chờ trong trạng thái mất
329 truyền lại nhanh
3 lần truyền lại
32 lần truyền lại khi bắt đầu chậm
44785 thời gian chờ TCP khác
TCPLossP tủ: 9763
TCPLossProbeRecovery: 1732
54 lần truyền lại SACK không thành công
3144 DSACK được gửi cho các gói cũ
4 DSACK được gửi cho các gói ngoài đơn đặt hàng
695 DSACK nhận được
1 DSACK cho các gói ngoài đơn hàng nhận được
Thiết lập lại 44 kết nối do dữ liệu không mong muốn
Thiết lập lại 76 kết nối do người dùng đóng sớm
6079 kết nối bị hủy do hết thời gian
TCPDSACKIgnoredNoUndo: 448
TCPSpuriousRTOs: 5
TCPSackShiftFallback: 465
IPReversePathFilter: 11
TCPRcvCoalesce: 32369
TCPOFOQueue: 4313
TCPOFOMerge: 4
TCPChallengeACK: 2
TCPSynRetrans: 43670
TCPOrigDataSent: 208010
TCPACKSkippedSeq: 12
IpExt:
InKhông: 12
InOctets: 133789295
Xuất khẩu: 151093769
InNECTPkts: 731338
InECT1Pkts: 3
InECT0Pkts: 1568
InCEPkts: 108
[[email được bảo vệ] ~] #

Thông tin định tuyến hạt nhân

Có một vấn đề định tuyến? hoặc, kết nối không hoạt động như mong đợi do kết nối đang đi qua một tuyến đường khác?

Nhanh chóng kiểm tra bảng định tuyến.

[[email được bảo vệ] ~] # netstat -r
Bảng định tuyến IP kernel
Cổng đích Genmask Flag MSS Window irtt Iface
cổng mặc định 0.0.0.0 UG 0 0 0 eth0
10.16.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
68.183.32.0 0.0.0.0 255.255.240.0 U 0 0 0 eth0
liên kết cục bộ 0.0.0.0 255.255.0.0 U 0 0 0 eth0
[[email được bảo vệ] ~] #

PID được sử dụng bởi Số cổng

Rất thuận tiện để khắc phục sự cố xung đột cổng. Hãy nói với bạn rằng bạn đang cố gắng khởi động máy chủ Apache hoặc Nginx, nghe trên cổng 80 nhưng có thể vì một số quy trình khác đã sử dụng cổng 80.

[[email được bảo vệ] ~] # netstat -anlp | grep 80 | grep LISTEN
tcp6 0 0 ::: 80 ::: * NGHE 3937 / httpd
[[email được bảo vệ] ~] #

Và, bạn có thể thấy PID 3937 đang sử dụng cổng đó.

Nếu bạn đang sử dụng AIX, thì

netstat -Aan | grep $ portnumber

Điều này sẽ hiển thị địa chỉ của Khối điều khiển giao thức theo hệ thập lục phân

Khi bạn có hệ thập lục phân, sau đó có thể thực hiện bên dưới để có được quy trình đang giữ số cổng.

rmsock $ address_of_pcb tcpcb

Danh sách các giao diện mạng

Có nhiều giao diện ethernet? hoặc không chắc chắn và muốn tìm hiểu?

[[email được bảo vệ] ~] # netstat -i
Bảng giao diện hạt nhân
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 793026 0 0 0 849443 0 0 0 BMRU
lo 65536 6 0 0 0 6 0 0 0 LRU
[[email được bảo vệ] ~] #

Nghe liên tục

Một lựa chọn tuyệt vời khi dịch vụ khắc phục sự cố liên quan đến các vấn đề. Hãy nói rằng một ứng dụng bị sập ngẫu nhiên cứ sau vài phút. Nhưng, không chắc chắn khi chính xác. Bạn có thể sử dụng đối số -c sẽ liên tục hiển thị kết quả.

[[email được bảo vệ] ~] # netstat -anlpc | grep 8080
tcp6 0 0 ::: 8080 ::: * NGHE 11766 / httpd
tcp6 0 0 ::: 8080 ::: * NGHE 11766 / httpd
tcp6 0 0 ::: 8080 ::: * NGHE 11766 / httpd
tcp6 0 0 ::: 8080 ::: * NGHE 11766 / httpd

Khi nó dừng cập nhật, thì bạn biết nó bị sập.

Phần kết luận

netstat là một trong những lệnh được sử dụng rộng rãi bởi sysadmin và tôi hy vọng các ví dụ trên cho bạn ý tưởng về những gì bạn có thể làm với nó. Nếu bạn đang muốn tìm hiểu thêm về quản trị Linux, thì hãy xem điều này Khóa học của kẻ thù.

THẺ

  • Linux

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map