ポート開放なしでWebサイトとVPNサーバーを立てる(Cloudflare Tunnel と Tailscale)

ゴミNUROさんが勝手にデュアルスタックからMAP-E方式に変更したので、ポート開放無しでサーバーを立てざるを得なくなりました。(NUROはせっかくDS-LiteじゃなくてMAP-E導入したのにポート開放機能は”純正ONU”の機能で潰されています)

仕方がないのでこのWebサイト(tatuiyo.xyz)とVPNサーバーをポート開放無しで立てます。WebサイトはCloudflare Tunnel、VPNはTailscaleを使いました。


Cloudflare Tunnelは、クライアントからのリクエストを全てCloudflareのサーバーを経由させて、自分のサーバーで動かすデーモン”Cloudflared”を通してホストに転送することでポート開放無しでもサーバーを公開することができます。なのでトンネル。

今普通にポート開放して運用している Apache2+Wordpress を、Cloudflare Tunnel を使って外部公開するように構成を変えます。(ProxmoxのLXCコンテナで運用中)
公開するドメインはCloudflareレジストラで管理しているとします。(ちな原価なので最安)

DNSレコードは全部消しておく

トンネル用のコンテナを立てた(Ubuntu 22.04)
もちろんCloudflaredはWebサーバーにアクセスできるセグメントにいる必要があります

Cloudflareのダッシュボードから、Zero Trust -> Networks -> Tunnels でCreate a tunnel を選択

Debianを選んで下のコマンドを実行

横のPublic Hostnameを選択して、Webサーバーのローカルのアドレスとドメインを関連付ける

この設定後、勝手にCloudflareのどこかのアドレスとCNAMEしてるDNSレコードが追加されてました

ここからはWebサーバーの設定

Cloudflare Tunnel はHTTPを設定するだけで勝手にHTTPSも有効になるので、今まで使ってたLet’s Encryptの設定は消す

変なリダイレクトルールが残ってるとリダイレクトループ(503のやつ)になったので消す

これでリダイレクトループは解消されたのに、なぜかWordpressの管理画面に入ろうとするとまた発生

管理画面でSSLを強制するコードをwp-config.phpに追加します。ただし require_once(ABSPATH . ‘wp-settings.php’); より前に追加してください。後に追加するとリダイレクトループは解消するのに「このページにアクセスする権限がありません」と表示される謎バグが発生します。

https://ja.wordpress.org/support/article/administration-over-ssl/
https://wp-technique.com/wp-access-authority/

これで大丈夫なはず


VPNっぽいことはCloudflare Tunnelを使ってできるらしいですが、Tailscaleのほうが簡単そうhttps://zenn.dev/jumpman0038/articles/c2717fa990d489

UDPホールパンチングという技術でNAT越えしているらしい

あらかじめ登録しておく
https://tailscale.com/

とりあえずコンテナを立てた(Ubuntu 22.04)

LXCコンテナ内でTailscaleを使うには、ホスト側で設定をいじる必要があるようです

https://tailscale.com/kb/1130/lxc-unprivileged

インストールはこれ通りに行う
https://tailscale.com/kb/1187/install-ubuntu-2204

URLが出てくるのでログインする

Tailscaleは初めて使いましたが、どれがホストでクライアントでみたいな区別はなくて複数台の端末が相互に繋がる感じらしい。
exit-nodeを設定すると、他のノードがそのノードを踏み台にしてインターネットに出られるように設定でき、advertise-routesでサブネットを指定すると、そのノードのサブネットに他のノードからアクセスできるようです。

advertise-routesを使うために以下のコマンドを実行する
https://tailscale.com/kb/1019/subnets?tab=linux#enable-ip-forwarding

advertise-routesで自分のサブネットを指定して、exit-nodeを有効にして接続

tailscaleのMachinesのところから、advertise-routesとexit-nodeを有効にしたノードのEdit route settingsをクリックしてチェックボックスを入れる

できた

Exit nodeを経由するかどうかは各ノードで選べるみたいです。Androidの携帯回線から入ってみると、サーバーのノードのサブネットにいる機器にアクセスできて、exit nodeを指定したらちゃんとサーバーのIPでアクセスされてたので動作確認OK

ただしTailscaleに接続するとAndroidのプライベートDNSが使えなくなりました。多分MagicDNSとの兼ね合いのせいです

おすすめ

1件の返信

  1. チョウ より:

    我这边也是map-e的nuro光,使用环境是通过楽天モバイル开テザリング,用外出时mt3000路由器的中继模式接上网络后,通过自宅的安装在openwrt的tailscale,rdp安装在nas中的windows虚拟机时发现download速度只有200kb/s,上传回去却有3mb/s的速度。
    使用netbird的话能到下行600kb/s和上行3mb/s的速度。

    想问下您这边用tailscale也有类似速度过慢的问题嘛?

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です