在WSL中为Windows主机配置域名
在 WSL 中添加一个能解析到 Windows IP 的域名(方向:从 WSL 访问 Windows)
问题描述
众所周知,WSL 默认使用 NAT 进行互联网访问,但是,如果我想要访问 Windows 的 IP,怎么做呢?巨硬给出的方案如下:
1 | |
没毛病奥,能直接获取到 IP 地址,但是有说法说,在重启电脑或者重启 WSL 之后,WSL 网关可能会重新分配一个 IP,那对于需要固定 IP 的应用、配置文件而言,这是一个不稳定因素。
解决方案
核心思路:动态获取这个 IP 地址,然后在
/etc/hosts文件中设置一个域名,映射到这个 IP。
根据巨硬的文档,/etc/wsl.conf 配置文件中有一个 command 的选项,并且是以 root 的权限执行的。那么路线就非常明确了,写一个脚本修改 /etc/hosts 文件,然后在 /etc/wsl.conf 的配置文件中加上这个脚本的执行。
修改 /etc/hosts 文件的脚本如下,我放在了 /99-init-wsl 中
1 | |
/etc/wsl.conf 修改如下:
1 | |
这能干啥?
费这老大劲能干啥呢?其实还是能做不少事情的,例如
系统代理设置
因为众所周知的原因,访问众所周知的网站需要代理。一般我们会在 Windows 上安装一个代理工具,并且这些代理工具基本能支持在局域网上共享(这里的局域网也是包含虚拟网卡的)。因此,可以在 WSL 中设置一个命令,一键开关代理。例如:
1 | |
将上面的代码放到 .bashrc 这类会被默认加载的文件,就可以使用 proxy/unproy 命令一键开关代理了。
PS: 还可以写一个 rule 文件,告诉 Agent 有这样的指令
docker pull 代理配置
虽然 docker 有很多的镜像站,但是同步是否及时是个问题,而 docker 守护进程不使用系统的代理变量。不过没关系,我们已经有了固定的访问地址,直接在守护进程的配置文件中加上代理的配置就行。
1 | |