archlinux:wifi 已连接但没有互联网,而互联网可以使用有线

archlinux:wifi 已连接但没有互联网,而互联网可以使用有线

我有有线和 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

/etc/resolv.conf首先,如果您 p​​ing google.com,您的 PC 会尝试通过给出的名称服务器(末尾没有 e!)将名称解析为 IP 地址。

其次,如果这不是 superuser.com 上的拼写错误,则您的名称服务器指向 193.168.0.1,而不是 192.168.0.1。因此,它无法解析名称。相反,您的 PC 会尝试访问 193.168.0.1,但找不到它。(即使 193.168.0.1 是您的名称服务器,它与 192.168.0.0/255.255.248.0 不在同一网络上。它不必在同一网络上,但必须设置路由以了解到名称服务器的路由)。

ip route show然后,通过、ip route或(同义词)检查您的路由表ip r。如果没有默认路由,请通过 添加一条ip route add default via 192.168.0.1。之后,再试ping google.com一次。

编辑:要永久配置包括默认路由在内的路由,具体取决于您的 systemd 版本,请使用netctlsystemd-networkd。在我的 PC 上,我发现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. 启用接口

    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 客户端如注释中所述无线网络连接步骤

    sudo cat >> /etc/iwd/main.conf 
    [General]
    EnableNetworkConfiguration=true
    
  5. 这最终使它对我有用。

    检查系统日志中是否存在errorfailDNS 相关的内容。我的日志显示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

相关内容