6

プログラムが Linux マシンで実行されている場合、そのプログラムがファイアウォールの通過を許可されているポートをスキャンする方法はありますか? たとえば、プログラマーがチャット システムを作成したいが、ユーザーのファイアウォールによって着信接続へのアクセスが拒否されていないポートをプログラムが知る必要がある場合、コードでこれを確認する方法はありますか? ファイアウォールが着信接続から同じポートをブロックしている場合でも、プログラムはソケットをポートにバインドすることに失敗することはありません。開いているファイアウォール ポートを確認する方法はありますか?

補足: これは純粋に教育目的のためのものであり、悪意はありません。明確にするために、私はチャット システムを作成しています。テスト中、ファイアウォールの通過を許可してポートを手動で開くまで、デスクトップからラップトップに接続できませんでした。これは、プログラマーのコードがユーザーに実行を要求するものとは異なり、私には少しずれているように思えました。言うまでもなく、このコードを使用している少数の人々を危険にさらしたくありません (ポートを永続的に開いたままにする場合)。そのため、着信 TCP 接続に対して既に開いているポートを利用する方法を見つける方が適しているようです。

補足: すべてのクライアントが fedora を実行しています

4

1 に答える 1

4

今日、新しいインターネット アプリケーションの作成を管理する 2 番目に大きな問題に遭遇しました。もちろん、最初の最大のものは NAT であり、これは強く関連する問題です (IPv6 により、最終的にはなくなることを願っています)。

そして、簡単な答えはありません。良い答えの 1 つはUPnPですが、それは簡単な答えではなく、決して普遍的なものではありません。私のネットワークでは実行されません。

もう 1 つの答えは、何らかの形で https (または必要に応じて http) を介して行うすべてのことをトンネリングすることです。しかし、これはチャット アプリケーションのようなものにとっては大きな苦痛です。

于 2012-10-16T20:07:46.313 に答える