archlinux:wifi已連接,但沒有互聯網,因為互聯網可以與有線連接

archlinux:wifi已連接,但沒有互聯網,因為互聯網可以與有線連接

我有有線和無線網路連線。

有線連接可以上網,而wifi不能上網

如果連接到有線和 WiFi,以下是 ifconfig 的輸出。

root@gauranga /home/simha # ifconfig 
enp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.5.113  netmask 255.255.248.0  broadcast 192.168.7.255
        inet6 fe80::66f9:5aa3:5449:bbf5  prefixlen 64  scopeid 0x20<link>
        ether 68:f7:28:71:8d:be  txqueuelen 1000  (Ethernet)
        RX packets 736130  bytes 710984014 (678.0 MiB)
        RX errors 0  dropped 181  overruns 0  frame 0
        TX packets 278415  bytes 23924104 (22.8 MiB)
        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 1  (Local Loopback)
        RX packets 1428  bytes 369189 (360.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1428  bytes 369189 (360.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlp3s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.5.245  netmask 255.255.248.0  broadcast 192.168.7.255
        inet6 fe80::14ac:2256:c091:2660  prefixlen 64  scopeid 0x20<link>
        ether 2e:dc:cd:0d:1f:82  txqueuelen 1000  (Ethernet)
        RX packets 1237969  bytes 135361481 (129.0 MiB)
        RX errors 0  dropped 4059  overruns 0  frame 0
        TX packets 18074  bytes 2059915 (1.9 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

如果僅使用 wifi,它會 ping 到 192.168.0.1

$ ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=10.7 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=7.82 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=12.0 ms
64 bytes from 192.168.0.1: icmp_seq=4 ttl=64 time=7.14 ms

而 ping 到 google.com 卻沒有顯示任何內容。它並沒有更進一步。

/etc/resolv.conf 是

nameserver 192.168.0.1

另外,使用 wifi 時:

simha@gauranga ~ % ip route show
default via 192.168.0.1 dev wlp3s0  proto static  metric 600 
192.168.0.0/21 dev wlp3s0  proto kernel  scope link  src 192.168.5.245  metric 600 

當有線時:

simha@gauranga ~ % ip route show
default via 192.168.0.1 dev enp2s0  proto static  metric 100 
192.168.0.0/21 dev enp2s0  proto kernel  scope link  src 192.168.5.113  metric 100 

我無法理解這個問題。

這一切都是在我升級 archlinux 之後發生的。

答案1

首先,如果您 p​​ing google.com,您的 PC 會嘗試透過中給出的名稱伺服器將該名稱解析為 IP 位址/etc/resolv.conf(末尾不帶 e!)。

其次,如果 superuser.com 上沒有拼字錯誤,您的名稱伺服器指向 193.168.0.1,不是 192.168.0.1。因此,它無法解析該名稱。相反,您的電腦嘗試存取 193.168.0.1,但找不到。 (即使193.168.0.1 是您的名稱伺服器,它與 192.168.0.0/255.255.248.0 不在同一網路上。它不必位於同一網路上,但必須設定路由才能知道到名稱伺服器的路由)。

ip route show然後,透過,ip routeip r(同義詞)檢查您的路由表。如果沒有預設路由,請透過 新增一條ip route add default via 192.168.0.1。之後,再試ping google.com一次。

編輯:根據您的 systemd 版本,永久配置包括預設路由在內的路由,使用netctlsystemd-networkd。在我的電腦上,我發現netctl設定路由比systemd-networkd.

答案2

與我的情況相同,我的設備(戴爾配備博通 BCM43228我手動安裝的地方b43-韌體)已連接到(無線)Wi-Fi(因為它在路由器的連接設備中可見),但它無法存取互聯網(不能ping)。我在用國際婦女節 /iwctl按照目前的指示Arch Linux安裝文檔

一些值得嘗試的事情:

  • 筆記:
    • 你可以直接嘗試下面的#5。這一步最終使我能夠ping google.com
    • 下面的命令假定wlan0為設備名稱,如 所示ip link。相應地進行調整。
  1. 啟動/重新啟動國際婦女節服務

    sudo systemctl start iwd.service
    

    如果尚不存在,請安裝。使用有線乙太網路連接到路由器或連接 Android 手機(可存取網路)並啟用「數據機 USB」以充當有線連接。如果在 Arch Linux 環境中無法實現,您可以嘗試使用 Arch 安裝程式(可啟動磁碟機),然後使用mount硬碟mount --mkdir /dev/sda2 /mnt/sda2chroot進入該安裝程式arch-chroot /mnt/sda2

    pacman -S iwd
    
  2. 啟用介面up

    ip link  # or ls /sys/class/net
    ip link set wlan0 up  # where wlan0 is the device name
    
  3. 確保你是連接到 Wi-Fi

    sudo iwctl device wlan0 show
    sudo iwctl station wlan0 show
    

    連接如果尚未連接

    sudo iwctl --passphrase mywifipassword station wlan0 connect MyWifiSsidName
    

    另外,訪問路由器並查看已連接的設備以確保已連接。

  4. 若要啟用自動 IP 位址分配,手動啟用內建 DHCP 用戶端如註釋中所述Wi-Fi 連線步驟

    sudo cat >> /etc/iwd/main.conf 
    [General]
    EnableNetworkConfiguration=true
    
  5. 這最終使它為我工作。

    檢查系統日誌中是否有與 DNS 相關的任何內容errorfail我的顯示WARNING: src/resolve.c:resolve_systemd_set_dns() condition !systemd_state.is_ready failed

    journalctl
    journalctl | grep -i dns
    

    檢查是否有錯誤。我的顯示Failed to set global data: Unit dbus-org.freedesktop.resolve1.service not found.

    systemd-resolve --status
    

    重新啟動服務

    sudo systemctl restart systemd-resolved
    

    經過這一步,我能夠成功ping google.com

對於調試,一些有用的命令是dmesgjournalctl

相關內容