主要用到的命令:netstat, nmap
兩者的區別如下:
l netstat:在本機上面以自己的程式監測自己的 port;
l nmap:透過網路的偵測軟體輔助,可偵測非本機上的其他網路主機。
1、 netstat的常規用法:
1.1 列出正在監聽的網路埠:
[root@www ~]#netstat -tunl
ctive internet connections (only servers)
proto recv-q send-q local address foreign address state
tcp 0 0 0.0.0.0:111 0.0.0.0:* listen
tcp 0 0 0.0.0.0:22 0.0.0.0:* listen
tcp 0 0 127.0.0.1:25 0.0.0.0:* listen
....(底下省略)....
上面說明我的主機至少啟動了111、22和25等埠,而25埠只針對 lo 內部迴圈測試網路提供服務,網際網路是連不到該埠口的。
1.2 列出已經連線的網路埠:
[root@www ~]#netstat -tun
active internet connections (w/o servers)
proto recv-q send-q local address foreign address state
tcp 0 52 192.168.1.100:22 192.168.1.101: 56746 established
從上面的資料來看,我的本地端伺服器 (local address, 192.168.1.100) 目前僅有一條已建立的聯機,那就是與 192.168.1.101 那部主機連線的聯機,並且聯機方線是由對方連線到我主機的 port 22 來取用我伺服器的服務吶!
1.3 刪除已建立連線或監聽中的連線:
如果想要將已經建立,或者是正在監聽當中的網路服務關閉的話,最簡單的方法當然就是找出該聯機的 pid, 然後將他 kill 掉即可啊!例如下面的範例:
[root@www ~]#netstat -tunp
active internet connections (w/o servers)
proto recv-q send-q local address foreign address state pid/p name
tcp 0 52 192.168.1.100:22 192.168.1.101:56746 established 1342/0
如上面的範例,我們可以找出來該聯機是由 sshd 這個程式來啟用的,並且他的 pid 是 1342, 希望你不要心急的用 killall 這個指令,否則容易刪錯人 (因為你的主機裡面可能會有多個 sshd 存在), 應該要使用 kill 這個指令才對喔!
2、 nmap的使用:
[root@www ~]#nmap [掃瞄型別] [掃瞄引數] [hosts 位址與範圍]
選項與引數:
[掃瞄型別]:主要的掃瞄型別有底下幾種:
-st:掃瞄 tcp 封包已建立的聯機 connect() !
-ss:掃瞄 tcp 封包帶有 syn 卷標的資料
-sp:以 ping 的方式進行掃瞄
-su:以 udp 的封包格式進行掃瞄
-so:以 ip 的協議 (protocol) 進行主機的掃瞄
[掃瞄引數]:主要的掃瞄引數有幾種:
-pt:使用 tcp 裡頭的 ping 的方式來進行掃瞄,可以獲知目前有幾部計算機存活(較常用)
-pi:使用實際的 ping (帶有 icmp 封包的) 來進行掃瞄
-p :這個是 port range ,例如 1024-, 80-1023, 30000-60000 等等的使用方式
[hosts 位址與範圍]:這個有趣多了,有幾種類似的型別
192.168.1.100 :直接寫入 host ip 而已,僅檢查一部;
192.168.1.0/24 :為 c class 的型態,
192.168.*.* :嘿嘿!則變為 b class 的型態了!掃瞄的範圍變廣了!
192.168.1.0-50,60-100,103,200 :這種是變形的主機範圍啦!很好用吧!
# 範例一:使用預設引數掃瞄本機所啟用的 port (只會掃瞄 tcp)
[root@www ~]#yum install nmap
[root@www ~]#nmap localhost
port state service
22/tcp open ssh
25/tcp open smtp
111/tcp open rpcbind
# 在預設的情況下,nmap 僅會掃瞄 tcp 的協議喔!
nmap 的用法很簡單吶!就直接在指令後面接上 ip 或者是主機名即可。不過,在預設的情況下 nmap 僅會幫你分析 tcp 這個通訊協議而已,像上面這個例子的輸出結果。但優點是順道也將開啟該埠口的服務也列出來了, 真是好! ^_^!那如果想要同時分析 tcp/udp 這兩個常見的通訊協議呢?可以這樣做:
# 範例二:同時掃瞄本機的 tcp/udp 埠口
與前面的範例比較一下,你會發現這次多了幾個 udp 的埠口,這樣分析好多了!然後, 如果你想要了解一下到底有幾部主機活在你的網路當中時,則可以這樣做:
# 範例三:透過 icmp 封包的檢測,分析區網內有幾部主機是啟動的
[root@www ~]#nmap -sp 192.168.1.0/24
starting nmap 5.21 ( ) at 2011-07-20 17:05 cst
nmap scan report for www.centos.vbird (192.168.1.100)
host is up.
nmap scan report for 192.168.1.101 <==這三行講的是 192.168.101 的範例!
host is up (0.00024s latency).
mac address: 00:1b:fc:58:9a:bb (asustek computer)
nmap scan report for 192.168.1.254
host is up (0.00026s latency).
mac address: 00:0c:6e:85:d5:69 (asustek computer)
nmap done: 256 ip addresses (3 hosts up) scanned in 3.81 seconds
看到否?我的環境當中有三部主機活著 (host is up)!並且該 ip 所對應的 mac 也會被記錄下來
檢視linux埠監聽情況
檢視linux埠監聽情況 2008 05 29 16 32 以下介紹幾個檢視linux下埠使用情況,以及軟體的埠監聽的幾個工具,當然我也不是很熟。1 lsof 可以直接執行lsof 這樣可以看到一大片一大片的軟體對埠的監聽情況,但是很難篩選,不建議使用。如果你想知道某個埠被某軟體占用著,可以用比如l...
linux檢視埠以及埠的監聽程式
在linux中常常要檢視服務開啟了那些監聽埠,但如何知道是那些程式開啟呢就要用到命令 lsof 如檢視80埠 netstat nltpu grep 177 檢視gdm監聽埠開啟成功 出現下圖所示為正常。在linux中常常要檢視服務開啟了那些監聽埠,但如何知道是那些程式開啟呢就要用到命令 lsof 如...
python同時監聽多個埠 監聽多個埠
我在玩twisted,建立了乙個簡單的 伺服器 我想讓伺服器監聽多個埠 1025 65535 而不是單個埠。我該怎麼做?在 我的 from twisted.internet.protocol import protocol,serve ctory from twisted.internet impo...