ホームページ  >  記事  >  運用・保守  >  Linux でどのポートが開いているかを確認する方法

Linux でどのポートが開いているかを確認する方法

青灯夜游
青灯夜游オリジナル
2022-03-02 15:21:5226782ブラウズ

Linux でオープン ポートを確認する方法: 1. nmap ツールを使用してオープン ポートを検出; 2. netstat ツールを使用してオープン ポートを検出; 3. lsof ツールを使用してオープン ポートを検出; 4.開いているポートを検出するには、telnet を使用します。 5. 開いているポートを検出するには、netcat ツールを使用します。

Linux でどのポートが開いているかを確認する方法

#このチュートリアルの動作環境: linux5.9.8 システム、Dell G3 コンピューター。

ネットワーク テクノロジでは、ポートには論理ポートと物理ポートが含まれます。物理ポートとは、RJ-45 ポート、SC ポートなど、他のネットワーク デバイスに接続するために使用される ADSL モデム、ハブ、スイッチ、ルーター上のインターフェイスなど、物理的に存在するポートを指します。論理ポートとは、TCP/IP プロトコルのサービス ポートなど、論理的な意味でサービスを区別するために使用されるポートを指します。ポート番号の範囲は 0 ~ 65535 です (Web ブラウジング サービスの場合はポート 80、FTP サービスの場合はポート 21 など)。 。 待って。物理ポートと論理ポートの数が多いため、ポートを区別するために、各ポートにポート番号が付けられます。これがポート番号です。

ポートは、ポート番号に応じて 3 つのカテゴリに分類できます。

1: 既知のポート

既知のポート番号の範囲は 0 ~ 1023 です。これらはいくつかの一般的なサービスに密接にバインドされています。たとえば、FTP サービスはポート 21 を使用します。 /etc/services. このマッピング関係。

2: 登録されているポート:

1024 ~ 49151。これらはいくつかのサービスと緩やかに結びついています。つまり、これらのポートには多くのサービスがバインドされており、これらのポートは他の多くの目的にも使用されます。

3: 動的ポートおよび/またはプライベート ポート

動的ポート、つまり, プライベート ポート番号は、インターネットの伝送制御プロトコル (ユーザー トランスポート プロトコル) を使用して、ソフトウェアが他のソフトウェアと通信するために使用できるポートの数です。動的ポートは通常 49152 ~ 65535です。

Linux のポート範囲は限られています。プログラム用に特定のポートを予約したい場合は、このポート範囲を制御する必要があります。 /proc/sys/net/ipv4/ip_local_port_range は、ローカル TCP/UDP ポート範囲を定義します。 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

/etc/sysctl.conf のポートとサービスについて定義できます。かつて公衆トイレにたとえられましたが、公衆トイレの各トイレはシステムの各ポートのようなものです。人々に利便性を提供することが、いわゆるサービスです。これらのサービスを提供する場合、ポート(トイレ)が開かれなければなりません誰かがトイレに行くとき、これらのポートでリンクが確立されます。そのトイレが誰かに占有されているということは、そのポート番号がサービスに占有されていることを意味し、ある日ここで公衆トイレがなくなり、その公衆トイレが取り壊されれば、当然ポート番号もなくなる。実際、より鮮明な例は銀行のロビーのようなもので、ポート番号はカウンターであり、番号を受け取って業務を処理する人々はサーバーに接続されたさまざまなクライアントのようなものです。業務連絡はポート リダイレクト テクノロジを通じてカウンターに送信されます。もう一つ分かりやすい例で言うと、ポート番号は高速鉄道の各駅のようなもので、例えば長沙、岳陽などはそれぞれポート番号を表しており、乗客は乗車券でそれぞれの駅に行き、これは、各アプリケーション プログラムがサーバーに送信するポート IP パケットのようなものです。

ポートが開いているかどうかを確認するにはどうすればよいですか? 実は、整理してみないと、こんなにたくさんの方法があることを知りません。

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]#

Linux でどのポートが開いているかを確認する方法

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]#

Linux でどのポートが開いているかを確認する方法

上記のように、このツールは、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]#

Linux でどのポートが開いているかを確認する方法

[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

関連する推奨事項:「Linux ビデオ チュートリアル

以上がLinux でどのポートが開いているかを確認する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。