外出(モバイルルータ使用)時の名前解決設定の自動切り替え - aktnk/til GitHub Wiki
解決したいこと
- ノートPCで外出時モバイルルータを使用した際、WSL2のUbuntuの名前解決ができない
現状
- 自宅環境ではローカルLAN(192.168.0.0/24)内の名前解決に専用DNSサーバを立ち上げ利用している
- ノートPCのOSはWindwos 11 professional
- ノートPCにはWSL2をインストールし、Ubuntu-20.04LTSを導入している
- WSL2上のUbuntuの
/etc/resol.conf
にはnameserver (専用DNSサーバのIPアドレス)
を設定している - モバイルルータのネットワークは192.168.179.0/24を設定している
名前解決ができない原因
/etc/resol.conf
にはnameserver (専用DNSサーバのIPアドレス)
を固定的に設定しているため、モバイルルータのネットワークに接続した際、アクセスできないDNSサーバに名前解決をしている
対策案
- モバイルルータのネットワークをローカルLANと同じ192.168.0.0/24に設定する
- WSL2 Ubuntu起動時に
/etc/resolv.conf
を適切なDNSサーバを参照するように書き換える
→ 対策2.を採用する
(理由)
- 自宅環境内でモバイルルータに接続して使用できるようにしたいため、対策1.は却下
対策内容
/usr/local/bin/set-resolv-conf
を配置#!/bin/bash /mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0//powershell.exe -Command "route print 0.0.0.0" | awk '{ if ($1 == "0.0.0.0") { print $3 }}' | sed -e 's/^/nameserver /' > /etc/resolv.conf
- set-resollv-confに実行権限を付与しておくこと
# chmod +x /usr/local/bin/set-resolv-conf
- set-resollv-confに実行権限を付与しておくこと
/etc/systemd/system/set-resolv-conf.service
を配置[Unit] Description=set resolv.conf After=network.target [Service] ExecStart=/usr/local/bin/set-resolv-conf [Install] WantedBy=multi-user.target
/etc/wsl.conf
でsystemd
が有効になっていること、resolvconfの生成をオフにしておくこと[boot] systemd=true [network] generateResolvConf=false
- set-resolv-confサービスが自動起動するように設定しておくこと
# systemctl enable set-resolv-conf
- 設定後、エラーが出ていないことを確認する
# systemctl status set-resolv-conf ● set-resolv-conf.service - set resolv.conf Loaded: loaded (/etc/systemd/system/set-resolv-conf.service; enabled; vendor preset: enabled) Active: inactive (dead) since Sat 2025-01-18 21:14:51 JST; 1h 2min ago Process: 396 ExecStart=/usr/local/bin/set-resolv-conf (code=exited, status=0/SUCCESS) Main PID: 396 (code=exited, status=0/SUCCESS) Jan 18 21:14:51 GBA5X1 systemd[1]: Started set resolv.conf. Jan 18 21:14:51 GBA5X1 systemd[1]: set-resolv-conf.service: Succeeded.
- 設定後、エラーが出ていないことを確認する
- 動作確認:下記2点を確認すること
- 自宅のローカルLAN接続した際、モバイルルータに接続した際、
/etc/resolv.conf
がデフォルトゲートウェイのIPアドレスになっていること - Ubuntu上から、
www.googole.co.jp
等の名前解決ができること
- 自宅のローカルLAN接続した際、モバイルルータに接続した際、