自動更新WSL內網DNS Server設定

自動更新WSL內網DNS Server設定

在公司電腦上一直有個 WSL 的問題,就是這個 WSL 無法連線網路。請 Network 同事幫忙測試後,原來是 WSL 抓不到內網的 DNS Server,造成它無法連線上網。但設好之後,如果重開 WSL 你會發現 /etc/resolv.conf 的設定每次都會還原。我有回報 WSL Issue #9074,但感覺開發團隊不怎麼理此問題。

cat /etc/resolv.conf
# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
# [network]
# generateResolvConf = false
nameserver 172.21.192.1

很搞笑,註解還寫怎麼解,但其實沒作用。

最近因工作需求,突然 WSL 用的兇,每次都要手動去改一次,實在有夠麻煩。這此寫了一段非常簡單的 Shell Script 來解決此問題。

vim UpdateIntranetDnsServer.sh
#!/bin/sh

if ! grep -q '^nameserver 8.8.8.8$' /etc/resolv.conf; then
    echo 'nameserver 8.8.8.8' >> /etc/resolv.conf
fi
if ! grep -q '^nameserver 8.8.4.4$' /etc/resolv.conf; then
    echo 'nameserver 8.8.4.4' >> /etc/resolv.conf
fi

用 Google DNS 假裝一下內網 DNS Server。

sudo sh UpdateIntranetDnsServer.sh
# 測試一下,或改用 `ping` 也行。 
sudo apt update

最後看你要不要用 chmod u+x ???.sh 加個執行權限,就自己決定吧。

沒有留言:

張貼留言

感謝您的留言,如果我的文章你喜歡或對你有幫助,按個「讚」或「分享」它,我會很高興的。