KUSANAGIでHTTP/3 QUICを試す

KUSANAGIはHTTP/3に対応したNginxとQuicに対応させたOpenSSLをバンドルしているということで試してみたときの覚書。
参考: KUSANAGI 9 が対応した HTTP/3 とは - KUSANAGI Tech Column

環境: ConoHa VPS メモリ8G/CPU6コア、KUSANAGI Version 9.4.12-1.el9


Nginxを1.25に切り替え

公式ページを参考にしながらkusanagiコマンドを実行する。
参考: KUSANAGI 9 バージョンアップ情報 9.3.0-1 - 超高速CMS実行環境 KUSANAGI

# kusanagi nginx --use nginx125
# kusanagi nginx --update-conf

確認
# nginx -V

# cd /etc/opt/kusanagi/nginx/
# less conf.d/ssl_listen.inc

firewalldで443/UDPが登録されている確認。
# systemctl status firewalld
# firewall-cmd --list-all

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: cockpit dhcpv6-client http https ssh
  ports: 443/udp 60000/tcp

443/udpが登録されていた。
KUSANAGIが登録してくれたんだと思う。

UDPで待ち受けしているポート一覧表示(ssコマンドにuオプションで実行)。
# ss -anu

ちなみにTCPでの待ち受けポートはtオプションで実行する。
# ss -ant


クライアントから443/UDPの疎通確認

ConoHaのコントロールパネルでセキュリティグループを変更してないから、まだ443/udpで通信できないはず。

ChromeのDevToolsのNetworkタブでProtocolを確認する。

cURLでも確認してみた。
PS:> curl --head -v --http3 https://test.hoge.co.jp/

* using HTTP/2
* [HTTP/2] [1] OPENED stream for https://test.hoge.co.jp/
* [HTTP/2] [1] [:method: HEAD]
* [HTTP/2] [1] [:scheme: https]
* [HTTP/2] [1] [:authority: test.hoge.co.jp]
* [HTTP/2] [1] [:path: /]
* [HTTP/2] [1] [user-agent: curl/8.6.0]
* [HTTP/2] [1] [accept: */*]

http3が使えるgoogle.comで確認してみた。
PS:> curl --head -v --http3 https://www.google.com/

* using HTTP/3
* [HTTP/3] [0] OPENED stream for https://www.google.com/
* [HTTP/3] [0] [:method: HEAD]
* [HTTP/3] [0] [:scheme: https]
* [HTTP/3] [0] [:authority: www.google.com]
* [HTTP/3] [0] [:path: /]
* [HTTP/3] [0] [user-agent: curl/8.6.0]
* [HTTP/3] [0] [accept: */*]

今度はConoHaのコントロールパネルで443/UDPをIN方向で許可するセキュリティグループを作成して仮想マシンに追加する。

ChromeのDevToolsのNetworkタブでProtocolを確認する。
h3で通信できた。

cURLでも確認する。
PS:> curl --head -v --http3 https://test.hoge.co.jp/

* using HTTP/3
* [HTTP/3] [0] OPENED stream for https://test.hoge.co.jp/
* [HTTP/3] [0] [:method: HEAD]
* [HTTP/3] [0] [:scheme: https]
* [HTTP/3] [0] [:authority: test.hoge.co.jp]
* [HTTP/3] [0] [:path: /]
* [HTTP/3] [0] [user-agent: curl/8.6.0]
* [HTTP/3] [0] [accept: */*]

http3での通信を確認。
ただ本番環境で利用するかは迷うところ。


【関連記事】