我无法从WSL2子系统访问我的家庭网络。我已经安装了Ubuntu。
anirban@Desktop:/mnt/g/BASH_WORKSPACE$ lsb_release -a No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.2 LTS
Release: 18.04
Codename: bionic
anirban@Desktop:/mnt/g/BASH_WORKSPACE$ uname -r 4.19.57-microsoft-standard
WSL2中的eth0具有以下配置:
anirban@Desktop:/mnt/g/BASH_WORKSPACE$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.20.213.230 netmask 255.255.240.0 broadcast 172.20.223.255
inet6 fe80::215:5dff:fecf:39a5 prefixlen 64 scopeid 0x20<link>
ether 00:15:5d:cf:39:a5 txqueuelen 1000 (Ethernet)
RX packets 100 bytes 10544 (10.5 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 12 bytes 936 (936.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
anirban@Desktop:/mnt/g/BASH_WORKSPACE$ ip addr show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: bond0: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 92:ce:02:d5:ab:9b brd ff:ff:ff:ff:ff:ff
3: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether ce:ec:a2:b5:b2:b0 brd ff:ff:ff:ff:ff:ff
4: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:15:5d:cf:39:a5 brd ff:ff:ff:ff:ff:ff
inet 172.20.213.230/20 brd 172.20.223.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::215:5dff:fecf:39a5/64 scope link
valid_lft forever preferred_lft forever
5: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
link/sit 0.0.0.0 brd 0.0.0.0
来自WSL2的路由没有默认路由。因此,我通过eth0添加了默认路由。
anirban@Desktop:/mnt/g/BASH_WORKSPACE$ ip route
172.20.208.0/20 dev eth0 proto kernel scope link src 172.20.213.230
anirban@Desktop:/mnt/g/BASH_WORKSPACE$ sudo ip route add default dev eth0 anirban@Desktop:/mnt/g/BASH_WORKSPACE$ ip route default dev eth0 scope link
172.20.208.0/20 dev eth0 proto kernel scope link src 172.20.213.230
Windows中的vEthernet具有默认配置,令人惊讶的是它不在WSL的子网之内。
PS C:\Users\tukai> ipconfig
Windows IP Configuration
Ethernet adapter Ethernet:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
Ethernet adapter VirtualBox Host-Only Network #3:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::61be:a6f4:e22d:e985%54
IPv4 Address. . . . . . . . . . . : 192.168.99.1
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
Wireless LAN adapter Local Area Connection* 1:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
Wireless LAN adapter Local Area Connection* 2:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
Wireless LAN adapter Wi-Fi:
Connection-specific DNS Suffix . :
IPv6 Address. . . . . . . . . . . : 2a02:8108:45c0:263c::67fd
IPv6 Address. . . . . . . . . . . : 2a02:8108:45c0:263c:a847:a373:36ab:c040
Temporary IPv6 Address. . . . . . : 2a02:8108:45c0:263c:18a:4a6a:fb9a:3018
Link-local IPv6 Address . . . . . : fe80::a847:a373:36ab:c040%11
IPv4 Address. . . . . . . . . . . : 192.168.0.96
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : fe80::f2af:85ff:fea5:c6e6%11
192.168.0.1
Ethernet adapter Bluetooth Network Connection:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
Ethernet adapter vEthernet (WSL):
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::41b:9492:2bea:cf6c%49
IPv4 Address. . . . . . . . . . . : 172.20.208.1
Subnet Mask . . . . . . . . . . . : 255.255.240.0
Default Gateway . . . . . . . . . :
有人可能会出什么问题吗? 注意:我的wifi显然可以访问Internet,并且我正在尝试从WSL2子系统ping 8.8.8.8以检查Internet连接。我正在使用Windows Preview版本10.0.18956
谢谢
答案 0 :(得分:3)
今天早些时候我正在寻找有关此的信息,并发现了一个写得很好的要点,其中包含您需要的确切说明 - https://gist.github.com/pyther/b7c03579a5ea55fe431561b502ec1ba8
它包含有关如何在连接到 VPN 或断开 VPN 时进行这些网络更改的说明。
答案 1 :(得分:2)
我花了几天时间才找到类似问题的答案... :-/ 为这个人点赞:https://github.com/microsoft/WSL/issues/5286#issuecomment-638739724
在我完成了关于 /etc/resolv.conf 的所有事情后,它仍然无法正常工作,所以我的问题是关于我在笔记本电脑驱动器上打开的压缩。
修复是解压缩临时文件夹(除了包含 WSL 包的文件夹):
wsl --shutdown
compact /u %TEMP% /i /Q
答案 2 :(得分:1)
当您连接到Cisco Anyconnect WSL2时,它将NAT到最高优先级的以太网适配器。 Windows应用商店中更新版本的Cisco Anyconnect似乎可以解决此问题。但是,它不支持双因素身份验证。因此,要纠正此问题,我将以下脚本用于PowerShell。
步骤:
Get-NetIPInterface -InterfaceAlias "vEthernet (WSL)" | Set-NetIPInterface -InterfaceMetric 1 $VPNInterfaceName = "Ethernet 3" Get-NetIPInterface -InterfaceAlias $VPNInterfaceName | Set-NetIPInterface -InterfaceMetric 5001
一旦完成,请打开WSL,除非您有其他原因导致我未曾遇到的其他问题,否则您应该一切顺利。我希望这会有所帮助,因为我们花了几天的时间来寻找原因。
编辑:确保在Windows终端中,如果将“ Ubunut / WSL”设置为默认配置文件,请在启动WSL之前运行脚本。因此,如果默认为Ubuntu / WSL,则将默认设置为PowerShell,或切换到PowerShell,运行命令wsl --shutdown,然后执行上述脚本,然后重新打开Ubuntu / WSL。
答案 3 :(得分:0)
我能做的就是提供一个可行的例子。请注意,在我的配置中,WSL2适配器(eth0)与默认网关位于不同的子网上,但是当接口没有替代时,它将仍使用默认网关。网关IP是Windows主机提供的虚拟分接接口。因此,它需要匹配Windows主机的vEthernet(WSL)接口的IP。
WSL2重击:
$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.31.121.217 netmask 255.255.240.0 broadcast 172.31.127.255
inet6 fe80::215:5dff:fe1c:7078 prefixlen 64 scopeid 0x20<link>
ether 00:15:5d:1c:70:78 txqueuelen 1000 (Ethernet)
RX packets 247038 bytes 264215849 (264.2 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 81867 bytes 5902917 (5.9 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
$ ip route
default via 172.31.112.1 dev eth0
172.31.112.0/20 dev eth0 proto kernel scope link src 172.31.121.217
从主机(cmd.exe)
Ethernet adapter vEthernet (WSL):
Connection-specific DNS Suffix . :
IPv4 Address. . . . . . . . . . . : 172.31.112.1
Subnet Mask . . . . . . . . . . . : 255.255.240.0
Default Gateway . . . . . . . . . :
在路由表中,您向子网添加了默认网关,而不是特定的IP。尝试更改它以匹配vEthernet接口:
172.20.208.1
但是,如果现在和最终发行候选版之间发生某些变化,我将担心与WSL2网络混乱。我会考虑安装新映像并在文件之间移动。或者,您可以将cygwin用作Bash文件系统,用于存储您希望WSL访问的文件。这将保护您免受遭受损坏的WSL图像的伤害,具体取决于您参与预览的时间长短。如果您走这条路线,这会有所帮助,https://medium.com/@rcoe67/tips-for-seamlessly-using-cygwin-and-wsl-in-windows-10-9ed1a72ace6c
答案 4 :(得分:0)
我遇到了同样的问题,并且可以通过运行以下命令使它再次运行(我从其他地方获得此命令,对不起,我不记得在哪里了):
在wsl
修复网络问题,删除自动生成的文件
[root@PC-NAME user]# rm /etc/resolv.conf || true
[root@PC-NAME user]# rm /etc/wsl.conf || true
启用更改/etc/resolv.conf,在Windows驱动器上启用扩展属性
[root@PC-NAME user]# cat <<EOF > /etc/wsl.conf
[network]
generateResolvConf = false
[automount]
enabled = true
options = "metadata"
mountFsTab = false
EOF
使用Google名称服务器进行DNS解析
[root@PC-NAME user]# cat <<EOF > /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
EOF
退出Linux WSL
在Windows中,以cmd作为管理员:
wsl --shutdown
netsh winsock reset
netsh int ip reset all
netsh winhttp reset proxy
ipconfig /flushdns
Windows搜索>网络重置
答案 5 :(得分:0)
这为我解决了:
sudo rm /etc/resolv.conf
sudo bash -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf'
sudo bash -c 'echo "[network]" > /etc/wsl.conf'
sudo bash -c 'echo "generateResolvConf = false" >> /etc/wsl.conf'
sudo chattr +i /etc/resolv.conf