天天看點

WSL無法通路網絡的解決辦法

作者:xiaoyutab

今天打開WSL後,突然遇到wsl無法通路網絡的問題,具體解決方案如下:

wsl,Windows下的linux子系統,作用為在windows下直接體驗Linux的快捷操作;此處以wsl v2作為示例說明(因為我裝的就是wsl v2)
  1. 檢視 /etc/resolv.conf
$ cat /etc/resolv.conf
# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:
# [network]
# generateResolvConf = false
nameserver 172.17.0.1           

以上說明表示此檔案由WSL自動生成,是以我們需要先關閉此檔案的生成,然後再重新進行配置

PS:nameserver 表示的為DNS位址,此問題表示為DNS解析異常
  1. 關閉wsl自動生成 /etc/resolv.conf 檔案的功能
# 因原文表示的為配置資訊,是以此處直接使用cat進行檢視以便複制效驗
$ cat /etc/wsl.conf
[network]
generateResolvConf = false           
PS:有些機器因配置不同和以上說明有些差別,隻要保證有這兩行即可,并非要求一定要一樣
  1. 重新開機/關閉 wsl
# 此處為管理者運作的Windows PowerShell
PS C:\WINDOWS\system32> wsl --shutdown
PS C:\WINDOWS\system32>           
  1. 重新配置 /etc/resolv.conf
$ cat /etc/resolv.conf
nameserver 223.5.5.5
nameserver 223.6.6.6
# PS:此處為DNS解析位址,可以根據當地的網絡進行适配性配置           

然後就可以進行聯網通路了

ping報錯問題

有時候,我們會遇到wsl中無法ping的問題(特指wsl2),如下:

$ ping baidu.com
ping: socket: Operation not permitted           

這是因為權限問題,可以先使用sudo進行測試一下,如下:

$ sudo ping baidu.com
PING baidu.com (110.242.68.66) 56(84) bytes of data.
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=1 ttl=44 time=14.1 ms
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=2 ttl=44 time=13.3 ms
^C
--- baidu.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 13.314/13.693/14.073/0.379 ms           

倒此,原理清晰了,因為普通使用者執行ping指令沒有權限,是以我們要進行授予權限;

但是具體是什麼權限還不清楚,經過一番查找,得知:

ping指令在運作中采用了ICMP協定,需要發送ICMP封包。

但是隻有root使用者才能建立ICMP封包。而正常情況下,ping指令的權限應為 -rwsr-xr-x,即帶有suid的檔案,一旦該權限被修改,則普通使用者無法正常使用該指令。

是以我們需要給ping指令授予suid權限,即執行以下指令即可

$ sudo chmod u+s /bin/ping
$ ping baidu.com
PING baidu.com (110.242.68.66) 56(84) bytes of data.
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=1 ttl=44 time=13.3 ms
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=2 ttl=44 time=12.9 ms
^C
--- baidu.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 12.921/13.117/13.313/0.196 ms           

至此,配置完成

PS:此處作為問題備份,以便下次遇到後好再次查找修複

繼續閱讀