У меня есть как проводное, так и 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
. Измените его соответствующим образом.
- Вы можете напрямую попробовать #5 ниже. Это шаг, который в конечном итоге привел меня к тому, что я смог
Запустить/перезапуститьвднуслуга
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
-
ip link # or ls /sys/class/net ip link set wlan0 up # where wlan0 is the device name
Убедитесь, что выподключен к Wi-Fi.
sudo iwctl device wlan0 show sudo iwctl station wlan0 show
Соединятьесли еще не подключен
sudo iwctl --passphrase mywifipassword station wlan0 connect MyWifiSsidName
Кроме того, откройте маршрутизатор и просмотрите подключенные устройства, чтобы убедиться, что вы подключены.
Чтобы включить автоматическое назначение IP-адреса,вручную включите встроенный DHCP-клиенткак описано в примечании вШаги подключения Wi-Fi.
sudo cat >> /etc/iwd/main.conf [General] EnableNetworkConfiguration=true
Этотбылшагчто наконец-то заставило меня это работать.
Проверьте системные журналы на предмет каких-либо
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
.