WSLのネットワークをbridgedモードにすることで、WSLがネットワーク上は独立したPCとして見えるように設定する。
この設定で、外部(インターネット)からはWSLのIPアドレスでアクセスできるようになり、ホストPCのネットワークから分離する。
Hyper‑V マネージャー → WSL の VM → 設定 → ネットワークアダプター → MAC アドレス → 静的に設定
WSLにあるネットワークのMACアドレスを調べる。
$ ip a
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 5e:bb:f6:9e:ee:fa brd ff:ff:ff:ff:ff:ff
inet 192.168.0.10/24 brd 192.168.0.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
ルーターに、このMACアドレスに設定する固定IPアドレスを割り当てる。
ネットワークモードの設定を変更する。
.wslconfig
networkingMode=bridged
vmSwitch=WSL-Bridge
dnsTunneling=true
autoProxy=true
Hyper‑V マネージャー → 仮想スイッチマネージャー 新規作成 → 外部ネットワーク(物理 NIC選択)
「管理 OS にこのネットワークアダプターの共有を許可する」をチェック
HTTP, HTTPSの通信を自宅サーバー上に設定したWSLのIPアドレスへ向くように設定する。
Route53で適当なドメインを取得しておくこと。
ドメインを取得したら、Route53のホストゾーンからドメインが参照するIPアドレスをAレコードに設定する。
必要なら、サブドメイン(www.yourdomain など)もここに設定すること。
ここで設定するIPアドレスは、WSLのものではなく、ルーターに設定されているグローバルIPアドレスです。
一般的な家庭用の回線は、IPアドレスが変更される可能性があります。定期的にIPアドレスを更新しておく必要があります。
変更の有無にかかわらず、10分(更新時間は調整してください)おきに設定すればいいと思います。
IPアドレスを自動的に取得し、設定ファイルを作成、更新するスクリプト。
#!/bin/bash
HOSTED_ZONE_ID="<Route53ゾーンID>"
RECORD_NAME="変更したいドメイン名"
# 現在のグローバルIPアドレスを取得
GLOBAL_IP=$(curl -s ifconfig.me)
if [ -z "$GLOBAL_IP" ]; then
echo "Failed to get global IP"
exit 1
fi
# JSONの作成
cat << EOF > /tmp/record.json
{
"Changes": [{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "$RECORD_NAME",
"Type": "A",
"TTL": 60,
"ResourceRecords": [{"Value": "$GLOBAL_IP"}]
}
}]
}
EOF
# Route 53の更新
aws route53 change-resource-record-sets \
--hosted-zone-id "$HOSTED_ZONE_ID" \
--change-batch file:///tmp/record.json
echo "Route 53 updated with IP: $GLOBAL_IP"
このスクリプトを、cronなどで定期的に実行するように設定しておく。
# 必要なパッケージのインストール
$ sudo apt update
$ sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
# GPGキーのダウンロードと配置
$ curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
# リポジトリの追加
$ curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
# caddyのインストール
$ sudo apt update
$ sudo apt install -y caddy
# caddyの起動
$ sudo systemctl start caddy
# systemdで有効にする。
$ sudo systemctl enable --now caddy
caddyの設定のサンプル。
現在稼働中の enchanter.one の設定です。
/var/www 静的HTML/chat/uranau* 占いっぽいページの静的HTML/api/chat/uranau* 占いを取得するAPI (Ollamaへ)enchanter.one → www.enchanter.one へリダイレクト/etc/caddy/Caddyfile
chat.enchanter.one {
reverse_proxy localhost:3080
}
www.enchanter.one {
handle / {
root * /var/www
file_server
}
handle_path /chat/uranau* {
root * /var/www/chat/uranau
file_server
}
handle /api/chat/uranau* {
reverse_proxy localhost:3001
}
log {
output file /var/log/caddy/access.log {
roll_size 10mb
roll_keep 5
}
}
}
enchanter.one {
redir https://www.enchanter.one
}
Caddyの設定にドメイン名が書いてあれば、自動的にLet's Encryptで証明書発行を行い、設定が行われます。
ポート80, 443でインターネットからアクセスできるようになっていること。
外部ネットワークから、ルーターのIPアドレスや取得したドメイン名でアクセスする。
ルーター内のネットワークからIPアドレスやドメインにアクセスしても、接続できない場合があります。
その場合、スマートフォンなどの別なネットワークからアクセスすること(スマートフォンのWiFiをOFFにしておくこと)。
内部から接続する場合、hosts ファイルに以下の行を追加。
C:\Windows\System32\drivers\etc\hosts
<WSLのIPアドレス> <取得したドメイン>
サブドメインがある場合、それらのドメインについても設定すること。
トップページ