きっかけ#
自宅のネットワーク機器周りが散らかっていたのを重い腰を上げて配線や配置を整えたついでに
自宅サーバーのホスティング周りが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 certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
sudo snap set certbot trust-plugin-with-root=ok
sudo snap install certbot-dns-cloudflare
sudo 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-tos
Cloudflaredを使ったポート開放をしないサービス公開#
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared-linux-amd64.deb
sudo cloudflared login
cloudflared tunnel create private
sudo 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 install
sudo systemctl enable cloudflared
sudo systemctl start cloudflared
外出時にローカルを触るためのTailscaleクライアントの常駐#
適当にしたので叩いたコマンドだけ…
sudo tailscale set --advertise-exit-node --advertise-routes=192.168.1.0/24 --accept-dns=false
sudo tailscale up
感想#
前はサーバー上にlxcコンテナで動かしたubuntuでnextcloudやらリバースプロキシを動かしてルーティングしていたのでよくわからんことになってたのが整理できてよかった。当時の自分は何考えてたんだろうくらいの感想