web-dev-qa-db-ja.com

Linuxのオープンポートのリストを入手する

アプリケーションで使用するためのすべての空きオープンポートを一覧表示するためのLinuxコマンドが必要です。

lsof -i TCP| fgrep LISTEN

それがリストしているPortsが必ずしも自由に使えるわけではないので助けになっているとは思われません。未使用の空きオープンポートを一覧表示するにはどうすればいいですか?

179
netstat -lntu

@askmishが返信したところでは、あなたのシステム上でTCPポートとUDPポート上で実行されているサービスのリストが表示されます。

  • -l =何らかのポートでlistenしているサービスのみ
  • -n =ポート番号を表示します。サービス名を解決しないでください
  • -t = TCPポート
  • -u = udp ports
  • -p =プログラムの名前

どのポートが空いていて、どのプログラムが動いているのではないかを知りたいだけなので、 'p'パラメータは必要ありません。

ただし、これはシステムのどのポートが使用されているかを示すだけです。これはあなたのネットワークの状態をあなたに知らせるものではありません。 NATの背後にいて、一部のサービスに外部からアクセスできるようにしたい場合。またはファイアウォールが外部の訪問者のためにポートをブロックしている場合。その場合は、nmapが役に立ちます。警告:nmapは自分の管理下にあるネットワーク上でのみ使用してください。また、nmapのpingをブロックすることができるファイアウォールのルールがあります、あなたは正しい結果を得るためにオプションをいじる必要があります。

246
mehulved

net-toolsは非推奨 なので、ssの代わりに netstatコマンド を使用できます。 netstatがあなたのマシンに存在しない場合:

ss -lntu

同様に動作するはずです

netstat -lntu

内蔵のヘルプによると:

-n, --numeric       don't resolve service names
-l, --listening     display listening sockets
-t, --tcp           display only TCP sockets
-u, --udp           display only UDP sockets
82
Eric Finn

このコマンドは、開いているネットワークポートとそれらを所有しているプロセスを一覧表示します。

netstat -lnptu

その後、結果をあなたの正確なスペックに絞り込むことができます。

ポートに関するよりきめ細かい結果を得るためにnmapを使うこともできます。

20
askmish

応答トラフィックを含むすべてのオープンポート

netstat -tuwanp 2>/dev/null | awk '{print $4}' | sort | uniq -c | wc -l
5
diyism

私が最初に疑問に思っていたのは、彼が現在サービスに接続されているポートではなく、未使用のポートについて尋ねていたということでした。この場合、使用されているポートを一覧表示し、他のポートが未使用であると想定する以外に、それらを一覧表示する具体的な方法はありません。

もう1つ留意すべき点は、ユーザーとして1024未満のポートを開くことはできないということです(そのためにはroot権限が必要です)。

1
joat

やってみる

Sudo netstat -plnt | grep -E '(0.0.0.0:|:::|127.0.0.1:|::1:)' |  awk 'NR>2{print $7}' | sort -n  | uniq

そしてこれを見てください。

0
Robokishan

次のコマンドは、Ubuntu/Debianと同じフォーマットで出力されるUNIXで動作します。ローカルアドレスは4桁目にあり、出力の先頭には2行のヘッダーがあります。どちらかの番号が違う場合は、下記のawkコマンドを微調整してください。

IPv4のみが必要な場合:

netstat -lnt | awk 'NR>2{print $4}' | grep -E '0.0.0.0:' | sed 's/.*://' | sort -n | uniq

IPv6のみが必要な場合

netstat -lnt | awk 'NR>2{print $4}' | grep -E ':::' | sed 's/.*://' | sort -n | uniq

両方を一緒にしたい場合:

netstat -lnt | awk 'NR>2{print $4}' | grep -E '(0.0.0.0:|:::)' | sed 's/.*://' | sort -n | uniq

このコマンドは、すべてのインターフェースでlistenしているポート番号のリストを出力します。 localhostインターフェースでlistenしているすべてのポートをリストしたい場合は、次のようにしてください。

netstat -lnt | awk 'NR>2{print $4}' | grep -E '(127.0.0.1:|::1:)' | sed 's/.*://' | sort -n | uniq
0
datashaman