Вопрос или проблема
Давайте сразу к делу.
Я использую Raspberry Pi 3 с последней версией Raspbian (Pixel) в качестве роутера/точки доступа WiFi.
У меня есть 3 беспроводных интерфейса:
- встроенный WiFi интерфейс (brcmfmac)
- TP-Link WN722 для 2.4Ghz WiFi-AP (пока не работает) (ath9k_htc)
- Comfast CF-912AC (rtl88112au)
Назначение каждого интерфейса:
- wlan0 => 5Ghz daemon hostapd
- wlan1 => связь с роутером (см.
wpa_supplicant
в файлеinterfaces
) - wlan2 => 2.4Ghz daemon hostapd (не функционирует)
смотрите внизу для дополнительной информации
Проблема:
Эта проблема часто возникала у меня с Raspberry Pi
Я просто не могу поднять интерфейс wlan0
и wlan2
, и wlan2
не реагирует на настройки, указанные в /etc/network/interfaces
.
Я пробовал различные команды для поднятия этих интерфейсов, но ни одна не работает:
$ sudo ifdown wlan0
ifdown: интерфейс wlan0 не настроен
$ sudo ifup wlan0
RTNETLINK отвечает: файл уже существует
Не удалось поднять wlan0.
$ sudo ifdown wlan2
ifdown: интерфейс wlan2 не настроен
$ sudo ifup wlan2
Игнорирование неизвестного интерфейса wlan2=wlan2.
и с wlan0
и wlan2
в состоянии down
, видимым из ip addr
`sudo ip link set wlan0 up`
`sudo ip link set wlan2 up`
что не приносит успеха в поднятии этих интерфейсов (подтверждено состояние down с помощью инструмента ip
).
Как это произошло:
Примечание: ранее все работало, хотя я никогда не мог поднять свой адаптер tp-link WiFi, ath9k_htc, поэтому оставил его выключенным
-
Я был занят настройкой моего Raspberry Pi для запуска второго daemon hostapd на
wlan2
(что я бы решил позже – проблема с драйвером):- скопировал рабочий конфиг hostapd и модифицировал его для 2.4Ghz, сохранил в директорию
/etc/hostapd
с уникальным именем.
- скопировал рабочий конфиг hostapd и модифицировал его для 2.4Ghz, сохранил в директорию
-
Я использовал
dnsmasq
в качестве dhcp-сервера, гдеdhcpcd
был отключен и остановлен:- Я настроил
/etc/dnsmasq.conf
также слушать интерфейсwlan2
, добавив IP для прослушивания на192.168.4.254
(не уверен, нужно ли это)
- Я настроил
-
Последний разредактировал
/etc/default/hostapd.conf
и добавил второй конфигhostapd
с разделением пробелами, упомянутым здесь -
Наконец, вызвал перезапуск для этих двух сервисов
sudo service dnsmasq restart
sudo service hostapd restart
Это момент, когда все пошло наперекосяк.
Вызов sudo service networking restart
отключил wlan0
(существующий 5Ghz daemon hostapd), и я так и не смог его поднять с тех пор, равно как и wlan2
. Однако eth0
и wlan1
остались активными, т.е.
В выводе:
У меня был 5Ghz WiFi хот-спот, и я попытался создать 2.4Ghz хот-спот, теперь я в трудном положении без хот-спота
Я удалил все настройки (то есть вернулся к предыдущему рабочему состоянию), но неудачно.
Также примечание: несколько перезагрузок не решили ничего
Вопрос:
1. Как я могу поднять эти интерфейсы
2. Почему возникает эта проблема невозможности поднять интерфейс, когда все кажется правильным
p.s. дайте знать, если я что-то упустил
Дополнительная информация:
мой файл interfaces:
$ sudo cat /etc/network/interfaces
source-directory /etc/network/interfaces.d
auto lo
iface lo inet loopback
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.0.254
subnet 255.255.255.0
gateway 192.168.8.254
network 192.168.0.0
broadcast 192.168.0.255
allow-hotplug wlan2
iface wlan0 inet static
address 192.168.4.254
subnet 255.255.255.0
gateway 192.168.8.254
network 192.168.4.0
broadcast 192.168.4.255
allow-hotplug eth0
iface eth0 inet static
address 192.168.1.254
subnet 255.255.255.0
gateway 192.168.8.254
network 192.168.1.0
broadcast 192.168.1.255
allow-hotplug wlan1
iface wlan1 inet static
address 192.168.8.254
subnet 255.255.255.0
gateway 192.168.8.1
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
Логи:
выполнено sudo ip link set wlan0 down
-
dmesg
сообщает:n/a
-
но
/var/log/syslog
сообщает:Apr 24 20:47:09 gateway avahi-daemon[480]: Interface wlan0.IPv4 больше не актуален для mDNS.
Apr 24 20:47:09 gateway avahi-daemon[480]: Оставление группы многоадресной рассылки mDNS на интерфейсе wlan0.IPv4 с адресом 192.168.0.254.
Apr 24 20:47:09 gateway avahi-daemon[480]: Снятие записи адреса для 192.168.0.254 на wlan0.
впоследствии выполнено sudo ip link set wlan0 up
-
dmesg
сообщает:IPv6: ADDRCONF(NETDEV_UP): wlan0: ссылка не готова
-
но
/var/log/syslog
сообщает:Apr 24 20:50:06 gateway avahi-daemon[480]: Подключение к группе многоадресной рассылки mDNS на интерфейсе wlan0.IPv4 с адресом 192.168.0.254.
Apr 24 20:50:06 gateway avahi-daemon[480]: Новая актуальная запись интерфейса wlan0.IPv4 для mDNS.
Apr 24 20:50:06 gateway avahi-daemon[480]: Регистрация новой записи адреса для 192.168.0.254 на wlan0.IPv4.
Apr 24 20:50:06 gateway kernel: [ 2964.213013] IPv6: ADDRCONF(NETDEV_UP): wlan0: ссылка не готова
NIC статус
$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether b8:27:eb:e5:67:fb brd ff:ff:ff:ff:ff:ff
inet 192.168.1.254/24 brd 192.168.1.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::ba27:ebff:fee5:67fb/64 scope link
valid_lft forever preferred_lft forever
3: wlan0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether 40:a5:ef:d9:9c:4f brd ff:ff:ff:ff:ff:ff
inet 192.168.0.254/24 brd 192.168.0.255 scope global wlan0
valid_lft forever preferred_lft forever
4: wlan1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether b8:27:eb:b0:32:ae brd ff:ff:ff:ff:ff:ff
inet 192.168.8.254/24 brd 192.168.8.255 scope global wlan1
valid_lft forever preferred_lft forever
inet6 fe80::ba27:ebff:feb0:32ae/64 scope link
valid_lft forever preferred_lft forever
5: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
link/none
inet 192.168.10.1 peer 192.168.10.2/32 scope global tun0
valid_lft forever preferred_lft forever
6: tun1: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
link/none
inet 192.168.11.1 peer 192.168.11.2/32 scope global tun1
valid_lft forever preferred_lft forever
7: wlan2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether 90:f6:52:13:aa:82 brd ff:ff:ff:ff:ff:ff
Информация о сетевых адаптерах
$ sudo lshw -C net
*-usb:1
описание: Беспроводной интерфейс
продукт: USB2.0 WLAN
поставщик: ATHEROS
физический id: 2
информация о шине: usb@1:1.2
логическое имя: wlan2
версия: 1.08
серийный: 12345
возможности: usb-2.00 ethernet physical wireless
конфигурация: broadcast=yes driver=ath9k_htc driverversion=4.4.50-v7+ firmware=1.3 link=no maxpower=500mA multicast=yes speed=480Mbit/s wireless=IEEE 802.11bgn
*-usb:2
описание: Беспроводной интерфейс
продукт: NIC 802.11n
поставщик: Realtek
физический id: 5
информация о шине: usb@1:1.5
логическое имя: wlan0
версия: 0.00
серийный: 123456
возможности: usb-2.00 ethernet physical wireless
конфигурация: broadcast=yes driver=rtl8812au ip=192.168.0.254 maxpower=500mA multicast=yes speed=480Mbit/s wireless=unassociated
*-network:0
описание: Ethernet интерфейс
физический id: 2
логическое имя: eth0
серийный: b8:27:eb:e5:67:fb
размер: 100Mbit/s
емкость: 100Mbit/s
возможности: ethernet physical tp mii 10bt 10bt-fd 100bt 100bt-fd autonegotiation
конфигурация: autonegotiation=on broadcast=yes driver=smsc95xx driverversion=22-Aug-2005 duplex=full firmware=smsc95xx USB 2.0 Ethernet ip=192.168.1.254 link=yes multicast=yes port=MII speed=100Mbit/s
*-network:1
описание: Беспроводной интерфейс
физический id: 3
логическое имя: wlan1
серийный: b8:27:eb:b0:32:ae
возможности: ethernet physical wireless
конфигурация: broadcast=yes driver=brcmfmac driverversion=7.45.41.26 firmware=01-df77e4a7 ip=192.168.8.254 multicast=yes wireless=IEEE 802.11bgn
Так что через некоторое время я выяснил, что Raspbian использует пакет ifupdown, который можно вручную скачать от здесь.
Поэтому причина, по которой ваш интерфейс не поднимается, может быть разной, поэтому я не могу сказать, в чем причина, но логи МОГУТ определенно помочь вам, если их погуглить.
Получить логи
Чтобы найти эти логи, используйте либо это для быстрого обновления состояния:
systemctl status networking.service
или это для детализированных логов:
journalctl -u networking.service
Об networking.service
Вы можете найти файл сервиса здесь /lib/systemd/system/networking.service
Откройте его с помощью nano/vim (я предпочитаю nano) для просмотра
Сервис запускает /sbin/ifup -a --read-environment
, но можно добавить дополнительную детализацию -v
для получения больше информации о ваших интерфейсах сети
Таким образом, выполнение /sbin/ifup -a --read-environment -v
даст вам понимание о том, почему интерфейсы не могут быть подняты.
Вы можете найти пример вывода вышеуказанной команды здесь, с этого AskUbuntu поста
.
Ответ или решение
Ваши Raspberry Pi, работающие на последней версии Raspbian (Pixel), сталкиваются с проблемой поднятия беспроводных интерфейсов wlan0 и wlan2. Это достаточно распространенная проблема, с которой часто сталкиваются при работе с несколькими беспроводными интерфейсами на одном устройстве. Ваша задача — настроить Raspberry Pi как роутер/точку доступа Wi-Fi, используя три беспроводных интерфейса: встроенный (brcmfmac), TP-Link WN722 (ath9k_htc) и Comfast CF-912AC (rtl88112au).
Теория
Первый шаг в решении проблемы заключается в понимании того, как работают сетевые интерфейсы на Raspberry Pi и что может вызывать подобные сбои. В Raspbian управлением сетевыми интерфейсами занимается служба ifupdown
, которая, в свою очередь, взаимодействует с конфигурационным файлом /etc/network/interfaces
. Ошибки чаще всего связаны с конфигурацией этого файла, конфликтами между различными службами (например, hostapd и dnsmasq) или несовместимостью драйверов.
Пример
Вы описали, что изначально всё работало, пока вы не стали конфигурировать вторую точку доступа hostapd на wlan2, после чего произошли сбои. Из ваших логов видно, что:
- Команда
ifup wlan0
отвечает ошибкой:RTNETLINK answers: File exists
, что говорит о потенциальном конфликте конфигураций. - Интерфейсы wlan0 и wlan2 находятся в состоянии NO-CARRIER, что указывает на отсутствие соединения или конфликт настроек.
journalctl -u networking.service
может дать более детальную информацию о том, где именно происходит сбой.
Применение
Как восстановить интерфейсы:
-
Проверьте конфигурацию: Убедитесь, что в файле
/etc/network/interfaces
нет ошибок. Заметьте, что у вас дважды записанiface wlan0 inet static
, что может быть ошибкой. Убедитесь, что каждая запись соответствует своему интерфейсу. -
Используйте правильные драйверы: Проверьте, что используемые драйверы корректно установлены и загружены (
lsmod | grep <driver_name>
). -
Логи и диагностика: Используйте команды
systemctl status networking.service
иjournalctl -u networking.service
для определения точной причины проблем. Это поможет вам выявить, какой именно процесс вызывает сбой. -
Сетевые конфликты: Остановите все сетевые службы и перезапустите их постепенно, чтобы изолировать проблему:
sudo service dnsmasq stop sudo service hostapd stop sudo service networking restart
-
Обновите систему: Убедитесь, что у вас установлены все последние обновления Raspbian, включая патчи для вашего сетевого оборудования.
-
Исключите dhcpcd: Если dhcpcd отключён, проверьте, не конфликтует ли экосистема служб между собой. В некоторых случаях может потребоваться включить его обратно для корректной работы.
-
Откат изменений: Верните конфигурации к предыдущему работоспособному состоянию, а потом внесите изменения шаг за шагом, проверяя их влияние.
Почему возникают такие проблемы:
-
Несоответствие конфигурации: Ошибки в конфигурационных файлах или конфликтующие записи могут привести к неправильной работе системы.
-
Обновления драйверов: Некоторые драйверы могут не поддерживать определённые версии ядра или платформы, вызывая такие сбои.
-
Конфликты служб: Несовместимость между службой управления сетевыми интерфейсами (например, dhcpcd и dnsmasq) может вызывать сбои.
-
Ошибки прошивки: Поскольку компоненты изначально работали, но после вмешательства произошли сбои, стоит проверить, соответствует ли версия прошивки вашим сетевым адаптерам.
Решение всех этих проблем требует внимательного анализа конфигураций, внимательной работы с логами и пошагового устранения сбоев. Рекомендуется вести журнал внесённых изменений и их последствий, чтобы в будущем избежать повторения таких ситуаций.