😎
自作プログラム centrifuge の紹介
centrifuge の紹介
前回 rdgw を紹介した際にチョロっと使用していた自作プログラム centrifuge を紹介したいと思います。
何をするためのもの?
HTTP のメソッド毎に接続先を変更します。
たとえば、 GET と POST で接続サーバーを変更する際に利用します。
なんの役にも立たないように思えますが、 SSTP や rdgw との接続の振り分けに役立ちます。
最新版では、 TLS 接続のみになりますが、 IP アドレス1つとポート1つを、接続してきたドメイン名で各サーバーに振り分けることが出来ます。
使い方
以下のようにすることで、 TCP 10080番で待ち受け、以下のように振り分けるようになります。
- GET メソッドは host2 の 80番
- POST メソッドは TLS 接続(verify は行いません)で host3 の 443番
- それ以外は host1 の 80番
$ centrifuge -p 0.0.0.0:10080 host1:80 GET:host2:80 POST:host3:443/ssl
また、 Let's encrypt の証明書で TLS 接続(以下の例では "test.example.com" ドメイン)を待ち受けることも出来ます。この際、 TCP 10080番ポートがドメイン所有の確認用に使われます。
$ centrifuge -n test.example.com -p 0.0.0.0:10443/ssl \
host1:80 GET:host2:80 POST:host3:443/ssl
複数のドメインを1つのポートで待ち受けることも出来ます。
$ centrifuge -n test1.example.com -n test2.example.com -n test3.example.com \
-p 0.0.0.0:10443/ssl \
host1:80 GET:host2:80 POST:host3:443/ssl
TLS 接続の場合のみになりますが、各ドメインごとに振り分けることも可能です。該当のドメインが見つからなかった場合には、ドメイン省略時の設定が使用されます。
$ centrifuge -n test1.example.com -n test2.example.com -n test3.example.com \
-p 0.0.0.0:10443/ssl host1:80 \
test1.example.com::host4:80 \
test2.example.com:GET:host2:80 \
test3.example.com:POST:host3:443/ssl
メソッド名に "GET" と "GE" などが指定されると、一致した最も文字列が長いものが優先されます。
まとめ
本当に紹介するだけになってしまいました。すみません。
ちなみにこのコード、こんな簡単なのに、北極に埋められているんですよね。
Discussion