Linux 之埠監聽

2021-07-27 17:33:08 字數 4371 閱讀 8064

主要用到的命令: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...