Имеем два интерфейса, один кабельный, второй Wi-Fi соответственно. Надо что бы при подключении кабеля работала "земля", а при отрубании - "воздух". Сначала попробовал сделать все это через bonding (объединение двух и более интерфейсов в один логический, что-то типа сановского IPMP). Но возникла проблема: wpa_supplicant не может корректно подрубится к точке доступа, если используется bond0 интерфейс. :( Хотя в инете народ после не продолжительных плясок с бубном это поднимал, но у меня не вышло. Решил пойти другим путем. ;) И так мое решение:
- Ставим ifplugd и конфигурим его мониторить eth0.
- В /etc/network/interfaces (это для убунты/дебиан, на других системах будет по другому, но в общем принип один и тот же) прописываем что-то типа:
iface eth0 inet static
address X.X.X.10
netmask 255.255.255.0
gateway X.X.X.1
auto wlan0
iface eth0 inet static
address X.X.X.10
netmask 255.255.255.0
gateway X.X.X.1
wpa-conf /etc/wpa_supplicant/my.conf - В папку /etc/ifplugd/action.d добавляем файл (я его назвал 00-start-stop, но в принципе это не важно, так как из этой папки при поднятии/опускании интерфейса, который мы мониторим выполняются все скрипты) содержащий следующий набор комманд:
#!/bin/sh
set -e
case "$2" in
up)
/sbin/ifdown --force wlan0
;;
down)
/sbin/ifup wlan0
;;
esac
Понятное дело, что это тоже довольно грубо: по хоршему надо бы проверить какие и как работают у нас интерфейсы, какие из них wifi или прочесть это из конфиг файла, но мне было лень заморачиваться. ;)
спасибо за идею ! =)
ОтветитьУдалитьДа всегда пожалуйста. :)
ОтветитьУдалить