GNU/Linux >> Linux の 問題 >  >> Linux

CentOS / RHEL :ネットワーク ポートが開いているかどうかを確認する方法は?

TCP/IP ネットワーク接続は、ブロック、ドロップ、オープン、またはフィルター処理されている可能性があります。これらのアクションは、通常、システムが使用する IPtables ファイアウォールによって制御され、ネットワーク ポートでリッスンしているプロセスやプログラムとは無関係です。ファイアウォールの向こうでは、プログラムまたはプロセス (サーバーまたはデーモン) がポートでリッスンしている場合と、リッスンしていない場合があります。これは、netstat または ss プログラムを使用して確認できます。ポートが開いているか、ブロックされているか、ドロップされているか、ファイアウォールでフィルタリングされているかどうかを確認するのは簡単ではありません。これには 2 つの方法があります:

  • ポートを外部でテストする
  • ファイアウォール構成を一覧表示し、出力を調べます

1. netstat を使用してリッスン プロセスを確認する

プログラムまたはプロセスがポートでリッスンしているかどうか、パケットを受け入れる準備ができているかどうかを確認するには、netstat コマンドを使用します。

# netstat -tulnp

netstat コマンドの引数は次のとおりです:

t – TCP を表示
u – UDP を表示
l – リッスンしているプロセスのみを表示する (netstat は、リッスンしている接続と確立されているすべての接続の両方を表示できます。つまり、クライアントとしても表示できます)
n – ネットワークの IP アドレス名またはポート番号を解決しない
p – ポートでリッスンしているプロセス名を表示する

例:

# netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      1254/rpcbind
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1484/sshd
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      1355/cupsd
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1562/master
tcp        0      0 0.0.0.0:44349               0.0.0.0:*                   LISTEN      1274/rpc.statd
udp        0      0 0.0.0.0:111                 0.0.0.0:*                               1254/rpcbind
udp        0      0 0.0.0.0:631                 0.0.0.0:*                               1355/cupsd
udp        0      0 0.0.0.0:44165               0.0.0.0:*                               1274/rpc.statd
udp        0      0 0.0.0.0:602                 0.0.0.0:*                               1274/rpc.statd
udp        0      0 0.0.0.0:1001                0.0.0.0:*                               1254/rpcbind

2. ss を使用してリスニング プロセスを確認する

プログラムまたはプロセスがポートでリッスンしているかどうか、パケットを受け入れる準備ができているかどうかを確認するには、ss プログラムを使用します。

# ss -nutlp

ss プログラムの引数は次のとおりです:

t – TCP ソケットを表示します。
u – UDP ソケットを表示します。
l – リッスン ソケットを表示する
n – 今すぐ名前解決を試みてください
p – ソケットを使用してプロセスを表示

例:

# ss -nutlp
Netid State      Recv-Q Send-Q                                                        Local Address:Port                                                          Peer Address:Port
udp   UNCONN     0      0                                                                         *:111                                                                      *:*      users:(("rpcbind",1254,6))
udp   UNCONN     0      0                                                                         *:631                                                                      *:*      users:(("cupsd",1355,9))
udp   UNCONN     0      0                                                                         *:44165                                                                    *:*      users:(("rpc.statd",1274,8))
udp   UNCONN     0      0                                                                         *:602                                                                      *:*      users:(("rpc.statd",1274,5))
udp   UNCONN     0      0                                                                         *:1001                                                                     *:*      users:(("rpcbind",1254,7))
tcp   LISTEN     0      128                                                                       *:111                                                                      *:*      users:(("rpcbind",1254,8))
tcp   LISTEN     0      128                                                                       *:22                                                                       *:*      users:(("sshd",1484,3))
tcp   LISTEN     0      128                                                               127.0.0.1:631                                                                      *:*      users:(("cupsd",1355,7))
tcp   LISTEN     0      100                                                               127.0.0.1:25                                                                       *:*      users:(("master",1562,12))
tcp   LISTEN     0      128                                                                       *:44349                                                                    *:*      users:(("rpc.statd",1274,9))

