26 (edytowany przez joker77 2011-08-21 21:14:03)

Odp: Bonding - łączenie kilku łączy w jedno

Witam ponownie,
Po wielu próbach udało mi się uruchomić vtun, przez dwa modemy (można więcej dołożyć), dałem radę uruchomić bonding.

Niedługo utworzę małe FAQu jak przyspieszyć wysyłanie danych przez modemy.

27

Odp: Bonding - łączenie kilku łączy w jedno

Czekamy więc na faq.

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

28

Odp: Bonding - łączenie kilku łączy w jedno

Tekst dla zaawansowanych !!!

Na początku było jedno łącze, gdy przestało wystarczać zainteresowałem się load balancing,
przyspiesza ona ładowanie danych, ale działa ona tak: jeden plik jednym łączem, drugi plik drugim łączem.
Niesatysfakcjonujące dla mnie rozwiązanie, wolałbym rozłożyć transfer po równo, czyli należy zejść niżej,
na poziom protokołu i tu z pomocą przychodzi na Bonding (inaczej zwany link aggregatorem).
Co musimy posiadać :
- serwer z wirtualizacją XEN (zwykły vps z openvz nie będzie działać, wymagany jest dostęp do iptables), może być taki za 20zł
- router (ja używam mr3420), hub usb aktywny (w końcu podłączam kilka modemów)
- modemy co najmniej 2 szt.

Przygotowanie serwera:
- ściągnąć i zainstalować vtund
- ściągnąć i zainstalować ifenslave
- modprobe bonding miimon=150

Przygotowanie routera:
- extroot
- podłączamy modemy i je konfigurujemy, włączamy multiwan (ja do tego preferuje luci)
- ściągnąć i zainstalować vtund oraz obsługę ipv6 (powód dla którego wymagany jest ten moduł jest dla mnie zagadką)
- ściągnąć i zainstalować moduł bonding
- ściągnąć i zainstalować ifenslave
- w /etc/modules.d/40-bonding dodać bonding miimon=150

na serwerze oraz routerze edytujemy pliki vtund.conf, są one odpowiednio opisane --- cute server --- oraz -- cute client ---
Czyli usuwamy na serwerze elementy odnośnie klienta, a na kliencie te które odnoszą się do serwera.

Zawartość pliku serwera vtund.conf:
options {
  port 5000;            # Listen on this port.
  timeout 5;
#  bindaddr { iface eth0; };   # Listen only on loopback device.

  # Syslog facility
  syslog        daemon;

  # Path to various programs
  ppp           /usr/sbin/pppd;
  ifconfig      /sbin/ifconfig;
  route         /sbin/route;
  firewall      /sbin/ipchains;
  ip            /sbin/ip;
}

# Default session options
default {
  compress no;          # Compression is off by default
  speed 0;              # By default maximum speed, NO shaping
}

# TUN example. Session 'cobra'.
cobra1 {

  passwd  haslo;        # Password
  type  tun;            # IP tunnel
  device tun0;
  proto tcp;            # UDP protocol
  compress  no; # LZO compression level 9
  encrypt  no;         # Encryption
  keepalive yes;        # Keep connection alive
  #multi yes;
  stat yes;

  up {
        # Connection is Up

        # 10.3.0.1 - local, 10.3.0.2 - remote
        ifconfig "%% 10.3.0.1 netmask 255.255.255.0";

  };
  down {
        ifconfig "%% down";
        ifconfig "%% delete";
        };

}

Zawartość pliku klienta vtund.conf:

options {
  port 5000;            # Connect to this port.
  timeout 5;           # General timeout

  # Path to various programs
  ppp           /usr/sbin/pppd;
  ifconfig      /sbin/ifconfig;
  route         /sbin/route;
  firewall      /sbin/ipchains;
  ip            /sbin/ip;
}

# Ethernet example. Session 'lion'.
cobra1 {
  passwd  haslo;        # Password
  type  tun;            # Ethernet tunnel
  device tun0;          # Device tap1
  srcaddr {
        iface 3g-3g;
  };
  up {
        # Connection is Up

        # Assign IP address and netmask.
        ifconfig "%% 10.3.0.2 netmask 255.255.255.0";
  };
  down {
        # Connection is Down

        # Shutdown tap device
        ifconfig "%% down";
  };
}

