[freebsd] default router для wlan со статической ip
Eugene Grosbein
eugen at grosbein.net
Fri Apr 17 16:54:28 EEST 2020
17.04.2020 18:39, Nick Kostirya wrote:
> Привет.
> Подскажите, пожалуйста, как правильно указывать default router для wlan со статической ip.
>
> В /etc/rc.conf прописано.
> defaultrouter="192.168.0.1"
> ifconfig_wlan0="WPA inet 192.168.0.50 netmask 255.255.255.0"
>
> На момент запуска routing wpa_supplicant еще не успевает поднять сеть и получаю в лог:
> add net default: gateway 192.168.0.1 fib 0: Network is unreachable
>
> DHCP с привязкой к MAC использовать не хочется, так как это USB-WiFi их всегда путаешь.
К сожалению, из штатных средств есть только возможность создать скрипт /etc/start_if.wlan0
такого содержания:
#!/bin/sh
waitfor_wlanif() {
local _i _s
ifconfig_up "$1"
_i=30
while [ $_i -gt 0 ]
do
_s=$(ifconfig "$1" | awk '/status:/ {print $2}')
[ "$_s" = associated ] && break
_i=$(($_i - 1))
sleep 1
done
return 0
}
waitfor_wlanif "$1"
# EOF
При загрузке, обнаружив скрипт с таким именем, системные скрипты вызывают его
через команду "точка" .
Поэтому у него есть доступ к внутренним функциям системной библиотеки скриптов
и он может вызвать функцию ifconfig_up для интерфейса, которая уже штатным образом
конфигурирует интерфейс и запускает для него wpa_supplicant как обычно.
После этого скрипт до 30 секунд ждёт, пока суппликант не подключится к точке доступа
и после этого уже маршруты добавятся нормально.
У этого решения есть небольшой косячок: ifconfig_up будет вызван повторно штатными
скриптами и запустит wpa_supplicant ещё раз, но вторая копия увидит, что для интерфейса
суппликант уже запущен, ругнётся на консоль и выйдет, так что мешать не будет.
More information about the freebsd
mailing list