LOADING
840 words
4 minutes
ローカル環境を整理した

きっかけ#

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

イメージ図#

Local Network

HGW#

DHCPを無効にした

Gateway#

Checkpoint V-80にOpenwrtをインストールした。
以下のプルリクエストがマージされてtagが打たれるまでは必要なパッケージを絞った自ビルドのイメージを焼いて使用。

Adguard Homeを使用するためにデフォルトのDNSサーバーのポートを54に変更。
lanインターフェースのDHCP Server Adveanced SettingsからDHCP-Optionsに6,<br-lan address>を定義(はlanインターフェースのアドレスに合わせて入力)。
これをしないと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>

以下のコマンドを使用

Terminal window
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を使ったポート開放をしないサービス公開#

Terminal window
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の設定をする
Terminal window
sudo cloudflared tunnel route dns private a.domain.com
  • Cloudflaredを動かす
Terminal window
sudo cloudflared service install
sudo systemctl enable cloudflared
sudo systemctl start cloudflared

外出時にローカルを触るためのTailscaleクライアントの常駐#

適当にしたので叩いたコマンドだけ…

Terminal window
sudo tailscale set --advertise-exit-node --advertise-routes=192.168.1.0/24 --accept-dns=false
sudo tailscale up

感想#

前はサーバー上にlxcコンテナで動かしたubuntuでnextcloudやらリバースプロキシを動かしてルーティングしていたのでよくわからんことになってたのが整理できてよかった。
当時の自分は何考えてたんだろうくらいの感想

ローカル環境を整理した
/posts/2025-06-02-my-network/
Author
なね
Published at
2025-06-02
License
CC BY-NC-SA 4.0

Some information may be outdated