archlinux: Wi-Fi подключен, но нет интернета, хотя интернет работает через провод

archlinux: Wi-Fi подключен, но нет интернета, хотя интернет работает через провод

У меня есть как проводное, так и Wi-Fi соединение.

Проводной интернет работает, а интернет через Wi-Fi не работает

При подключении по кабелю и Wi-Fi вывод 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

Если используется только Wi-Fi, то пингуется 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

Также при использовании Wi-Fi:

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

Во-первых, если вы пингуете google.com, ваш ПК пытается преобразовать имя в 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 routeили ip r(синонимы). В случае отсутствия маршрута по умолчанию добавьте его через ip route add default via 192.168.0.1. После этого попробуйте ping google.comеще раз.

Редактировать: чтобы настроить маршруты, включая маршрут по умолчанию, на постоянной основе, в зависимости от версии systemd, используйте netctlили systemd-networkd. На моих ПК я нахожу netctlболее стабильным настройку маршрутов, чем systemd-networkd.

решение2

Тот же случай, что и у меня, где мое устройство (Dell сБродком BCM43228где я вручную установилb43-прошивка) подключен к (беспроводному) Wi-Fi (так как он виден в подключенных устройствах маршрутизатора), но не имеет доступа к интернету (не может ping). Я используювдн /iwctlкак в настоящее время предписано вДокумент по установке Arch Linux.

Вот что стоит попробовать:

  • Примечания:
    • Вы можете напрямую попробовать #5 ниже. Это шаг, который в конечном итоге привел меня к тому, что я смогping google.com
    • Приведенные ниже команды предполагают wlan0, что имя устройства отображается в ip link. Измените его соответствующим образом.
  1. Запустить/перезапуститьвднуслуга

    sudo systemctl start iwd.service
    

    Установите, если его еще нет. Либо используйте проводное подключение Ethernet к маршрутизатору, либо подключите телефон Android (с доступом к Интернету) и включите "Модем USB", чтобы он действовал как проводное подключение. Если это невозможно в среде Arch Linux, вы можете попробовать использовать установщик Arch (загрузочный диск), затем mountжесткий диск mount --mkdir /dev/sda2 /mnt/sda2и chrootв него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-клиенткак описано в примечании вШаги подключения Wi-Fi.

    sudo cat >> /etc/iwd/main.conf 
    [General]
    EnableNetworkConfiguration=true
    
  5. Этотбылшагчто наконец-то заставило меня это работать.

    Проверьте системные журналы на предмет каких-либо errorили failсвязанных с DNS вещей. Мой показал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

Для отладки полезны следующие команды: dmesgи journalctl.

Связанный контент