40

作成中のプログラムのデータをやり取りするためのバックエンドとして netcat を使用しています。私は自分のプログラムをローカル ネットワークでテストしましたが、プログラムが機能するようになると、ルーターからポートを転送するだけで、インターネット上でプログラムを動作させることができると思いました。ああ!そうではないようです。

ポート 6666 で netcat のリッスンを開始すると、次のようになります。

nc -vv -l -p 6666

次に127.0.0.1:6666、ブラウザーに移動すると、予想どおり、HTTP GET 要求が netcat を介して送信されていることがわかります (そして、ブラウザーは無駄に待機しています)。しかし、にアクセスするmy.external.ip.address:6666と、何も表示されず、ブラウザに「接続できませんでした」と表示されますmy.external.ip.address:6666

www.canyouseeme.org がポート 6666 が開いていると言っているように、ポートが正しく転送されていることを知っています (そして、netcat がリッスンしていない場合は閉じられています)。

-g my.adslmodem's.local.addressゲートウェイ アドレスを設定するためにnetcat を実行すると、同じ動作になります。このコマンド ライン オプションを正しく使用していますか? 私が間違っていることについての洞察はありますか?

4

3 に答える 3

39

パブリック インターフェイスでリッスンする必要があります。現在、コンピューターの外部から誰も接続できない localhost でリッスンしています。

あなたのマイレージは異なるかもしれませんが、netcatの私の実装では、このコマンド ラインを使用してすべてのパブリック インターフェイスをリッスンする必要があります。

netcat -vv -l 0.0.0.0 6666

于 2010-03-31T11:48:22.387 に答える
22

問題がないことがわかりました。私のルーターはヘアピン接続を許可していないので、そのようにしか見えません。つまり、正しく設定されていても、送信元と宛先の両方がNATの背後にある場合、ルーターは接続を確立しません。ncat -l -p 6666リクエストがLANの外部からのものである限り、単純に正常に機能します。これをテストするためにmy.external.ip.address:6666、私は3G携帯電話で閲覧しましたが、確かに、HTTPリクエストが届きました:)

この答えは次のとおりです。serverfaultの質問。これは、最初にこの質問をする必要があった場所です。そのことをお詫びします。

于 2010-03-31T12:29:09.447 に答える
13

リスニング アドレスを指定するには:

nc -l -s <LISTENING_IP_ADDR> -p <LISTENING_PORT>

Debian Jessie でテスト済みnetcat-traditional-1.10-41

于 2016-07-05T06:49:53.327 に答える