我使用 Windows 进行开发,并使用我机器上设置的 VPN 访问公司的资源。我主要使用它来访问公司的私人 git 存储库。
我最近开始在 Windows 上的 Ubuntu 上使用 Bash 进行开发,但在访问存储库时遇到了问题。
例如,当我连接到 VPN 并在 Windows 上使用 Git Bash 克隆存储库时,它工作正常。但是当我在 Windows 上的 Ubuntu 上的 Bash 中使用 git 时,它弹出一个错误:
fatal: unable to access 'https://link.to.the.repository.net/Project/Repository/': Could not resolve host: link.to.the.repository.net
有没有办法让 Windows 上的 Ubuntu 上的 Bash 访问这样的资源?
答案1
自动化步骤:https://gist.github.com/matthiassb/9c8162d2564777a70e3ae3cbee7d2e95
首次在 powershell 上运行:
Get-DnsClientServerAddress -AddressFamily IPv4 | Select-Object -ExpandPropert ServerAddresses
然后在 Windows 上使用ubuntu
或bash
命令运行 bash(取决于您的安装)
编辑/etc/resolv.conf
并将所有内容替换nameserver {ip}
为顶部生成的部分。
您现在应该可以恢复互联网和内联网了。删除第一行以使其永久生效,但请注意,如果您更改网络,它将不再更新。(也许先备份?)
答案2
对我来说,问题在于我的 VPN 有内部名称服务器。这些名称服务器存在于 Windows 计算机上,但未进入 Linux 子系统。修复步骤:
- 在 Windows 上运行 ipconfig /all。您的 VPN 连接应该有一个包含一个或多个 DNS 服务器的块。
- 打开 bash 并打开 /etc/resolv.conf
- 如果您的情况与我的情况类似,您将看到主互联网适配器的名称服务器,但看不到上述 VPN 适配器的名称服务器。只需在现有名称的基础上添加 VPN 的 DNS 名称(如果有必要,我将自己的名称添加到现有条目上方),保存文件,然后尝试再次访问存储库。
答案3
似乎没有名称服务器来解析主机名。在 Ubuntu bash 中,编辑文件 /etc/resolv.conf,使其包含:
nameserver X.Y.Z.W
我假设您使用的是 IPv4。上面的地址只是一个例子。您必须找出您的 ISP 正在使用的实际 DNS 地址或选择公共 DNS 服务器。如果您愿意,可以使用多个名称服务器。