Linux でオープン ポートを確認する方法: 1. nmap ツールを使用してオープン ポートを検出; 2. netstat ツールを使用してオープン ポートを検出; 3. lsof ツールを使用してオープン ポートを検出; 4.開いているポートを検出するには、telnet を使用します。 5. 開いているポートを検出するには、netcat ツールを使用します。
#このチュートリアルの動作環境: 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]#
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
関連する推奨事項:「Linux ビデオ チュートリアル 」
以上がLinux でどのポートが開いているかを確認する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。