絶望的な回線環境でWebサーバを建てる
概要
今回の記事はレイテンシを重視する人を対象としていません。
今回は以下のような回線環境でWebサーバを構築します。
- CGNAT (キャリアグレードNAT)
- IPv4 のみのインターネット接続
終わってるだろ
必要なもの
- Webサーバを建てるに耐えうる性能を持つコンピュータ
- Cloudflare (無料アカウントでOK)
- nginx (または他のWebサーバソフトウェア)
- ufw (ファイアウォール)
- Teredo (IPv6 to IPv4 トンネリング) ← 肝
- 独自ドメイン
検証環境
- Ubuntu 18.04 LTS
- ufw 0.36
- nginx 1.14.0
- Miredo 1.2.6
手順
以下を飛ばします。
- Cloudflare のアカウント作成やドメイン登録
- サーバのセットアップ
ufw を設定する (すでに設定されている場合は飛ばしてください。)
{{- code -}}
また、個人的にここで SSH ポート を開放するのはおすすめしません。もし開放する場合は、接続元を限定して設定してください。
Miredo をインストールする
{{- code -}}
インストールするだけで動きます。しあわせ~
Miredo で手に入れた IPv6 アドレス を確認し、Cloudflare に登録する
{{- code -}}
的な感じでやればいいです。
コマンドの実行結果を Cloudflare に AAAA レコード として登録してください。
(「プロキシ済み」表示となっていることを確認してください。)nginx のバーチャルホストを登録
以下は例です。{{- code -}}
{{- code -}}
IPv6 の 80 番ポートを Listen していることを確認してください。
設定ファイルを書き込んだらsudo nginx -s reload
で反映させてください。以上で完成です。楽しんでください。
その他
なぜ Cloudflare を使うのですか?
- 生の IPv6 アドレス を隠すため。
- IPv4 だけでしか接続できない人がアクセスしても閲覧できるようにするため。
何か間違いを見つけたら?
GitHub の Issues や Pull requests よりお願いします。