求助linux.do大佬,当WSL配置中networkingMode=mirrored时,如何访问WSL中的oneapi?

具体情况是这样的:
我在win11的WSL里的ubuntu20.04中用docker部署了gpt_academic客户端,同时,为了方便使用各种API,我在用户文件夹新建了.wslconfig文件,并写入配置如下:
[wsl2]
networkingMode=mirrored
autoProxy=true
dnsTunneling=true

通过这种方式可以很方便的在win11中使用gpt_academic客户端里配置的各种API,直接使用win11系统代理,访问速度非常快。

为了更加灵活的接入更多API,我又在WSL中用docker命令成功部署了one-api(根据oneapi github项目站点的说明部署的,未更改任何设置),但由于.wslconfig配置文件中networkingMode=mirrored,导致我无法在win11下的浏览器地址栏输入localhost:3000访问wsl下用docker部署的oneapi,请问这样的情况如何解决?

实际上,我可以把.wslconfig文件中的networkingMode配置项改成其它形式就能正常访问oneapi了,但这样就很不方便了,我希望仍然保留.wslconfig文件中的networkingMode=mirrored,但又能够在win11的浏览器地址栏通过localhost:3000访问wsl 中用docker部署的oneapi,这样的要求如何实现呢?

常规话题快问快答

4 个赞

感觉可以通过iptables/nftables修改docker转发规则,但是WSL的高级配置好像还有
localhostForwarding选项,实验性feature还有ignoredPorts跟hostAddressLoopback等配置项,可能可以试试

在.wslconfig设置localhostForwarding=true后,重启wsl后提示如下:
wsl: 使用镜像网络模式时,wsl2.localhostForwarding 设置无效。

在.wslconfig设置localhostForwarding=true后,重启wsl后提示如下:
.wslconfig:5 中的未知密钥 ‘wsl2.hostAddressLoopback’

在.wslconfig设置ignoredPorts=3000,仍然在win11的浏览器地址栏用localhost:3000或127.0.0.1:3000打不开oneapi

仍然感谢大佬回复给的建议。谢谢阁下。

我自己也没试过,具体这几项怎么配置还得自己查文档研究。但你这问题到搜索引擎一搜也很多人有类似的情况啊,看到的普遍回答是修改对应容器的配置
/etc/docker/daemon.json

{
“iptables”: false
}