V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xQmQ
V2EX  ›  Windows

WSL2 nameserver 的冲突问题

  •  
  •   xQmQ · 2022-02-20 13:43:14 +08:00 · 842 次点击
    这是一个创建于 1009 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 上下载这种东西)

    4 条回复    2022-02-20 14:14:13 +08:00
    coolan
        1
    coolan  
       2022-02-20 13:53:42 +08:00 via Android
    nameserver 不是 DNS 服务器吗,你下面 export hostip 应该是宿主机 IP ,直接写原来的那个 127.x 的不就行了
    xQmQ
        2
    xQmQ  
    OP
       2022-02-20 14:09:07 +08:00
    @coolan WSL2 的机制是每次 Windows 重启,开启 WSL 时会重新生成一个虚拟适配器,ip 地址会发生改变,所以需要那个 export 取地址
    dns00001
        3
    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
        4
    xQmQ  
    OP
       2022-02-20 14:14:13 +08:00
    @dns00001 直球破案了,直接改 docker 设置的 DNS ,算是共存了。也谢谢你的方案
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1268 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 88ms · UTC 18:06 · PVG 02:06 · LAX 10:06 · JFK 13:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.