ネットワーク接続をブロックできるもの

ネットワーク接続をブロックできるもの

Pythonを使用してmqtt接続を作成しようとしています。問題を再現する最も短いコードは次のとおりです。

import paho.mqtt.client as paho

client = paho.Client('myClient')
client.username_pw_set('user', 'password')
client.connect('my.broker.com')

最後の行で私は得る。

ConnectionRefusedError: [Errno 111] Connection refused

興味深いことに、サーバーは接続を拒否しませんでした。connect()ロギングがあり、実際の要求前に接続が拒否されたようです。

Windowsコンピュータでスクリプトを試しましたが、Ubuntuでは正しく実行されていますが、Fedora 37(接続が拒否されました)があるコンピュータで実行する必要があります。いくつかの設定が間違っていると思いますが、基本的なLinuxの知識がありますが、どこで見つけることができるのかわかりません。私は両方のLinuxの現在の状態を知りません。どのような方法でも設定できますが、Windowsシステムのデフォルト設定は良好です。グーグルをしてみると次のような提案がありました。

  • ローカルmqttブローカーの実行(リモートブローカーに接続する必要があるため不適切)
  • ファイアウォールのルールを確認してください(他のコンピュータがプロキシに接続できるため、ネットワークにファイアウォールがないようです)。
  • iptablesの確認(フィルタリングルールは表示されません)

私が確認できる他の提案はありますか?ソケットの作成にFedoraまたはLinux全体に制限はありますか?

答え1

Unix全体:

通常、ルートのみ1023以下のポート番号を使用できますが、MQTTデフォルトのポート番号は1883であるため問題はありません。

Fedora固有:

FedoraはデフォルトでSELinuxを使用しますが、ここに適用される方法で一般ユーザーの対話型セッションを制限しないでください。ただし、特定のサービス(たとえば、ネットワークサーバーのCGIスクリプトや他のスクリプト)を介してスクリプトを実行すると、SELinuxがそれを許可するように構成されていない限り、スクリプトが発信ネットワーク接続を開くことができない可能性があります。

基本的な接続テスト:

telnetnetcat( ) がインストールされている場合は、nc次のコマンドを使用して接続をテストします。

telnet my.broker.com 1883

または

nc -v my.broker.com 1883

それぞれ。

tracerouteすでにインストールされている場合は、以下を実行してください。伝送制御プロトコル追跡パスアプリケーションに必要な特定のポートで(SSL / TLSなしのMQTTのデフォルト値は1883です):

sudo traceroute -T -p 1883 my.broker.com

プロキシへのデフォルトのTCP接続が正常に確立されたら、これを明示的にtelnet通知ncします。

ネットワークで接続試行が中断された場合は、traceroute -Tそれを識別するのに役立ちます。

関連情報