※ 現在なぜssh接続しないとHTTPリクエストがタイムアウトするのか
根本的な原因がわかっておりません
ご意見やアドバイスよろしくお願い致しますm(__)m
動作させた環境
クライアント
- MacBookPro Elcaptian
サーバ
- Amazon Linux AMI 2015.09
- Java8
- Tomcat8
- MySQL 5.6
httpd
前提
サーバ環境
Amazon Linux上にJava8, Tomcat8, MySQLをインストールし
落としてきた製品版Javaアプリ(以下、アプリ)を
/usr/share/tomcat8/webapps/
に配置しています
(Tomcat8, MySQLはデーモンを立ち上げていることとします)
他にもアプリを動作させるために幾つかパッケージをインストールしています。
アプリはwarファイルで配布されています
接続
サーバ接続する際はVPN経由でssh接続を行っています
なのでサーバもプライベートネットワークのものとして扱っています
ファイアーウォール
ssh(22) / Tomcat(8080)
プライベートネットワーク内IPからのインバウンドのみ許可しています
障害(と言うか不明点
題名にも有りますが、
ssh接続しないとHTTPリクエストがタイムアウトします
※ ただし一度でもssh接続すれば
ssh接続を切ったとしてもHTTPリクエストがタイムアウトすることはありません
再現方法
- Webページにアクセス(繋がらない?
- sshでサーバに接続
- Webページにアクセス(繋がる!!
- Wifiを切る
- ssh接続をせず再度Webページにアクセス(繋がらない!?
調査途中結果
調査にあたって、パケットとログを監視しました
パケット
tcpdump
コマンドを使ってパケットがアプリに渡ってくるか監視
$ sudo tcpdump -i eth0 port 8080
ログ
Tomcatのログファイルをtail -f
コマンドで監視
$ sudo tail -f /var/logs/tomcat8/....log
結果
HTTPリクエストがタイムアウトする時
パケットもTomcatのログにも足跡が残っていて
正常にTomcatまではアクセスしていることが分かりました
なので、アプリ側で制御しているという所までは理解することが出来ました
そこに加えてssh接続済みのクライアントのネットワークを一度切断し
再度HTTPリクエストを送るとタイムアウトすることから
クライアント側に何らかの情報が?
ssh接続情報をキャッシュさせてたが、ネットワークを切ったことので情報が消えた?
でもHTTPリクエストが着ているのだからレスポンスは返せるよね?
んー?? ←イマココ
他には展開されたwarファイルを確認してみたが、
それっぽいところは見当たらず
(アプリ側のフィルターがあるんじゃないかと推測したのだが…
という現状になっております
何か進捗があり次第追記していこうと思います
冒頭でも記載しましたが
もし心当たりやアドバイスがありましたら是非よろしくお願い致します!!