3. lsof を使用して開いているポートを見つける

システムで開いているすべてのポートを一覧表示するには、次のコマンドを使用して、ポートを開いたプロセス名と番号を一覧表示します。

# lsof -i

以下に出力例を示します:

# lsof -i
COMMAND    PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
rpcbind   1254     rpc    6u  IPv4  12592      0t0  UDP *:sunrpc
rpcbind   1254     rpc    7u  IPv4  12596      0t0  UDP *:1001
rpcbind   1254     rpc    8u  IPv4  12597      0t0  TCP *:sunrpc (LISTEN)
rpc.statd 1274 rpcuser    5r  IPv4  12784      0t0  UDP *:xmlrpc-beep
rpc.statd 1274 rpcuser    8u  IPv4  12788      0t0  UDP *:44165
rpc.statd 1274 rpcuser    9u  IPv4  12792      0t0  TCP *:44349 (LISTEN)
cupsd     1355    root    7u  IPv4  13147      0t0  TCP localhost:ipp (LISTEN)
cupsd     1355    root    9u  IPv4  13150      0t0  UDP *:ipp
sshd      1484    root    3u  IPv4  13707      0t0  TCP *:ssh (LISTEN)
master    1562    root   12u  IPv4  13923      0t0  TCP localhost:smtp (LISTEN)
sshd      1657    root    3r  IPv4  14745      0t0  TCP 192.168.1.50:ssh->192.168.1.101:49549 (ESTABLISHED)

ポートの外部テスト

telnet アプリケーションは、単純なネットワーク ソケット接続のテストに使用できますが、UDP ではなく TCP 接続にのみ使用できます。たとえば、システムの TCP ポート 80 が接続を受け入れる準備ができているかどうかを確認したい場合は、IP アドレスと telnet のポートを指定します。

# telnet 192.168.1.55 80
Trying 192.168.1.55...
Connected to example.redhat.com (192.168.1.55).
Escape character is '^]'.

サーバーがリッスンしていない場合、応答は異なります:

# telnet 10.0.0.25 80
Trying 10.0.0.25...
telnet: connect to address 10.0.0.25: Connection refused
telnet: Unable to connect to remote host: Connection refused
  • これは、接続がアクティブに拒否されたことを示します。 TCP サブシステムはパケットを受信して​​調べ、ポート 80 でソケットを開く要求であることを確認し、接続を受け入れる準備ができているプロセスがないことを確認し、拒否で応答しました。
  • ファイアウォールが接続をブロックまたはフィルタリングするように構成されている場合、接続を受け入れる準備ができているプロセスがあったとしても、telnet は上記と非常によく似たものを表示します。
  • ファイアウォールが接続をドロップするように構成されている場合、まったく応答がなく、代わりに telnet がタイムアウトします:
# telnet 10.0.0.25 80
Trying 10.0.0.25...
telnet: connect to address 10.0.0.25: Connection timed out

ファイアウォール ルールの一覧表示

Red Hat Enterprise Linux では、サービス コマンドを使用してファイアウォール ルールを一覧表示できます。

# service iptables status

または、iptables コマンドを使用して:

# iptables -xvn -L


Linux
  1. CentOS / RHEL 7 :firewall-cmd を使用してファイアウォールでポートを開く方法は?

  2. CentOS / RHEL 7 で NetworkManager を無効にする方法

  3. CentOS / RHEL 7 でポートを開く方法

  1. CentOS/RHEL 7 でネットワーク チーミングを構成する方法

  2. CentOS/RHEL のマルチインターフェイス ネットワーク カードの特定のポートに対応する特定のイーサネット デバイスを見つける方法

  3. CentOS/RHEL システムの CPU ソケット数を調べる方法

  1. CentOS 7 /RHEL7でネットワークブリッジを作成する方法

  2. CentOS8またはRHEL8でネットワークサービスを再起動する方法

  3. CentOS/RHEL 8 でネットワーク サービスを再起動する方法