Linux 查看伺服器開放的連接埠號碼,linux連接埠號碼

來源:互聯網
上載者:User

Linux 查看伺服器開放的連接埠號碼,linux連接埠號碼

在討論這個問題前,我們先來瞭解一下物理連接埠、邏輯連接埠、連接埠號碼等電腦概念。

 

連接埠相關的概念:

 

在網路技術中,連接埠(Port)包括邏輯連接埠和物理連接埠兩種類型。物理連接埠指的是物理存在的連接埠,如ADSL Modem、集線器、交換器、路由器上用 於串連其他網路裝置的介面,如RJ-45連接埠、SC連接埠等等。邏輯連接埠是指邏輯意義上用於區分服務的連接埠,如TCP/IP協議中的服務連接埠,連接埠號碼的範圍從0到65535,比如用於瀏覽網頁服務的80連接埠,用於FTP服務的21連接埠等。由於物理連接埠和邏輯連接埠數量較多,為了對連接埠進行區分,將每個連接埠進行了編號,這就是連接埠號碼

連接埠按連接埠號碼可以分為3大類:

 

1:公認連接埠(Well Known Port)

公認連接埠號碼從0到1023,它們緊密綁定與一些常見服務,例如FTP服務使用連接埠21,你在 /etc/services 裡面可以看到這種映射關係。

 

2:註冊連接埠(Registered Ports):

從1024到49151。它們鬆散地綁定於一些服務。也就是說有許多服務綁定於這些連接埠,這些連接埠同樣用於許多其它目的.

 

3: 動態或私人連接埠(Dynamic and/or Private Ports)

動態連接埠,即私人連接埠號碼(private port numbers),是可用於任意軟體與任何其他的軟體通訊的連接埠數,使用網際網路的傳輸控制通訊協定,或使用者傳輸協議。動態連接埠一般從49152到65535

Linux中有限定連接埠的使用範圍,如果我要為我的程式預留某些連接埠,那麼我需要控制這個連接埠範圍。/proc/sys/net/ipv4/ip_local_port_range定義了本地TCP/UDP的連接埠範圍,你可以在/etc/sysctl.conf裡面定義net.ipv4.ip_local_port_range = 1024 65000

[root@localhost ~]# cat /proc/sys/net/ipv4/ip_local_port_range
32768   61000
[root@localhost ~]#  echo 1024 65535 > /proc/sys/net/ipv4/ip_local_port_range

 

關於連接埠和服務,我曾經拿公用廁所打比方,公用廁所裡的每一個廁所就好比系統的每一個連接埠,為人解決方便就是所謂的服務,你提供了這些服務,那麼就必須開放連接埠(廁所),當有人上廁所時,就是在這些連接埠建立了連結。如果那個廁所被人佔用了,就表示連接埠號碼被服務佔用了,如果有一天這裡不提供公用廁所服務了,這個公用廁所被拆除了,自然也就沒有了連接埠號碼了。其實更形象的例子,就好比銀行大堂,連接埠號碼是那些櫃檯,而那些取號辦理業務的人就好比連結到伺服器的各種用戶端。他們通過連接埠重新導向技術與櫃檯發送業務聯絡。再舉一個通俗易懂的例子,連接埠號碼,好比高鐵線上的每個網站,例如,長沙、嶽陽等分別代表一個連接埠號碼,旅客通過火車票到各自的網站,就好比各個應用程式發往伺服器連接埠的IP包。

 

連接埠與服務的關係

 

    連接埠有什麼用呢?我們知道,一台擁有IP地址的主機可以提供許多服務,比如Web服務、FTP服務、SMTP服務等,這些服務完全可以通過1個IP地址來實現。那麼,主機是怎樣區分不同的網路服務呢?顯然不能只靠IP地址,因為IP 位址與網路服務的關係是一對多的關係。實際上是通過“IP地址+連接埠號碼”來區分不同的服務的。

連接埠號碼與相應服務的對應關係存放在/etc/services檔案中,這個檔案中可以找到大部分連接埠。

如何檢查連接埠是否開放,其實不整理,還不知道有這麼多方法!

 

1:nmap工具檢測開放連接埠

nmap是一款網路掃描和主機檢測的工具。nmap的安裝非常簡單,如下所示rpm安裝所示。

[root@DB-Server Server]# rpm -ivh nmap-4.11-1.1.x86_64.rpm 
warning: nmap-4.11-1.1.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing...                ########################################### [100%]
   1:nmap                   ########################################### [100%]
[root@DB-Server Server]# rpm -ivh nmap-frontend-4.11-1.1.x86_64.rpm 
warning: nmap-frontend-4.11-1.1.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing...                ########################################### [100%]
   1:nmap-frontend          ########################################### [100%]
