Temat: wifi wan failover

Cześć wszystkim,

Mam router który chodzi w trybie WISP (wifi jest wanem, reszta lanem).
Chcę zrobić na nim failover który podłączałby router do innego AP w razie braku internetu.

W zasadzie (o ile nie istnieje gotowe rozwiązanie), failover musi spełniać kilka rzeczy:
- sprawdzać czy jest net (np 3x ping)
- w razie braku powyższego przełączać na inne SSID - tutaj także dochodzi problem w wypadku szyfrowania wpa/wpa2
- restartować klienta dhcp, aby pobrał sobie nowy adres

2

Odp: wifi wan failover

http://eko.one.pl/?p=openwrt-skrypty#re … uinternetu

Tylko ty przed ifup wan masz ustawić nowe parametry radia i dopiero wykonać ifup wan. Podobnie w drugą stronę. Lub wykorzystać jedno z istniejących rozwiązań - mwan2/mwan3 lub multiwan.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: wifi wan failover

Ze sprawdzaniem internetu nie będzie problemu, natomiast zastanawiam się jak rozwiązać konfigurację sieci bezprzewodowej i klienta dhcp.
Do wifi chyba najlepiej użyć wpa_cli ? czy wpa_supplicant z uprzednio przygotowaną konfiguracją w plikach?

Niestety, dostęp do sprzętu będę miał dopiero w weekend, póki co opracowuję teorię wink

4

Odp: wifi wan failover

Dlaczego się w ogóle nad tym zastanawiasz? W systemie wszystko już jest do konfiguracji klienta, więc nie wiem po co w ogóle się na wpa_cli czy wpa_supplicant zastanawiasz?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5

Odp: wifi wan failover

Nie jestem pewien czy można zastosować uci w skryptach (i czy nie namiesza mi w /etc/config/).

6

Odp: wifi wan failover

Możesz stosować.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

7

Odp: wifi wan failover

Czyli w zasadzie wystarczy poniższy skrypcik?

#!/bin/ash
if ! ping -q -c 1 -W 5 8.8.8.8 > /dev/null; then
  uci set wireless.@wifi-iface[-1].ssid=BACKUP_AP
  uci set wireless.@wifi-iface[-1].encryption=psk2
  uci set wireless.@wifi-iface[-1].key=test_key
  uci commit wireless
  ifup wan
fi

8

Odp: wifi wan failover

Tak, ale... to tylko przełącza na drugą sieć.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

9

Odp: wifi wan failover

Teoretycznie ma jeszcze "wracać" do poprzedniej sieci jeśli nie ma pinga na backupowym łączu...

#!/bin/ash
if ! ping -q -c 1 -W 5 8.8.8.8 > /dev/null; then
  if [ `uci get wireless.@wifi-iface[-1].ssid` = "PRIMARY_AP" ]; then
    uci set wireless.@wifi-iface[-1].ssid=BACKUP_AP
    uci set wireless.@wifi-iface[-1].encryption=psk2
    uci set wireless.@wifi-iface[-1].key=backup_test_key
    uci commit wireless
    ifup wan
  else
    uci set wireless.@wifi-iface[-1].ssid=PRIMARY_AP
    uci set wireless.@wifi-iface[-1].encryption=psk2
    uci set wireless.@wifi-iface[-1].key=primary_test_key
    uci commit wireless
    ifup wan
  fi
fi

10 (edytowany przez coconuts 2013-02-16 16:15:20)

Odp: wifi wan failover

Uwarunkowania fizyczne wymusiły na mnie zastosowanie 2-ch oddzielnych kart sieciowych. Jedna to wbudowany atheros, druga - RT73, podłączona do USB. Obie karty ustawione jako STA. Atheros działa ok, podczas gdy ralink generuje błędy:

Feb 16 15:16:53 OpenWrt kern.err kernel: [ 4193.330000] phy0 -> rt2x00usb_vendor_request: Error - Vendor Request 0x07 failed for offset 0x3000 with error -71.
Feb 16 15:16:54 OpenWrt kern.err kernel: [ 4193.760000] phy0 -> rt2x00usb_vendor_request: Error - Vendor Request 0x07 failed for offset 0x3000 with error -71.
Feb 16 15:16:54 OpenWrt kern.err kernel: [ 4194.190000] phy0 -> rt2x00usb_vendor_request: Error - Vendor Request 0x07 failed for offset 0x3000 with error -71.
Feb 16 15:16:54 OpenWrt kern.err kernel: [ 4194.620000] phy0 -> rt2x00usb_vendor_request: Error - Vendor Request 0x07 failed for offset 0x3000 with error -71.
Feb 16 15:16:55 OpenWrt kern.err kernel: [ 4195.050000] phy0 -> rt2x00usb_vendor_request: Error - Vendor Request 0x07 failed for offset 0x3000 with error -71.
Feb 16 15:16:55 OpenWrt kern.err kernel: [ 4195.480000] phy0 -> rt2x00usb_vendor_request: Error - Vendor Request 0x07 failed for offset 0x3000 with error -71.
Feb 16 15:16:56 OpenWrt kern.err kernel: [ 4195.910000] phy0 -> rt2x00usb_vendor_request: Error - Vendor Request 0x07 failed for offset 0x3000 with error -71.
Feb 16 15:16:56 OpenWrt kern.err kernel: [ 4195.940000] phy0 -> rt73usb_load_firmware: Error - Unstable hardware.
Feb 16 15:16:56 OpenWrt kern.err kernel: [ 4196.340000] phy0 -> rt2x00usb_vendor_request: Error - Vendor Request 0x0a failed for offset 0x0000 with error -71.

