きっかけ
自宅のネットワーク機器周りが散らかっていたのを重い腰を上げて配線や配置を整えたついでに
自宅サーバーのホスティング周りがlxcやらなんやらで混沌としていてネットワーク周りが面倒くさかったので整えた。
イメージ図

HGW
DHCPを無効にした
Gateway
Checkpoint V-80にOpenwrtをインストールした。
以下のプルリクエストがマージされてtagが打たれるまでは必要なパッケージを絞った自ビルドのイメージを焼いて使用。
Adguard Homeを使用するためにデフォルトのDNSサーバーのポートを54に変更。
lanインターフェースのDHCP Server Adveanced SettingsからDHCP-Optionsに6,<br-lan address>を定義(
これをしないとbr-lanに接続している機器がdnsサーバーを見つけられない。
AdguardのDNS設定からプライベートリバースDNSサーバーに127.0.0.1:54を登録して有効化。
お好みでWireguardを突っ込んで経由させたりした。
Wifi
途中調子が悪かったりしてセットアップに苦戦した。
スイッチを[“Manual”,“AP”]にしてAPとして使用。
Server
ホストしたいサービスを雑にdockgeで管理して運用。今回は割愛。
Proxy Server
以下の役割を持つ
ホストしているサービスにドメインを踏んでアクセスするための振り分け
1については、Gatewayのdnsサーバーで特定のドメインに対するアクセス先を上書きしてローカルネットワーク接続時はローカルを参照するようにしている。
(ローカル外の時は同一のドメインを踏んだときにCloudflare Tunneling経由でアクセスできるようになっている)
このときにローカル内の有線接続の機器同士が2.5Gbpsでリンクするように配線をした。
nginxのコンフィグは特に変わったものでもないので割愛。
証明書を取得するためのCertbot
.config/cloudflare.iniにcloudflareのTokenを入力。
dns_cloudflare_api_token=<token>以下のコマンドを使用
sudo snap install --classic certbotsudo ln -s /snap/bin/certbot /usr/bin/certbotsudo snap set certbot trust-plugin-with-root=oksudo snap install certbot-dns-cloudflaresudo certbot certonly \ --dns-cloudflare \ --dns-cloudflare-credentials .config/cloudflare.ini \ --dns-cloudflare-propagation-seconds 60 \ --server https://acme-v02.api.letsencrypt.org/directory \ -d domain \ -d *.domain \ -m main@address \ -n --agree-tosCloudflaredを使ったポート開放をしないサービス公開
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.debsudo dpkg -i cloudflared-linux-amd64.deb
sudo cloudflared logincloudflared tunnel create privatesudo mv /root/.cloudflared/ /etc/cloudflared- Cloudflaredで公開するサービスを設定する
sudo vim /etc/cloudflared/config.yml
tunnel: <Tunnel-UUID>credentials-file: /etc/cloudflared/ <Tunnel-UUID>.json
ingress: - hostname: a.domain.com service: http://192.168.1.3:9999 - service: http_status:404公開するサービスを増やすには- service: http_status:404より上にhostnameとserviceを追加すれば良い。
- DNSの設定をする
sudo cloudflared tunnel route dns private a.domain.com- Cloudflaredを動かす
sudo cloudflared service installsudo systemctl enable cloudflaredsudo systemctl start cloudflared外出時にローカルを触るためのTailscaleクライアントの常駐
適当にしたので叩いたコマンドだけ…
sudo tailscale set --advertise-exit-node --advertise-routes=192.168.1.0/24 --accept-dns=falsesudo tailscale up感想
前はサーバー上にlxcコンテナで動かしたubuntuでnextcloudやらリバースプロキシを動かしてルーティングしていたのでよくわからんことになってたのが整理できてよかった。
当時の自分は何考えてたんだろうくらいの感想
Some information may be outdated