uruchomienie połączenia

- Serwer
vtund -s -f sciezka

- Klient (jedno połączenie)
vtund -f sciezka cobra1 adres_serwera

A teraz kilka słów wyjaśnień jak to działa:

cobra1 - nazwa połączenia jaką sobie wybierzemy.
device tun0 - interfejs tunelu

srcaddr {
        iface 3g-3g;
  };

Jako wyjście użyć interfejsu modemu podłączonego do 3g-3g,
oczywiście konfiguracje należy wkopiować odpowiednią ilość razy (tyle ile mamy modemów),
dla każdego połączenia nadać inny numer IP np.
- pierwsze połączenie 10.1.0.1 - 10.1.0.2
- drugie połączenie 10.2.0.1 - 10.2.0.2
- trzecie połączenie 10.3.0.1 - 10.3.0.2

po połączeniu tunelu, po wydaniu polecenia ifconfig naszym oczom ukaże się nowy interfejs tun0 po jednej i drugiej stronie (serwer, router).
A po wydaniu polecenia ping 10.3.0.1 powinniśmy otrzymać odpowiedź oznacza to że tunel działa prawidłowo.

Gdy połączymy wystarczającą ilość tuneli, przystąpimy do właściwego łączenia tuneli czyli bonding.

Najpierw podnosimy interfejs bond0 na serwerze:
ifconfig bond0 192.168.2.1 netmask 255.255.255.0 up
ifconfig bond0 hw ether 00:11:22:33:44:55

ifenslave bond0 tun0 tun1 tun2 - wykonać tyle razy ile mamy tuneli

na kliencie:

ifconfig bond0 192.168.2.2 netmask 255.255.255.0 up
ifconfig bond0 hw ether 00:11:22:33:44:66

ifenslave bond0 tun0 tun1 tun2 - wykonać tyle razy ile mamy tuneli


po pomyślnym wykonaniu operacji wykonujemy standardowego pinga na drugą stronę tunelu.
po przesłaniu powiedzmy 4 - 6 pingów, przerywamy wydajemy polecenie ifconfig i sprawdzamy
czy na interfejsach tuneli liczba przesłanych pakietów rozłożona jest równo.

Teraz wystarczy już przepuścić ruch poprzez nowo otwarte połączenie (192.168.2.1) i cieszyc się szybszym połączeniem.
W ten sposób można połączyć wiele technologii np. operatorzy infrastrukturalni (czyli orange, play, plus, t-mobile, aero2 i ich polsat)
to już jest 5 źródeł do tego dochodzi cdma z orange i plusa czyli w sumie 7, jeszcze można skorzystać z wimax'a - w rezultacie można otrzymać łącze o całkiem przyzwoitym transferze przychodzącym jak i wychodzącym.

29

Odp: Bonding - łączenie kilku łączy w jedno

joker77 napisał/a:

Przygotowanie routera:
- ściągnąć i zainstalować vtund oraz obsługę ipv6 (powód dla którego wymagany jest ten moduł jest dla mnie zagadką)

Mam ten sam router - MR3420. Przy probie instalacji Vtun dostaje taki blad:

root@mr3420:~$ opkg install vtun
Installing vtun (3.0.2-1) to root...
Downloading http://downloads.openwrt.org/backfire/10.03.1/ar71xx/packages/vtun_3.0.2-1_ar71xx.ipk.
Multiple packages (kmod-tun and kmod-tun) providing same name marked HOLD or PREFER. Using latest.
Installing liblzo (2.05-1) to root...
Downloading http://ecco.selfip.net/backfire/ar71xx/packages/liblzo_2.05-1_ar71xx.ipk.
Installing libopenssl (0.9.8x-1) to root...
Configuring liblzo.
Collected errors:
 * verify_pkg_installable: Only have 196kb available on filesystem /overlay, pkg libopenssl needs 506
 * opkg_install_cmd: Cannot install package vtun.

W czynnosciach do wykonania piszesz o extroot - rozumiem, ze to jest po to, aby rozszerzyc flasha i ominac ten problem? Czyli pod USB masz HUBa z dwoma modemami + jakis pendrive?

