OpenVPN вызывает отключение WLAN/WiFi в Linux?

Вопрос или проблема

Если я настраиваю свою беспроводную сеть при запуске (wpa_supplicant & dhclient), соединение работает нормально, пока я не запущу OpenVPN.

В этот момент беспроводной интерфейс разъединяется (не дожидаясь установления туннеля), и мне нужно вручную его восстановить, перезапустив сеть или выполнив команды ifdown/ifup. Это работает, но вызывает массу неудобств.

dmesg сообщает:

ADDRCONF(NETDEV_CHANGE) wlan0: ссылка готова
wlan0: разъединение от 00:00:00:00:00:00 по местному выбору (причина=3)
cfg80211: Вызов CRDA для обновления всемирной регуляторной зоны
ADDRCONF(NETDEV_CHANGE) wlan0: ссылка не готова

OpenVPN не выдает никаких сообщений об ошибках, кроме того, что не может связаться с сервером, когда WiFi отключается.

Я пробовал создать как устройства tun, так и tap без OpenVPN, и это работает нормально, им могут быть назначены IP-адреса.

wpa_supplicant и wpa_cli продолжают работать, даже когда интерфейс отключен, поэтому мне нужно выполнить

ifdown --force wlan0

Я упростил свою конфигурацию OpenVPN до минимальной примерной конфигурации, и та же проблема все еще возникает.

Я также пробовал это с устройствами rt2800 и rtl8187, оба испытывают такое же поведение.

Мои конфигурационные файлы выглядят следующим образом, но у меня не было с ними проблем до попытки запустить OpenVPN.

Файл интерфейсов

#/etc/network/interfaces
auto wlan0
iface inet wlan0 manual
    wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
    wpa-driver wext

iface inet default dhcp

wpa_supplicant

ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=netdev
update_config=1
eapol_version=1
ap_scan=1
fast_reauth=1

network={
    ssid="myap"
    scan_ssid=1
    key_mgmt=WPA-EAP
    eap=TTLS
    ca_cert="/etc/ssl/certs/certificate.pem"
    identity="me"
    password="mypassword"
    phase1="peaplabel=0"
    phase2="auth=MSCHAPV2"
    priority=1
}

ИЗМЕНИТЬ:

После небольшого отладки я выяснил, что это связано с опцией wpa-roam, изменение на wpa-conf решает проблему (wpa_cli не запускается). Я обновлю информацию, когда сузю поиск до конкретного сигнала, вызывающего проблему.

ИЗМЕНИТЬ2:

Я обновил wpa_supplicant с 1.0 до 2.0, и та же проблема все еще возникает, WiFi просто разъединяется от AP, когда формируется туннель OpenVPN, беспроводной интерфейс на самом деле не отключается (предварительные, нижние и постпрограммные события не вызываются, когда это происходит).

Вопрос в несколько другом контексте, но ответ здесь…

Перенаправление с eth0 на wlan0 в Debian с OpenVPN

В основном ifplugd отключает беспроводной интерфейс. Поскольку только один роуминговый интерфейс должен быть активен одновременно.

Когда это вызывается:

/etc/ifplugd/action.d/action_wpa tun0 up

Скрипт зацикливается, отключая все устройства wpa-roaming…

for CTRL in /var/run/wpa_supplicant/*; do

    [ -S "${CTRL}" ] || continue

    IFACE="${CTRL#/var/run/wpa_supplicant/}"

    # пропустить, если ifplugd управляет этим интерфейсом
    if [ "${IFPLUGD_IFACE}" = "${IFACE}" ]; then
        continue
    fi

    if wpa_action "${IFACE}" check; then
        wpa_cli -i "${IFACE}" "${COMMAND}"
    fi
done

Этот скрипт нужно расширить, чтобы проверять и другие интерфейсы, управляемые ifplugd, а не только тот, который был вызван в скрипте.

Ответ или решение

Проблема, с которой вы столкнулись, когда OpenVPN вызывает отключение WLAN/WiFi в Linux, может быть связана с конфликтом между управляющей системой подключениями ваших сетевых интерфейсов и конфигурацией OpenVPN. Основные причины и способы решения данной проблемы описаны ниже.

Причины проблемы

  1. Конфликт с ifplugd: Как упоминалось в вашем вопросе, если ifplugd управляет беспроводным интерфейсом и активирует действие wpa-roam, это может привести к тому, что интерфейс будет отключаться, когда OpenVPN устанавливает туннель. Скрипт управления от ifplugd может не корректно обрабатывать отключение интерфейсов, что приводит к отключению вашего WLAN.

  2. Опция wpa-roam: Как вы уже отметили, использование wpa-roam может вызывать проблемы, так как этот метод предусматривает автоматическую смену соединений. Как только OpenVPN инициирует соединение, происходит сбой в обновлении управляющих параметров WiFi.

  3. Проблемы с совместимостью драйверов: Иногда используемые драйверы для вашего WiFi-адаптера могут влиять на стабильность соединения при активации VPN.

Решение проблемы

  1. Смена конфигурации на wpa-conf: Вы уже обнаружили, что изменение конфигурации с wpa-roam на wpa-conf решает проблему. Это может быть хорошим решением, так как wpa-conf управляет соединением более предсказуемо.

    Пример:

    auto wlan0
    iface wlan0 inet dhcp
       wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
  2. Настройка ifplugd: Если вы хотите продолжать использовать wpa-roam, вам может потребоваться изменить логику скрипта действия ifplugd. Вы можете сделать это, добавив проверку, чтобы не отключать активные интерфейсы, управляемые OpenVPN. Это поможет избежать отключения WLAN при установке VPN:

    Пример изменения скрипта:

    if [ "${IFPLUGD_IFACE}" = "tun0" ]; then
       # Проверяем, если текущий интерфейс - это туннель OpenVPN
       continue
    fi
  3. Проверка журналов: Убедитесь, что в журналах dmesg и других логах нет серьезных ошибок, которые могут указывать на проблемы с драйверами или сетью.

  4. Обновите программное обеспечение: Поскольку вы уже пробовали обновить wpa_supplicant, убедитесь, что все компоненты системного программного обеспечения актуальны, включая OpenVPN и драйверы для вашего WLAN-адаптера.

  5. Тестирование с другими драйверами: Если проблема сохраняется, попробуйте использовать альтернативные драйверы для вашего WiFi-адаптера, если таковые доступны. Это может улучшить совместимость.

Заключение

Если после выполнения всех вышеперечисленных шагов проблема не будет решена, рекомендуем обратиться за поддержкой в сообщества разработки OpenVPN или wpa_supplicant, так как это может быть специфическая проблема конфигурации или несовместимости вашего оборудования.

Оцените материал
Добавить комментарий

Капча загружается...