Witam,
W 2010 roku stworzyłem na własne potrzeby system zarządzania siecią - głównie połączeniem internetowym, którego zadaniem jest udostępnianie i dzielenie połączenia, zarządzanie taryfami (zapewnione/maksymalne prędkości), klientami, urządzaniami, płatnościami. Po dodaniu do crona system sam nalicza odpowiedni abonament wg taryfy i odcina klienta (żądania ze wszystkich jego urządzeń przekierowuje na stronę z komunikatem) jeśli zalega więcej niż miesiąc, dzięki czemu zarządzanie sprowadza się do wprowadzenia raz danych i księgowania płatności przez przeglądarkę internetową.
System napisany był w PHP w kohana framework i na podstawie danych z bazy generował odpowiednie reguły IPTABLES, u mnie obsługiwał ok. 30 urządzeń i można powiedzieć, że się sprawdził, dlatego postanowiłem go udoskonalić - przepisać w phalcon framework i udostępnić kod open source'owo na githubie.
Jeśli znajdzie się ktoś kto wdroży, będzie używał i będzie taka potrzeba, to można bez problemu go rozwijać jeszcze dalej, np. dodać obsługę płatności online czy multiwan. Mi to nie jest potrzebne więc może w kolejnych wersjach.
LAS jest inspirowany przez LMS, którego chyba nie trzeba przedstawiać. Gdyby ktoś chciał przetestować, pomóc w rozwoju to system umieściłem na githubie: https://github.com/mruz/las. Chciałbym zaznaczyć, że potrzeba więcej czasu, żeby dopracować reguły domyślnych firewalli, ale jak można zauważyć składnia jest to dość prosta i można edytować przez przeglądarkę. Oczywiście można stworzyć własne. Gdyby ktoś czuł się na siłach, to proszę zgłaszać poprawki.
demo
user: admin
password: admin
* Z wiadomych względów na demo nie działa cron, nie można też przeładowywać firewalli, a kompilacja aktywnych jest wykonywana interwałowo. Jeśli więc uzupełnimy danymi, zmodyfikujemy jakiś firewall, to co 10min firewalle są kompilowane i można podglądnąć jakie komendy firewall wyprodukuje.
Jest to wersja alpha, więc proszę o zgłaszanie błędów/poprawek na issues. Odsyłam też do, jak na razie skromnej, dokumentacji.
LAN administration system
Demo uzupełniłem przykładowymi danymi, tak aby można było podglądnąć co generuje dany firewall.
W dokumentacji jest opisana procedura instalacji na openSUSE, ale phalcona skompilować można bez problemu ze źródeł:
A następnie dodać rozszerzenie w php.ini
Pytanie do usług - QoS.
Taryfy mają swoje limity i priorytety. Chcę to zrobić tak, że jak włączymy QoS to dla każdej taryfy zostaną dodane podtaryfy - priorytety, które procentowo będą dzieliły daną taryfę:
Wartości te można zmodyfikować w ustawienia/qos. Zaznaczam, że to jeszcze nie działa prawidłowo. Usługi mogą być dla urządzenia, klienta czy dla wszystkich. Będziemy mogli ustawić np.
WWW 0-512KB High
WWW 512KB+ Low
DNS 0-2KB Highest
DNS 2KB+ Lowest
Porty 1024-65535 Lowest
Główny firewall może prezentować się tak LAS-main, a reguły zezwalające LAS-allow. Firewall jest modułowy, więc nie musimy przeładowywać wszystkiego za każdą zmianą. Po naliczeniu płatności i odcięciu użytkownika przeładuje się LAS-deny, który jest sprawdzany na początku i klient zostanie odcięty zanim zostanie zaakceptowany. Po rozliczeniu płatności wystarczy przeładować LAS-deny (albo cron to zrobi za nas). Tak samo przypomnienia, jeśli będzie zalegał to np. co godz info i musi nacisnąć coś żeby dalej korzystać.
System można wykorzystać do generacji własnego firewalla, przykład:
Macie jakieś własne reguły firewall, tak aby razem coś poprawić i udoskonalić. Nie wklejam ich tu żeby nie zaśmiecić, a i tak brak kolorowania. Znajdzie się jakiś dostawca internetu jeszcze, gotowy przetestować system? Może ktoś ma jakieś pomysły, zawsze lepiej to skonfrontować się z kimś.
W dokumentacji jest opisana procedura instalacji na openSUSE, ale phalcona skompilować można bez problemu ze źródeł:
Kod: Zaznacz cały
# Requirements
sudo apt-get install php5-dev php5-mysql gcc libpcre3-dev
git clone --depth=1 git://github.com/phalcon/cphalcon.git
cd cphalcon/build
sudo ./install
Kod: Zaznacz cały
extension=phalcon.so
Taryfy mają swoje limity i priorytety. Chcę to zrobić tak, że jak włączymy QoS to dla każdej taryfy zostaną dodane podtaryfy - priorytety, które procentowo będą dzieliły daną taryfę:
Kod: Zaznacz cały
Prio Rate Ceil
1: 70 - 100%
2: 10 - 100%
3: 10 - 95%
4: 5 - 95%
5: 5 - 90%
WWW 0-512KB High
WWW 512KB+ Low
DNS 0-2KB Highest
DNS 2KB+ Lowest
Porty 1024-65535 Lowest
Główny firewall może prezentować się tak LAS-main, a reguły zezwalające LAS-allow. Firewall jest modułowy, więc nie musimy przeładowywać wszystkiego za każdą zmianą. Po naliczeniu płatności i odcięciu użytkownika przeładuje się LAS-deny, który jest sprawdzany na początku i klient zostanie odcięty zanim zostanie zaakceptowany. Po rozliczeniu płatności wystarczy przeładować LAS-deny (albo cron to zrobi za nas). Tak samo przypomnienia, jeśli będzie zalegał to np. co godz info i musi nacisnąć coś żeby dalej korzystać.
System można wykorzystać do generacji własnego firewalla, przykład:
Kod: Zaznacz cały
{# dla wszystkich klientów #}
{% for client in clients %}
{# dla każdego aktywnego urządzenia klienta #}
{% for device in client.getDevices("status=" ~ devices__ACTIVE()) %}
{# dodaj regułę zezwalającą na ruch o danym ip i mac #}
{{ ipt }} -A FORWARD -s {{ device.IP|long2ip }} -m mac --mac-source {{ device.MAC }} -m state --state NEW -j ACCEPT
{% endfor %}
{% endfor %}