WSL2 nameserver 的冲突问题

2022-02-20 13:43:14 +08:00
 xQmQ

WSL2 Arch Linux ,需要用到 docker 。docker 是通过 genie 实现 systemctl 功能,然后安装的(不是安装的 Windows 的 docker desktop )

拉容器在更换清华源并执行apt-get update指令后会出现如下报错

Err:1 http://mirrors.tuna.tsinghua.edu.cn/ubuntu focal InRelease
  Temporary failure resolving 'mirrors.tuna.tsinghua.edu.cn'

查询 StackOverflow 以后,修改/etc/resolv.confnameserver 127.x.x.x的值为8.8.8.8,确实可以解决问题

问题是同时设置了 WSL2 访问 clash for Windows 来翻墙,修改了nameserver以后就失效了

export hostip=$(cat /etc/resolv.conf |grep -oP '(?<=nameserver\ ).*')
export https_proxy="http://${hostip}:7890"
export http_proxy="http://${hostip}:7890"

如何可以解决这个问题呢,换用 docker desktop 可行吗?(主要是不想在 Windows 上下载这种东西)

880 次点击
所在节点    Windows
4 条回复
coolan
2022-02-20 13:53:42 +08:00
nameserver 不是 DNS 服务器吗,你下面 export hostip 应该是宿主机 IP ,直接写原来的那个 127.x 的不就行了
xQmQ
2022-02-20 14:09:07 +08:00
@coolan WSL2 的机制是每次 Windows 重启,开启 WSL 时会重新生成一个虚拟适配器,ip 地址会发生改变,所以需要那个 export 取地址
dns00001
2022-02-20 14:11:17 +08:00
我 windows 用的 v2ray,开启允许局域网连接后,wsl2 里 export 的 hostip 用 win 网络连接的 ip 就好了。比如我的 windows ip 是 192.168.x.xxx,我在 wsl2 里只要 export https_proxy="http://192.168.x.xxx:xxxx"就行了,不用管 nameserver

PS:wsl2 的 Ubuntu 的 systemd 可以参照 https://forum.snapcraft.io/t/running-snaps-on-wsl2-insiders-only-for-now/13033 开启
xQmQ
2022-02-20 14:14:13 +08:00
@dns00001 直球破案了,直接改 docker 设置的 DNS ,算是共存了。也谢谢你的方案

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/835190

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX