自宅サーバを公開するという現実
自宅サーバを立てている人なら共感していただけそうだなと思うのですが、「外からアクセスできるようにする」ためには数々の面倒なハードルがあると思います。
自宅サーバ初心者なりの試行錯誤をまとめてみました。間違った認識していたり、こうすれば良いのに...という箇所があるかと思います。その時はそっとコメントで教えていただけると嬉しいです...!
まず一旦やってみた方法
- ルーターでポート転送を設定して、外部のTCP 80/443 をサーバに流す。
- ISPから割り当てられたグローバルIPをDNSに登録。
- 家庭回線だとIPが変わるので、DDNSクライアントで最新のIPを常に更新。(※IP固定化する術がある回線もあります)
- Let's Encryptなどを組み合わせて証明書更新を自動化。
運用して直面した痛み・辛み
- ポート開放した途端に来る大量のスキャンログ
- 海外からの通信や、有名どころのパスへのアクセス...
- fail2banなどで対処しても「攻撃され続ける前提」になる。(ログ監視系に心理的なコストを払い続ける)
- DDNS更新が止まると終わる
- ルーターの設定や二重NATで泣かされた経験。(正直これはよく分からなかった...くらいには苦い思い出)
このあたりの運用を楽しめるところが醍醐味説はあるのですが、セキュリティに関してはクラウド事業者様へお任せすることにしました。
Cloudflareが自分にとってはすごく有難かったのです...
2. Cloudflare Tunnel の仕組み
公式ドキュメントの説明
Cloudflare Tunnel provides you with a secure way to connect your resources to Cloudflare without a publicly routable IP address.
A lightweight daemon (cloudflared
) creates outbound-only connections to Cloudflare’s global network.
(Cloudflare Docs)
雑に解説
- サーバ上で cloudflared を動かす。
- これは 外向き通信だけ を使ってCloudflareのエッジに接続。
- 外部ユーザーは一度Cloudflareにアクセス → トンネルを経由して自宅サーバへ。
特徴
- ルーターでポートを開ける必要がない。
- グローバルIPが変わっても問題なし。
- 外から見えるのはCloudflareのエッジだけで、外部からはCloudflareのエッジしか見えないため、自宅サーバのIPやポートに直接アクセスされない
つまり「玄関を開けて待つ」のではなく「自分からCloudflareに裏口を作っておき、そこ経由で安全に迎える」仕組みです(例え合ってるのかな)
3. IP変動とDDNS不要の理由
「IPが変わったら繋がらなくなるんじゃね?」という懸念について整理すると次のようになります。
グローバルIPが変わる場合
- 家庭回線では、プロバイダから割り当てられる グローバルIPが数日〜数週間で変わることがあります。
- 従来の方法だとDDNSサービスを使ってその都度DNSを更新しないと外から繋がらなくなります。
- しかしCloudflare Tunnelでは、サーバ側の
cloudflared
が自分からCloudflareに接続しているので、外部のユーザーは常にCloudflareのエッジにアクセスするだけ。 - グローバルIPが変わっても
cloudflared
が再接続すればそのまま利用可能です。
結果:DDNS不要。グローバルIP変動を気にする必要なし。(歓喜)
プライベートIPが変わる場合
- 一方で、サーバ自身の プライベートIP(例:192.168.0.10) が変わってしまうと話は別です。
- ここが変わると、トンネルは生きていてもアプリに辿り着けなくなります。
重要:サーバには必ず固定プライベートIPを割り当てる。
ラズパイやNUCを運用するなら、DHCP任せではなく手動で固定化。
4. セキュリティ面
Cloudflare Tunnel を使うと、「外から見えるのは Cloudflare のエッジだけ」になるので、直接自宅サーバにアクセスされることはありません。
加えて、Cloudflare 側のセキュリティ機能をそのまま享受できるのも大きなメリットです。ここでは 無料枠でどこまで対応してくれるのか を公式ドキュメントをベースに整理します。
4.1 Always-on DDoS Protection
Cloudflare は全プランにおいて DDoS 攻撃防御が含まれています。
“Detect and mitigate distributed denial-of-service (DDoS) attacks automatically.
Available on all plans
Cloudflare automatically detects and mitigates distributed denial-of-service (DDoS) attacks via our autonomous DDoS systems.”
(Cloudflare DDoS Docs)
ポイント
- 無料プランでも L3〜L7 の DDoS 防御は標準提供されます。
- 攻撃はまず Cloudflare のエッジで吸収される。
- そのため「ISP回線を潰される(大量トラフィックで自宅回線が落ちる)」リスクは大幅に減ります
4.2 WAF(Web Application Firewall)
Cloudflare の WAF は基本機能が無料プランにも含まれています。
“Get automatic protection from vulnerabilities and the flexibility to create custom rules.
Available on all plans
The Cloudflare Web Application Firewall (Cloudflare WAF) checks incoming web and API requests and filters undesired traffic based on sets of rules called rulesets. The matching engine that powers the WAF rules supports the wirefilter syntax using the Rules language.”
(Cloudflare WAF Docs)
ポイント
- SQL Injection, XSS など代表的な攻撃パターンに対しては、Cloudflare Free Managed Ruleset により基本的なブロックが可能(そう)
4.3 TLS/HTTPS 自動化
Cloudflare は Universal SSL を全プランで無料提供しています。
“Encrypt your web traffic to prevent data theft and other tampering.
Available on all plans
Through Universal SSL, Cloudflare is the first Internet performance and security company to offer free SSL/TLS protection. Cloudflare SSL/TLS also provides a number of other features to meet your encryption requirements and certificate management needs. Refer to Get started for more.”
(Cloudflare SSL/TLS Docs)
ポイント
- 自動で証明書が発行・更新される。
- 自宅サーバ側で certbot を動かす必要がなくなる。
- 無料プランでも 証明書の有効期限管理から解放(歓喜)
4.4 Bot Management(無料枠での範囲)
Cloudflare には高度な有料 Bot Management がありますが、無料プランでも簡易的な検出が可能です。
“Identify and mitigate automated traffic to protect your domain from bad bots.
Available on all plans”
(Cloudflare Bot Management Docs)
ポイント
- 既知の悪性クローラやスパムボットを自動で検出し、計算量の高いチャレンジを返してブロックしてくれるそうです
4.5 Rate Limiting(有料機能)
Cloudflare にはリクエスト数を制御できる Rate Limiting 機能がありますが、これは無料枠には含まれません。
“Rate limiting is available on paid plans.”
(Cloudflare Rate Limiting Docs)
補足
- 「Rate Limiting」(リクエスト制御ルール)は無料プランでも利用可能(追加課金なし)だが、設定可能なのは1ルールのみ
- より柔軟なルールを複数設定したい場合は、有料プラン(Pro/Business)へのアップグレードが必要
5. まとめ
個人的には自分で試行錯誤したうえで、クラウド事業者様のサービスを触ることで「それを良い感じにしてくれるの?!」という驚きや喜び、学びを深く感じられるような気がしています。(今回とか正にそれでした)
自宅サーバの楽しみ方は人それぞれですが、クラウド事業者様のすごさを実感しつつ、甘えるところはしっかり甘えながら引き続き楽しい自宅サーバライフを過ごせるように精進します!