
昨日 2020 年 12 月 16 日午後 4 時まで正常に動作していた本番サーバーがあります。その後、着信 TCP 接続と、localhost 経由で接続しようとする接続を拒否し始めました。
サーバーは次の接続をすべてブロックします:
• MySQL
• Ping (クライアントからpingしたり、pingされたりすることはできませんが、Googleなどのサイトにpingすることはできます)
• Tracert
MySQL 接続が成功することもありますが、95% の確率で が発生します10060 timeout error
。サーバーは Web サイトと API をホストしており、どちらもリモートからアクセスできます。
私は次のことを試しました:
• ファイアウォールのオン/オフ
• サーバーの再起動
• 利用可能なすべてのアップデートの更新
• マルウェアのスキャン
• ポート 3306 がリッスンしていることの確認
• クライアントからサーバーへの ping
なぜこのようなことが起きたのか、私にはわかりません。ファイアウォールの問題ではないと思いますが、他に何か変わったことは思いつきません。誰もサーバーにログオンしておらず、通常の cron ジョブなどはネットワークに関連するものを変更しません。サーバー プロバイダーの問題でしょうか?
編集 ファイアウォールのログ記録を有効にしましたが、ドロップされた UDP パケットが多数表示されています。ただし、TCP 接続はすべて受信されています。調べてみると、RDP は TCP 経由なので、サーバーに RDP できる理由が説明できます。では、なぜサーバーが UDP パケットをドロップするのでしょうか?
答え1
正直に言うと、会話ブロックで何かをしようとするのは面倒なので、回答ブロックに切り替えます。
まだインストールしていない場合は、問題が発生しているサーバーに PowerShell 7.1 をダウンロードしてインストールしてください。
PowerShell (PWSH.EXE) で次のスクリプト ブロックを実行し、出力を報告します。
これにより、IP設定のテストが実行されます
$All_IPConfigs = Get-NetIPConfiguration | Where-Object {$null -ne $_.IPv4Address.IPAddress}
Foreach ($IPConfig in $All_IPConfigs)
{
Write-Host "###################################"
Write-Host "Testing interface $($IPConfig.InterfaceAlias)"
Write-Host "Testing ip $($IPConfig.IPv4Address.IPAddress)"
$Test_Self = $null
$Test_Self = Test-Connection -ComputerName $($IPConfig.IPv4Address.IPAddress) -Ping -Count 2 -Quiet -ErrorAction SilentlyContinue
Write-Host "[Can ping self?]: $($Test_Self)"
Foreach ($Gateay in $($IPConfig.IPv4DefaultGateway.NextHop))
{
Write-Host "Testing gateway $($Gateay)"
$Test_Gateway = $null
$Test_Gateway = Test-Connection -ComputerName $($Gateay) -Ping -Count 2 -Quiet -ErrorAction SilentlyContinue
Write-Host "[Can ping gateway?]: $($Test_Gateway)"
}
Foreach ($DNS_Server in $($IPConfig.DNSServer.ServerAddresses))
{
Write-Host "Testing DNS IP $($DNS_Server)"
$Test_DNS_Network = $null
$Test_DNS_Network = Test-NetConnection -ComputerName $DNS_Server -Port 53 -ErrorAction SilentlyContinue
$Test_Resolove_Self = $null
$Test_Resolove_Self = Resolve-DnsName -Name "$($env:computername)" -Server $DNS_Server -Type A -ErrorAction SilentlyContinue | Select-Object -First 1
$Test_Resolove_GMail = $null
$Test_Resolove_GMail = Resolve-DnsName -Name "gmail.com" -Server $DNS_Server -Type A -ErrorAction SilentlyContinue | Select-Object -First 1
Write-Host "[Can ping DNS server?]: $($Test_DNS_Network.PingSucceeded)"
Write-Host "[Can connect to DNS server TCP port 53?]: $($Test_DNS_Network.TcpTestSucceeded)"
Write-Host "[Can resolve self?]: $($Test_Resolove_Self.IPAddress)"
Write-Host "[Can resolve gmail?]: $($Test_Resolove_GMail.IPAddress)"
}
Write-Host "Testing Google DNS IP 8.8.8.8"
$Test_Google_DNS = $null
$Test_Google_DNS = Resolve-DnsName -Name "gmail.com" -Server "8.8.8.8" -Type A -ErrorAction SilentlyContinue | Select-Object -First 1
Write-Host "[Can resolve gmail via Google DNS?]: $($Test_Google_DNS.IPAddress)"
}
IP設定
Get-NetIPConfiguration
すべてのネットワークTCP接続
Get-NetTCPConnection
すべてのネットワークTCP接続
Get-NetTCPConnection
また、接続に失敗しているクライアントでも同じテストを実行してください (すべての TCP 接続を除く)。