問題のボックスは両方ともRHEL5です。
python RPCサーバーがローカルホストポート8000で実行されています。同じマシンで実行されているクライアントが接続しようとすると、すべてが正常に機能します。リモートクライアントが接続しようとすると、応答がありません。
netstatは、127.0.0.1:8000で実行されているプロセスを示しています。これは、リモートコネクタを許可したい場合に問題になるようです。
ルーターのポートを転送しました。tcpdumpを使用すると、RPC呼び出しがポート8000に着信するのを確認できますが、すべて失敗し、RPCサーバーがメッセージを受信しません。
サーバー構成では、ホスト名を次の場所に配置できます。server= SimpleXMLRPCServer(( "localhost"、8000))
/ etc/hostsファイルは次のようになっているため、localhostの代わりにドメインを試しても127.0.0.1になります。
127.0.0.1 localhost.localdomain localhost
127.0.0.1 staging.<ourdomain>.com
次に、/ etc/hostsを次のように変更しました。
127.0.0.1 localhost.localdomain localhost
192.168.1.140 staging.<ourdomain>.com testserver
ローカルIPをサーバーIPに変更しましたが、まだ何もありません。 netstatは、staging..com行のhostsファイルからのIPを表示します。
::: 8000、0.0.0.0:8000、またはリモートクライアントが接続できるようにする順列でプロセスを実行するにはどうすればよいですか?
デフォルトはすべてのポートをリッスンします(ipv6 + ipv4)
0.0.0.0 = bind all ipv4
「0.0.0.0」でリッスンするように変更してみましたか?
server = SimpleXMLRPCServer(("0.0.0.0", 8000))
ファイアウォール?
service iptables stop
明らかに、そのように永遠に実行しないでください、しかし、ただテストするために...他のセキュリティ問題がないと仮定して。
その後、ポートを開くだけです。
クイックチェックリスト:netstat -lnの出力は、:: 8000でリスニングサービスを表示しますか?そうでない場合は、コードを変更して、すべてのインターフェイスまたは問題の特定のインターフェイスをリッスンします。
Iptablesは無効になっていますか?
同じサブネット上の別のホストからそのポートとIPに接続できますか?これにより、中間ファイアウォールや、nattedインバウンド接続に関するその他の問題が除外されます。
これはtcp接続であるため、接続が確立できない可能性もあります。これは、サーバーに戻るルートなどがない場合に発生する可能性がありますが、すでにインバウンド経由で接続している場合はほとんどありません。 ssh。