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 ещё раз, но вторая копия увидит, что для 
интерфейса
суппликант уже запущен, ругнётся на консоль и выйдет, так что мешать не будет.

_______________________________________________
freebsd mailing list
[email protected]
http://mailman.uafug.org.ua/mailman/listinfo/freebsd

Ответить