1、具体报错:
看起来是window主机的子系统ubuntu svn客户端无法访问到window主机的svn的服务端。
2、问题:
window主机安装子系统ubuntu,ubuntu是可以直接访问外网,但是ubuntu是不能访问window主机的服务,比如svn的server,这让人比较费解。
3、大概原因:
经过长达几个小时的找资料,问题解决了,原因应该是Ubuntu访问window无法dns域名解析,就无法得知访问的ip和端口。
4、解决方案:
直接新增和修改.wslconfig,WLS本身就是网络代理转发的工具,为了管理window主机和子系统的网络。
5、具体配置方式:
在 WSL 上运行的所有已安装分发版中使用 .wslconfig 配置全局设置。
- 默认情况下,.wslconfig 文件不存在。必须创建它并将其存储在您的目录中才能应用这些配置设置。
%UserProfile%
- 用于在作为 WSL 2 版本运行的所有已安装 Linux 发行版中全局配置设置。
- 只能用于 WSL 2 运行的发行版。作为 WSL 1 运行的分发版不会受到此配置的影响,因为它们不作为虚拟机运行。
- 要访问您的目录,请在 PowerShell 中使用 访问您的主目录(通常是您的用户配置文件),或者您可以打开 Windows 文件资源管理器并在地址栏中输入。目录路径应如下所示: .
%UserProfile%
cd ~
C:\Users\<UserName>
%UserProfile%
C:\Users\<UserName>\.wslconfig
WSL 将检测这些文件是否存在,读取内容,并在每次启动 WSL 时自动应用配置设置。如果文件缺失或格式不正确(标记格式不正确),WSL 将继续正常启动,而不应用配置设置。
6、.wslconfig文件内容如下:
配置完成后,在window终端执行:wsl -shutdowm 和 wsl,目的是重启下wsl服务和Ubuntu子系统。
重点:此配置:网络模式为镜像模式非NAT模式,官网建议用镜像模式,可以解决很多网络疑难杂症。
# Settings apply across all Linux distros running on WSL 2
[wsl2]# Limits VM memory to use no more than 4 GB, this can be set as whole numbers using GB or MB
memory=4GB # Sets the VM to use two virtual processors
processors=4# Sets additional kernel parameters, in this case enabling older Linux base images such as Centos 6
kernelCommandLine = vsyscall=emulate# Sets amount of swap storage space to 8GB, default is 25% of available RAM
swap=8GB# Disable page reporting so WSL retains all allocated memory claimed from Windows and releases none back when free
pageReporting=false# Turn on default connection to bind WSL 2 localhost to Windows localhost. Setting is ignored when networkingMode=mirrored
localhostforwarding=true# Disables nested virtualization
nestedVirtualization=false# Turns on output console showing contents of dmesg when opening a WSL 2 distro for debugging
debugConsole=true# If the value is mirrored then this turns on mirrored networking mode. Default or unrecognized strings result in NAT networking.
# 如果值为 mirrored,则会启用镜像网络模式。 默认或无法识别的字符串会生成 NAT 网络。
networkingMode=mirrored#Setting this to true allows the Windows Firewall rules, as well as rules specific to Hyper-V traffic, to filter WSL network traffic.
firewall=true#更改将 DNS 请求从 WSL 代理到 Windows 的方式
dnsTunneling=true
# Enable experimental features
[experimental]
sparseVhd=true
hostAddressLoopback=true
7、配置完成后功能正常:
8、如果还无法解决
采取B方案,svn服务器的链接改为ip地址开头也就是说HuijiongLi改为127.0.0.1:443即可访问;子系统和window主机都是走这个地址进行分发。想一劳永逸的话,在svn服务器上面也可以改为ip模式。这样生成的svn的url就是无缝连接的了。例如:https://127.0.0.1/svn/office/project/cmaketest/trunk