2016-09-01 15 views
0

ソケットに奇妙な問題がある。私はポート25565でこのIPに接続しようとしています。この特定のIP/Serverのpingを理解するためです。私はちょうどローカルでうまく動作し、私に間違いなくpingを示すコードを持っています、それはまたnginx/PHP CGIを実行しているOVH Kimsufiボックスでうまくいきます。それでもMicrosoft Azureでは、10060(タイムアウト)エラーコードとこのメッセージを表示しません:A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.。そして、この1つのIPに対してのみ。別のIP(37.59.51.122)でも問題ありません。私はこのアプリを3つの異なる地域、EU西、米国西と米国東に運営しています。それはそれらのどれにも働かない。Azure App Servicesで異常なソケットタイムアウトが発生するが、ローカルで正常に動作する

<?php 

ini_set('display_errors', 1); 
ini_set('display_startup_errors', 1); 
error_reporting(E_ALL); 

function ping($host, $port) 
{ 
    $time_start = round(microtime(true) * 1000); 
    $fp = fsockopen("tcp://" . $host, $port, $errno, $errstr, 1); 
    if ($fp) { 
     $time_end = round(microtime(true) * 1000); 
     fclose($fp); 
     $time = $time_end - $time_start; 
     return $time; 
    } else { 
     return $errno . ":" . $errstr; 
    } 
} 

echo ping("149.56.81.67", 25565); 

誰もがこの問題を引き起こしている可能性がありますか?これを修正するために私が変更する必要がある紺色の設定がありますか? これをAzureで簡単にデバッグする方法はありますか? 私はAzureにはとても新しいので、私はそれに非常に精通していません。

編集:私は多くの異なる地域で(日本から西米へ)試してみましたが、ファイアウォールやIPブラックリストに関する設定は見つかりませんでした。私は本当にここに迷っています。

答えて

0

私はこの問題を発見しました。私はこのスクリプトをループで実行し、5回連続してpingを実行しました。私はそれ以来、要求の間に500msの遅延を追加しました。私はもはやタイムアウトがありません。

私は悪魔の助けなしにこれを理解できませんでした。私は、tcpping.exeが、実際の接続と同じにもかかわらず、私のPHPスクリプトよりも頻繁に動作することを理解しました。唯一の違いはリクエスト間の遅延です。 OVHのddos保護ファイアウォールが接続をブロックしていました。

0

最後の行をポート53(GoogleのパブリックDNSサーバ)でping 8.8.8.8に変更すると、すでに指摘したように期待通りに機能します。

私はtcpping host:portを行う場合は、クーズーのDebugConsole(https://{appname}.scm.azurewebsites.net/DebugConsole)から、私はあなたのリモート調子ファイアウォールやパケット損失のいずれかを参照してください。

D:\home\site\wwwroot>tcpping 149.56.81.67:25565 

Connection attempt failed: Connection timed out. 
Connection attempt failed: Connection timed out. 
Connected to 149.56.81.67:25565, time taken: 78ms 
Connected to 149.56.81.67:25565, time taken: 86ms 
Complete: 2/4 successfull attempts (50%). Average success time: 82ms 

このため、タイムアウトが表示されます。

実際にパケットが消失しているか、マシンが単にSYNを送り返していないか(代わりにRSTを送信している可能性があります)、リモートサーバーでを実行してみてください。

+0

ありがとうございます。 DebugConsoleについて教えてくれてありがとうございました。 – kukelekuuk00

関連する問題