[root@DB-Server Server]# 

關於nmap的使用,都可以長篇大寫特寫,這裡不做展開。如下所示,nmap 127.0.0.1 查看本機開放的連接埠,會掃描所有連接埠。 當然也可以掃描其它伺服器連接埠。

[root@DB-Server Server]# nmap 127.0.0.1
 
Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2016-06-22 15:46 CST
Interesting ports on localhost.localdomain (127.0.0.1):
Not shown: 1674 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
25/tcp   open  smtp
111/tcp  open  rpcbind
631/tcp  open  ipp
1011/tcp open  unknown
3306/tcp open  mysql
 
Nmap finished: 1 IP address (1 host up) scanned in 0.089 seconds
You have new mail in /var/spool/mail/root
[root@DB-Server Server]# 

 

2:netstat 工具檢測開放連接埠

[root@DB-Server Server]# netstat -anlp | grep 3306
tcp        0      0 :::3306                     :::*                        LISTEN      7358/mysqld         
[root@DB-Server Server]# netstat -anlp | grep 22
tcp        0      0 :::22                       :::*                        LISTEN      4020/sshd           
tcp        0     52 ::ffff:192.168.42.128:22    ::ffff:192.168.42.1:43561   ESTABLISHED 6198/2              
[root@DB-Server Server]# 

如上所示,這個工具感覺沒有nmap簡潔明了。當然也確實沒有nmap功能強大。

 

3:lsof 工具檢測開放連接埠

 
[root@DB-Server Server]# service mysql start
Starting MySQL......[  OK  ]
[root@DB-Server Server]# lsof -i:3306
COMMAND  PID  USER   FD   TYPE DEVICE SIZE NODE NAME
mysqld  7860 mysql   15u  IPv6  44714       TCP *:mysql (LISTEN)
[root@DB-Server Server]# service mysql stop
Shutting down MySQL..[  OK  ]
[root@DB-Server Server]# lsof -i:3306
[root@DB-Server Server]# 

 

[root@DB-Server Server]# lsof -i TCP| fgrep LISTEN
cupsd     3153    root    4u  IPv4   9115       TCP localhost.localdomain:ipp (LISTEN)
portmap   3761     rpc    4u  IPv4  10284       TCP *:sunrpc (LISTEN)
rpc.statd 3797 rpcuser    7u  IPv4  10489       TCP *:1011 (LISTEN)
sshd      4020    root    3u  IPv6  12791       TCP *:ssh (LISTEN)
sendmail  4042    root    4u  IPv4  12876       TCP localhost.localdomain:smtp (LISTEN)

 

4: 使用telnet檢測連接埠是否開放

   伺服器連接埠即使處於監聽狀態,但是防火牆iptables屏蔽了該連接埠,是無法通過該方法檢測連接埠是否開放的。

 

5:netcat工具檢測連接埠是否開放。

[root@DB-Server ~]# nc -vv 192.168.42.128 1521
Connection to 192.168.42.128 1521 port [tcp/ncube-lm] succeeded!
[root@DB-Server ~]# nc -z 192.168.42.128 1521; echo $?
Connection to 192.168.42.128 1521 port [tcp/ncube-lm] succeeded!
0
[root@DB-Server ~]#  nc -vv 192.168.42.128 1433
nc: connect to 192.168.42.128 port 1433 (tcp) failed: No route to host

 

關閉連接埠和開放連接埠

   

    關閉連接埠和開放連接埠應該是兩種不同的概念,每個連接埠都有對應的服務,因此要關閉連接埠,只要關閉相應的服務就可以了。像下面例子,開啟了MySQL服務,連接埠3306處於監聽狀態,關閉MySQL服務後,連接埠3306自然被關閉了

 
[root@DB-Server Server]# service mysql start
Starting MySQL......[  OK  ]
[root@DB-Server Server]# lsof -i:3306
COMMAND  PID  USER   FD   TYPE DEVICE SIZE NODE NAME
mysqld  7860 mysql   15u  IPv6  44714       TCP *:mysql (LISTEN)
[root@DB-Server Server]# service mysql stop
Shutting down MySQL..[  OK  ]
[root@DB-Server Server]# lsof -i:3306
[root@DB-Server Server]# 

   

所以,系統裡面有些不必要的連接埠和服務,從安全考慮或資源節省角度,都應該關閉那些不必要的服務。關閉對應的連接埠。另外,即使服務開啟,但是防火牆對對應的連接埠進行了限制,這樣連接埠也不能被訪問,但連接埠本身並沒有關閉,只是連接埠被屏蔽了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.