Faktycznie może to być wada sprzętu? czy raczej błąd w sterowniku?

EDIT: Zastosowałem krótszy kabel i błędy zniknęły smile

11

Odp: wifi wan failover

potrzebuję skorzystać "dynamnicznie" ze zmiennych w pętli for:

VAR1="bolek"
VAR2="lolek"
for i in 1 2; do
 uzytkownik=$VAR$i     #tutaj problem
 echo $uzytkownik
done

wykonanie powinno wyświetlić:

bolek
lolek

Da się to jakoś napisać do użycia w busyboxie, czy musze zainstalować basha?

12

Odp: wifi wan failover

eval "echo \$VAR$i"

Zamiast

uzytkownik=$VAR$i     #tutaj problem
echo $uzytkownik

?

PS. Tak, działa, sprawdziłem.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

13 (edytowany przez coconuts 2013-07-10 10:22:40)

Odp: wifi wan failover

Dziękuję Cezary,

trochę zmieniłem skrypt - teraz można dodać więcej niż 2 sieci
Może komuś się przyda więc publikuję:
handover2.sh

#!/bin/sh

TEST_IP="8.8.8.8"

AP1="abc"
ENC1="psk2"
KEY1="abc123"

AP2="def"
ENC2="wep"
KEY2="1234567890"

AP3="xyz"
ENC3="none"
KEY3=""

while true; do
 for I in 1 2 3; do
  while ping -q -c 2 -W 1 $TEST_IP > /dev/null ; do
   #echo "ping jest ok";
   sleep 8
  done
  eval "AP=\$AP$I"
  eval "ENC=\$ENC$I"
  eval "KEY=\$KEY$I"
  uci set wireless.@wifi-iface[0].ssid=$AP
  uci set wireless.@wifi-iface[0].encryption=$ENC
  uci set wireless.@wifi-iface[0].key=$KEY
  uci commit wireless
  MESSAGE="Trying handover to SSID: $AP ..."
  logger $MESSAGE
  #echo $MESSAGE
  ifup wan
  sleep 5
 done
done

14

Odp: wifi wan failover

Na forum openwrt jest podobny projekcik podłączający się do otwartych lub zdefiniowanych ap.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

15 (edytowany przez jarczydlo 2013-09-12 13:08:23)

Odp: wifi wan failover

Cezary napisał/a:

Na forum openwrt jest podobny projekcik podłączający się do otwartych lub zdefiniowanych ap.

Jak się nazywa ten projekt? . Szukam bezskutecznie , może linka?

Dzięki

16

Odp: wifi wan failover

AAP https://forum.openwrt.org/viewtopic.php?id=43352

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

17

Odp: wifi wan failover

Faktycznie, podobny do mojego - lepiej napisany wink

Ale chyba nie umożliwia automatycznego szukania i podłączania do otwartych sieci?

18

Odp: wifi wan failover

Nie wiem, nie przyglądałem się tej wersji. Poprzednia to miała, tak samo jak łączenie się do zdefiniowanych wcześniej sieci.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

19

Odp: wifi wan failover

Tak na marginesie - ile zapisów może wytrzymać flash? Rozumiem że każdorazowe "uci commit wireless" powoduje zapis configa na flash?

20

Odp: wifi wan failover

W zalezności od typu flash 10000 lub 100000 zapisów na komórkę. Raz że zawsze zapisujesz cały blok, dwa - nie zapisujesz tego cały czas w bloku tylko, powiedzmy, wykorzystywane są wszystkie wolne bloki. Więc przy takim commit to prędzej się router zużyje moralnie niż fizycznie. Oczywiście jak zrobisz swap na flashu czy będziesz cyklicznie zapisywał coś we flash to padnie po pewnym czasie.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

21

Odp: wifi wan failover

Chodzi mi o sytuację kiedy na żadnej sieci nie będzie pinga - skrypt wpadnie w pętlę i będzie co 10 sekund robił commit-a.

22

Odp: wifi wan failover

1. W cale commita nie musisz robić smile
2. I tak przy takim zapisie minie parę lat zanim byś zniszczył flash.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

23

Odp: wifi wan failover

... nie muszę?

24

Odp: wifi wan failover

Nie musisz. Skrypty w openwrt radzą sobie doskonale nawet jak nie zapisz zmian, tyle że po restarcie będziesz miał pierwotne wartości. Nie wiedziałeś?

Zrób sobie
uci set wireless.@wifi-iface[0].ssid=alamakota
wifi up
uci revert wireless

Zmieni Ci i podniesie wifi z nowym ssid nie dotykając plików konfiguracyjnych.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

25

Odp: wifi wan failover

Dziala, dzięki smile