netstat 是查尋用指令,可以回傳以下資訊:
1.網路連線狀態(network connection)
2.路由表(routing tables)
3.網卡狀態(interface statistics)
4.程式內NAT網路狀態(masquerade connection)
5.群播成員(multicast memberships)
以下在Ubuntu環境下簡單介紹(其實是寫給自己看的):
首先問問自己你要幹嘛?
1.不知道自己要幹嘛的話不用打參數
netstat | more
會秀出所有有開放的socket(注意,不一定已經連線)
2.看路由請用請享用
netstat -r | more
3.看封包的群播網段
netstat -g | more
介紹你好藥:
像是IPv6回應你可能會預設看到ff02::1 (鏈接本地範圍所有節點),結果卻沒看到!
這是因為netstat幫你翻譯過了,所以如果你要原汁的資訊可以加個 -n 例如:
netstat -gn | more
就會幫你show出來沒有翻譯過的而是數字的host,port或是user。
4.看網卡的封包處理狀態,有{RX, TX} && {OK, ERR, DRP, OVR},看不懂的下面也沒另外介紹謝謝。
netstat -i | more
5.看群播
netstat -M | more
6.看所有封包的統計
netstat -s | more
可以看到{Ip, Icmp, IcmpMsg, Tcp, Udp, UdpLite, TcpExt, IpExt}
所有封包的傳輸狀態。
很常用的,查詢「網路連線狀態」
netstat [address_family_options] [--tcp|-t] [--udp|-u] [--udplite|-U] [--sctp|-S] [--raw|-w] [--l2cap|-2] [--rfcomm|-f] [--listening|-l] [--all|-a] [--numeric|-n] [--numeric-hosts] [--numeric-ports] [--numeric-users] [--symbolic|-N] [--extend|-e[--extend|-e]] [--timers|-o] [--program|-p] [--verbose|-v] [--continuous|-c] [--wide|-W]
address_family_options:
[-4|--inet] [-6|--inet6] [--protocol={inet,inet6,unix,ipx,ax25,netrom,ddp,bluetooth, ... } ] [--unix|-x] [--inet|--ip|--tcpip] [--ax25] [--x25] [--rose] [--ash] [--bluetooth] [--ipx] [--netrom] [--ddp|--appletalk] [--econet|--ec]
netstat的table使用的說明都是有依據的,如果不熟悉可以參考這張圖:
TCP連線架構圖可以參考這裡
我這樣差不多就夠用了,如果要再多深入的可以man一下,剩下的都是過濾、排列、搜尋的附加參數。
Dean
Senior Software Engineer / Network Security Engineer
Feel free to contact me: t104318516@ntut.org.tw
Interest: Reverse Engineering, Binary Analysis, Network Protocol, Cyber Security, Digital communication.