最近、Chromeで「ERR_CONNECTION_REFUSED」が出てアクセスすることが出来ないサイト(強震モニタ)がありました
で、結局何が原因だったん?
結果としては強震モニタのAPIを叩いていたサーバーがローカルネットワーク上に存在したことが原因でした。
強震モニタの仕様上、一つのIPからすでに接続が確立されていた場合はほかの接続を拒否するようだったのでChromeで「ERR_CONNECTION_REFUSED」が吐かれてしまったようです。
サーバー側のAPIを叩いているサービスをdisableしたらアクセス出来るようになりました。
原因を特定するために試したこと
- ping (pingは通った)
- curl (こちらはconnection_refusedを吐かれた)
- 他Windows端末からのアクセス (同じようにERR_CONNECTION_REFUSED)
- 他Android端末からのアクセス (こちらはなぜかアクセス出来た。サーバーと同じLinux系統のOSだから?)
- キャッシュの削除
- proxyを通してのアクセス (アクセスできた)
- コマンドプロンプトで"netsh winsock reset catalog"の実行 (結局意味なかった)
- モデムの再起動 (効果なし)
- メインルーターの再起動 (効果なし)
- サブルーターの再起動 (効果あり)
- Windowsのモバイルホットスポット機能を使用してのAndroid端末からのアクセス (こちらはCONNECTION_REFUSEDでアクセスできず)
- ESETでプロトコルフィルタリング対象外に設定 (意味なかった)
解決までの流れ
ある日強震モニタにアクセスしようとするが接続拒否でアクセスできず。そこで、接続できないWindows端末からpingを打ってみたところ、pingはできた。が、curlはChromeと同じaccess refusedを吐かれる。
使っている端末が悪いのでは?と思い、"netsh winsock reset"などをしてみるが一向に改善せず。
そこでほかのWindows端末からアクセスしてみるが全く同じエラー。
Android端末からアクセスしてみるとアクセス出来たため、Windowsが悪いのではという推測をしました。これが沼にはまった原因です。
試しにproxyを使ってみたらアクセスすることができたので、[端末]<-->[自宅で使用しているネットワーク]の間で何かしらの障害が発生しているのではということで、Windowsのファイアウォール関係、セキュリティソフトの設定などを変更してみたが治らず。
仕方なく、モデムとメインルーターを再起動してみたが治らず。この時点で心が折れて諦めていました。
数日後、サブルーターのバージョンアップの作業をした際に再起動があったので、ダメ元で試しに強震モニタにアクセスしてみました。
するとアクセスすることができたので、サブルーターに接続している機器一覧を見たところ原因を特定することが出来ました。
自宅に置いてあるサーバーに接続先として登録してあるSSIDとパスはサブルーターのものだけで、メインルーターは登録していなかったため、このサーバーが原因だということがわかりました。
サブルーター再起動時にサーバーがサブルーターに接続、APIを叩けるようになるまでに5分ほどかかっていたため、その5分間のみはWindows端末から強震モニタにアクセスできるようになっている状態でした。
そこで、サーバーのAPIを叩いているサービスを無効化してみたところ、無事アクセスできるようになった、というのが今回の解決までの流れです。
最後に
語彙力がないためとても読みづらい文章になってしまったかと思います。
そこだけは見逃していただけると幸いです。
このページにアクセスしてきた方にとっては的外れな内容となってしまったかもしれませんが、お役に立てたら幸いです。
コメント