コマンド一発でHTTP死活監視をだます方法

どんなHTTPリクエストにも「200 OK」を返す”なんちゃってWEBサーバー”をご紹介します。

といっても、ただのコマンドです。

なんちゃってWEBサーバーが何の役に立つのかというと、たとえばロードバランサーのヘルスチェックでHTTPリクエストの応答コードをチェックしている場合になんちゃってWEBサーバーで応答させる事があります。サーバープロセスが落ちているけれどロードバランサーの死活監視は成功させたい場合に役立つわけです。

というか、それ以外の場面で役に立った事はないです。

サーバーの準備が出来ていない場合などヘルスチェック的には生きているように見せたい場合のテクニックですね。

nc(netcat)で対応する

今回はncがインストールされている事を前提にしています。

ncはご存じの通り「-l」オプションでサーバーのように待ち受ける事が可能です。例として12345/tcpで待ち受ける場合は次のようにします。

nc -l 12345

これでTCPポート12345番で待ち受けます。ただし接続があったら切れてしまうので、WEBサーバーっぽく200 OKを返すようにする必要があります。

nc -l 12345 <<EOF
HTTP/1.0 200 OK

<html></html>
EOF

上記のコマンドを実行した状態で別の端末から接続すると以下のように表示されます。

$ curl http://localhost:12345
<html></html>
$

ncコマンドを実行した側は以下のように表示されます。オプションとして「-4(IPv4)」と「-v(冗長出力)」を付けています。

$ nc -4 -v -l 12345 <<EOF
HTTP/1.0 200 OK

<html></html>
EOF
GET / HTTP/1.1
Host: localhost:12345
User-Agent: curl/7.58.0
Accept: */*
$

この状態ですと接続する度に切断されてしまうのでループで回しましょう。次のようにします。

$ while :
do
nc -4 -v -l 12345 <<EOF
HTTP/1.0 200 OK

<html></html>
EOF
done

これで何度も連続で接続できます。

もっとこだわりたい方はレスポンスヘッダーに「Content-length」や「Server」など色々と付けたら良いかと思います。

最低限の動きでよければ掲載しているコマンドで十分です。

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)