OpenWrt Attitude Adjustment 12.09.1 (r42647)  + Gargoyle PL 1.6.2.2 (b70bfc1) @ TP-Link TL-WDR4300 v1 + extroot (DLNA, HD-Idle, HDD 1TB

30

Odp: Bonding - łączenie kilku łączy w jedno

Nie masz miejsca na instalacje tego, więc po to Ci extroot jest potrzebny.

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

31

Odp: Bonding - łączenie kilku łączy w jedno

Hmm... no aby to miejsce skad wykombinowac. /overlay to chyba flash, a z tego co czytalem extroot sluzy do powiekszenia pamieci flash...

OpenWrt Attitude Adjustment 12.09.1 (r42647)  + Gargoyle PL 1.6.2.2 (b70bfc1) @ TP-Link TL-WDR4300 v1 + extroot (DLNA, HD-Idle, HDD 1TB

32

Odp: Bonding - łączenie kilku łączy w jedno

No tak.

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

33

Odp: Bonding - łączenie kilku łączy w jedno

Jak w OpenWRT skonfigurowac interfejs TAP? mam /dev/net/tun, wiec w konfigu nie moge uzyc tap1, poniewaz jego nie mam. Jedyne co udalo mi sie wygooglac to

openvpn --mktun --dev tap0

ale to chyba zle rozwiazanie... hmm

OpenWrt Attitude Adjustment 12.09.1 (r42647)  + Gargoyle PL 1.6.2.2 (b70bfc1) @ TP-Link TL-WDR4300 v1 + extroot (DLNA, HD-Idle, HDD 1TB

34

Odp: Bonding - łączenie kilku łączy w jedno

Uruchom OpenVPN to interfejs powinien się sam zrobić.

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

35

Odp: Bonding - łączenie kilku łączy w jedno

Hmm ale kmod-tun jest opisywany jako "Kernel TUN/TAP extension", więc coś ma wspólnego z TAP i chyba powinien też to obsługiwać. Ale nie wiem - nie znam się :] Czyli bez instalacji OpenVPN się nie obejdzie?

OpenWrt Attitude Adjustment 12.09.1 (r42647)  + Gargoyle PL 1.6.2.2 (b70bfc1) @ TP-Link TL-WDR4300 v1 + extroot (DLNA, HD-Idle, HDD 1TB

36

Odp: Bonding - łączenie kilku łączy w jedno

A ty chcesz sam interfejs utworzyć? Był program o nazwie tunctl czy tunctl chyba do tego.

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

37

Odp: Bonding - łączenie kilku łączy w jedno

Masz, skompilowałem: http://ecco.selfip.net/test/ Wywołanie to tunctl -t tap0 (ale nie sprawdzałem w ogóle czy działa)

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

38

Odp: Bonding - łączenie kilku łączy w jedno

super dzieki, wlasnie w taki sposob tworze tap na debianie po stronie serwera. sprawdze to pozniej bo w robocie siedze... rozumiem, ze kernel obsluge TAP posiada (kmod-tun), a tunctl to tylko narzedzie, ktore "mowi" do kernela, ze ma taki interfejs stworzyc?

OpenWrt Attitude Adjustment 12.09.1 (r42647)  + Gargoyle PL 1.6.2.2 (b70bfc1) @ TP-Link TL-WDR4300 v1 + extroot (DLNA, HD-Idle, HDD 1TB

39

Odp: Bonding - łączenie kilku łączy w jedno

tak jest.

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

40

Odp: Bonding - łączenie kilku łączy w jedno

działa...

OpenWrt Attitude Adjustment 12.09.1 (r42647)  + Gargoyle PL 1.6.2.2 (b70bfc1) @ TP-Link TL-WDR4300 v1 + extroot (DLNA, HD-Idle, HDD 1TB

41

Odp: Bonding - łączenie kilku łączy w jedno

Mam mały problem...

Po ustawieniu bondingu ustawiam statyczny routing

ip route add default via 172.16.0.1 dev bond0

172.16.0.1 - drugi koniec tunelu po stronie serwera

Dodaje mi się to do tablicy main, więc chyba tak jak być powinno. Natomiast po restarcie połączenia Aero2 router sam kasuje ten wpis i dodaje swój typu:

 ip route add default via 10.64.64.64 lub .65 dev 3g-wan1 lub 3g-wan2

Czemu tak się dzieje? Ogólnie wydaje się to w porządku, ale tylko wtedy, jak coś się by działo z tunelem. Wtedy taki default route jest jak najbardziej wskazany. Czy można jakoś to wszystko tak sprawnie ustawić, że jeśli jest zestawiony tunel to ten default route się nie tworzy, ale jeśli tunel leży to niech się dodaje?

Druga sprawa: czy jest możliwość filtrowania ruchu na poziomie interfejsu bond0 po stronie openwrt (172.16.0.2, bonding tap1 i tap2). W /etc/config/firewall są zdefiniowane zony lan i wan, więc do której należy bond0? Czy trzeba zdefiniować nową zone?

Dzięki!

OpenWrt Attitude Adjustment 12.09.1 (r42647)  + Gargoyle PL 1.6.2.2 (b70bfc1) @ TP-Link TL-WDR4300 v1 + extroot (DLNA, HD-Idle, HDD 1TB

42

Odp: Bonding - łączenie kilku łączy w jedno

Do połączenia przez 3g dodaj sobie option defaultroute 0, nie będzie ustawiał trasy domyślnej przez modem.

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

43

Odp: Bonding - łączenie kilku łączy w jedno

chyba pomogło...

a co z drugim pytaniem?

OpenWrt Attitude Adjustment 12.09.1 (r42647)  + Gargoyle PL 1.6.2.2 (b70bfc1) @ TP-Link TL-WDR4300 v1 + extroot (DLNA, HD-Idle, HDD 1TB

44

Odp: Bonding - łączenie kilku łączy w jedno

A co do drugiego - to zależy co chcesz z tym zrobić. Jeżeli wykorzystujesz to jako wan to po prostu dodaj to do wanu.

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

45 (edytowany przez kornis 2012-06-21 14:02:45)

Odp: Bonding - łączenie kilku łączy w jedno

No tak, logiczne. Pytam raczej z ciekawosci, poniewaz sam jeszcze nie wiem co do konca chce osiagnac.

Tunel wydaje sie, ze jest zestawiony. Jak go dopieszcze to podziele sie na forum informacjami - ogolnie bazowalem na skryptach uzytkownika slima - dzieki za pomoc.

Mam jeszcze pytanko dot. firewalla: opcja conntrack wlacza sledzenie statusu polaczenia, czyli taki stateful firewall? I dla wlaczonej maskarady jest automatycznie wlaczona? Reasumujac - w standardowej konfiguracji z wlaczona maskarada miedzy strefami lan i wan jest stateful firewall, czyli nie trzeba ustawiac regulek powrotnych z wan do lan?

OpenWrt Attitude Adjustment 12.09.1 (r42647)  + Gargoyle PL 1.6.2.2 (b70bfc1) @ TP-Link TL-WDR4300 v1 + extroot (DLNA, HD-Idle, HDD 1TB

46

Odp: Bonding - łączenie kilku łączy w jedno

Nie, nic nie musisz robić. Domyślnie jest tak jak to sobie można wymyślić, z REJECT na wejsciu wanu dla połączeń przychodzących.

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

47

Odp: Bonding - łączenie kilku łączy w jedno

Pojawiła się nowa wersja Vtun 3.0.3. Czy ktoś mógłby zrobić paczkę pod OpenWrt albo podesłać linka do opisu jak instalować ze źródeł pod OpenWrt? Dzięki!

OpenWrt Attitude Adjustment 12.09.1 (r42647)  + Gargoyle PL 1.6.2.2 (b70bfc1) @ TP-Link TL-WDR4300 v1 + extroot (DLNA, HD-Idle, HDD 1TB

48

Odp: Bonding - łączenie kilku łączy w jedno

http://eko.one.pl/?p=openwrt-kompilacja

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

49

Odp: Bonding - łączenie kilku łączy w jedno

mam pytanie - czy rolę serwera może pełnić ruter z openwrt? (A klienta komp z linuxem?)

50

Odp: Bonding - łączenie kilku łączy w jedno

Jak wszystko poustawiasz to czemu nie.

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