---------- Przekazana wiadomość ----------
Temat: Propozycje funkcjonalności... dwa i więcej łącz... Data: poniedziałek 28 stycznia 2008 Od: Konrad kcem@tlen.pl Do: lista użytkowników LMS lms@lists.lms.org.pl
Otóż... LMS ma beznadziejne wsparcie dla dwóch i więcej dostawców NETu.
Jeśli jesteś ISP to na 100% prędzej czy później w twojej sieci zacznie brakować łącza w świat. Najczęstszym rozwiązaniem jest poszerzenie łącza... ale czasem lepiej dokupić drugie źródło.
Jeśli już mamy dwóch dostawców, to trzeba przemyśleć sprawę jak puszczać ruch na łącza. Metody są dwie. Można nowych użytkowników wrzucać w całości na łącze nr 2, lub też można podzielić usługi między oba łącza... można też użyć obu sposobów na raz.
Niestety w LMSie nigdzie nie znajdziemy żadnego pola do wykonywania takich operacji. Rozwiązanie jest proste, ale mało eleganckie ... można wykorzystać pole info przy każdym komputerze, lub grupy przy użytkownikach.
Jak ja to robię... Najpierw dzielę użytkowników na łącza, a później usługi jeśli trzeba to przenoszę na inne łącze. Dzielenie na usługi załatwiam odgórnie dla wszystkich ... w konfiguracji DAEMONa jest wpisane które porty wychodzą przez który interfejs. Natomiast druga metoda jest załatwiana dzięki polu info. Jeśli w tym polu znajdzie się nazwa interfejsu, to komputer wychodzi w świat tylko przez ten interfejs. Niestety brakuje możliwości przypisywania do grup nie tyle klientów, co ich komputerów. Na jednym komputerze może siedzieć dzieciak co tylko P2P używa, a na drugim komputerze tego samego klienta może być ważny VPN i poważny gość, który potrzebuje niskich opóźnień. A więc, żeby rozdzielić komputery trzeba użyć pola, które posiada indywidualnie każde urządzenie (np. pole info). Podział na grupy odpada, bo grupę można przypisać tylko klientowi, bez podziału na komputery.
Co się jednak stanie jeśli odepniemy to łącze... (dłuższa awaria - np. wiatr złamał antenę, lub koniec umowy). Będzie trzeba wleźć na każdy komputer i skasować mu nazwę interfejsu przez który wychodzi, żeby wychodził przez domyślny interfejs. A po usunięciu usterki, ewentualnie umowa z nowym provajderem ... znów wprowadzać wszystkim tym ludziom wpis nazwy interfejsu. Normalnie dramat ...
Rozwiązaniem było by możliwość tworzenia grup i grupa domyślna. Na początku wszystkie komputery były by w grupie głównej... dla wszystkich sieci z jednym łączem. Przerzucenie ich do innej grupy polegało by na zaznaczeniu checkboxów koło komputerów i wybraniu z pola nazwy innej grupy (oczywiście wcześniej stworzonej).
Podaną grupę można było by wyłączyć, wtedy wszystkie komputery traktowane były by jako grupa domyślna, lub lepsza możliwość to ustawić, aby korzystała z konfiguracji innej grupy (zasłanianie własnej konfiguracji). Wtedy dana grupa podawała by w nazwie, że te komputery tak naprawdę są w innej grupie.
No i ostatnia rzecz ... utworzenie typów grup. Dzięki temu jeden komputer mógłby należeć do kilku grup, pod warunkiem, że były by one innych typów. Tym sposobem można było by ustawić, żeby komputer wychodził przez łącze na interfejsie np. eth2, natomiast, żeby należał do podrzędnej grupy, której port 80 wychodzi przez interfejs eth1.
Przy tworzeniu typu grupy można było by wskazać, czy komputery automatycznie mają się dodawać do którejś grupy (grupa domyślna), czy nie jest to konieczne.
No i dla każdego typu grup była by oddzielna instancja parsująca konfigurację dla daemon'a. Który typ grupy brany byłby w pierwszej kolejności, to już tylko zależy od wyobraźni osoby, która będzie pisała konfigurację. W przypadku łącz najpierw wrzuca się urztkownika na całe łącze, a później ewentualnie przenosi się jego porty na inne łącza.
Rozwiązanie przemyślane i co najważniejsze - uniwersalne. Można zastosować nie tylko do podziału komputerów na łącza i usługi. W ten sposób można też dodawać np. DHCP, albo inne rzeczy. Customersgroup jest mało używane i właściwie niewiele osób na dzień dzisiejszy z tego korzysta (ale mogę się mylić). Co nie znaczy, że trzeba to od razu wywalić;P
Zdaję sobie z tego sprawę, że to sporo nowego kodu, ale powiększa to znacznie funkcjonalność LMSa. Jest to wykonalne. Mogę służyć wszelką pomocą i pomysłami przy pisaniu tej rzeczy.
Pozdrawiam, Konrad Cempura
-------------------------------------------------------