-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Jeśli odpowiadają Ci domyślnie ustawione wartości katalogów i nazwy plików konfiguracyjnych:
~#curl -sS https://raw.githubusercontent.com/darton/fw/master/install.sh |bash
Jeśli przed instalacją chcesz wcześniej zmienić konfigurację:
~#wget https://raw.githubusercontent.com/darton/fw/master/install.sh
po wykonaniu zmian:
bash ./install.sh
/opt/gateway/scripts/fw.sh
Usage: fw.sh start|stop|restart|reload|stats|lmsd|qos|status|maintenance-on|maintenance-off
Konieczne do uruchomienia skryptu pliki konfiguracyjne (domyślnie puste):
Zawiera listę hostów z publicznymi adresami IP w formacie: "grantedhost|deniedhost|warnedhost adres_ip" Plik fw_public_ip służy do prowadzenia rejestru adresów IP, które mają być rutowane (bez NAT) np
grantedhost 192.168.102.101 grantedhost 192.168.102.105 deniedhost 192.168.102.105
Taki plik może wygenerować odpowiednio skonfigurowany LMS z wykorzystaniem instancji LMSD o nazwie hostfile.
Zawiera listę hostów z prywatnymi adresami IP natowanymi 1-1 na adresy publiczne w formacie: "grantedhost|deniedhost|warnedhost prywatny_adres_ip publiczny_adres_ip"
Taki plik może wygenerować odpowiednio skonfigurowany LMS z wykorzystaniem instancji LMSD o nazwie hostfile.
Zawiera listę w formacie: "nazwa_pliku_z_lista_adresów_IP publiczny_adres_ip", opisującego powiązania plików z prywatnymi adresami IP i odpowiadającymi im publicznymi adresami IP na które będą NAT-owane. Nazwa "nazwa_pliku_z_lista_adresów_IP" jest także nazwą listy ipset stworzonej na podstawie adresów ip zamieszczonych w tym pliku.
Jeśli mamy wiele adresów ip na, które chcemy natować w systemie jeden do wielu, tworzymy osobne pliki dla nich np.: fw_nat_ip1, fw_nat_ip2, fw_nat_ip3, fw_nat_ip4, itd. Do każdego pliku wrzucamy listę adresów IP hostów wraz z ich statusami (denied| granted) Zaś w pliku fw_nat_1-n zapisujemy powiązania pomiędzy tymi plikami a adresami IP, na które ma odbywać się natowanie.
Przykładowa zawrtość pliku fw_nat_1-n:
fw_nat_ip1 172.16.0.1 fw_nat_ip2 172.16.0.111 fw_nat_ip3 172.16.0.222 fw_nat_ip4 172.16.0.253
Wtedy wszystkie adresy IP jakie zawiera plik fw_nat_ip1 będą natowane na adres 172.16.0.1, zaś wszystkie adresy IP zawarte w pliku fw_nat_ip2 będą natowane na adres IP 172.16.0.111 ... itd.
Taki plik może wygenerować odpowiednio skonfigurowany LMS z wykorzystaniem instancji LMSD o nazwie hostfile.
Pliki z adresami IP, które mają być natowane na jeden konkretny adres IP. Przykładowa zawartość:
grantedhost 192.168.102.96 deniedhost 192.168.102.99
Nazwy plików mogą być dowolne, muszą być tylko spójne z tym co zawiera plik fw_nat_1-n. W przykładzie opisane są nazwy jakie są skonfigurowane na zrzutach ekranu
Takie plik może wygenerować odpowiednio skonfigurowany LMS z wykorzystaniem instancji LMSD o nazwie hostfile. Poniżej przykład dla pliku o nazwie fw_nat_ip1
Służy to prowadzenia rejestru sieci oraz adresów IP bramek (gateway) na które te sieci mają być rutowane w formacie: Sieć/prefiks adres_IP_bramki, przykładowa zawartość:
172.16.0.128/30 172.16.1.7 172.16.1.128/30 172.16.1.8 172.16.3.128/30 172.16.1.9
Taki plik może wygenerować odpowiednio skonfigurowany LMS z wykorzystaniem instancji LMSD o nazwie hostfile.
Zawiera listę portów TCP/IP w formacie: "numer_portu"
Taki plik może wygenerować odpowiednio skonfigurowany LMS z wykorzystaniem instancji LMSD o nazwie hostfile.
Zawiera listę adresów IP i sieci
Taki plik może wygenerować odpowiednio skonfigurowany LMS z wykorzystaniem instancji LMSD o nazwie hostfile.
Zawiera gotowy plik konfiguracyjny dla serwera dhcp.
Taki plik może wygenerować odpowiednio skonfigurowany LMS z wykorzystaniem instancji LMSD o nazwie dhcp.
Gdy już mamy gotowe pliki konfiguracyjne uruchamiamy zaporę poleceniem:
Polecenie fw.sh start uruchomi zaporę odczytując parametry konfiguracyjne zawarte w plikach konfiguracyjnych, dokona restartu serwera DHCP oraz reguł shapera.
Wykonanie fw.sh stop zatrzyma zaporę, wyłączy forwardowanie pakietów, włączy domyślne polityki dla iptables (np FORWARD DENY).
wykona fw.sh start a potem ./fw stop czyli usunie wszystkie reguły iptables oraz ipset i utworzy je na nowo, powoduje to zerwanie wszystkich połączeń i przerwę w transmisji na kilka sekund.
wykona zmiany tylko tych reguł iptables, które się zmieniły: czyli np. usunie lub doda konkretną regułę iptables, lub podmieni tablice ipset. Aby uniknąć przerw w transmisji pakietów odczuwalnych dla wszystkich użytkowników należy korzystać właśnie z opcji reload przy wprowadzaniu zmian.
Ten moduł służy do współpracy z LMS (http://lms.org.pl). Nasz router/firewall może wtedy pracować w sposób automatyczny. Sterowanie fw.sh odbywa się wtedy z poziomu LMS. fw.sh sprawdzi czy w LMS został ustawiony przez operatora status przeładowania danego hosta i wykona przeładowanie lub restart w zależności, które pliki konfiguracyjne i co w nich zostało zmienione. Jeśli pliki nie zostały zmienione, a w LMS został ustawiony status przeładowania, skrypt to wykryje, zmieni status przeładowania w LMS na wykonane, ale nie wykona restartu/przeładowania, zapisze tylko informacje w logach.
Po instalacji ./fw.sh lmsd jest uruchamiany co minutę przez cron. uruchamianie fw.sh z modułem lmsd wymaga odpowiedniej konfiguracji LMS, tak by LMS generował pliki konfiguracyjne dla fw.sh w odpowiednim dla niego formacie raz aby możliwe było sterowanie praca fw.sh z poziomu LMS.
ta opcja przydaje się jeśli mamy skonfigurowany LMS w ten sposób, że komputerom przypisane zostały taryfy. Skrypt obsługuje także taryfe nocną (opcja shaper_restart). Działanie Shapera jest zoptymalizowane dla dużych ilości komputerów i taryf.
Zatrzymuje Shaper
Uruchamia Shaper
Pobiera plik konfiguracyjny Shapera ze zdalnego serwera (LMS) a następnie zatrzymuje i ponownie uruchamia Shaper z nową konfiguracją.
Aby dostosować ustawienia zadań wykonywanych przez moduł shaper w cron do własnych potrzeb, należy edytować funcję fw_cron w pliku fwfunction, a jeśli już skrypt pracuje (został uruchomiony produkcyjnie) to także plik /etc/cron.d/fw_sh
Domyślne wartości ustawione dla funkcji fw_cron:
Terminy przeładowania skryptu ./fw.sh z opcją shaper_restart dla taryfy nocnej od 22:00 do 10:00:
"00 22 * * * /opt/gateway/scripts/fw.sh shaper_restart" "00 10 * * * /opt/gateway/scripts/fw.sh shaper_restart"
Format pliku konfiguracyjnego dla modułu Shapera, którego nazwę określa się w zmiennej "shaper_file" w pliku fw.conf:
Plik musi zaczynać się od deklaracji poniższych parametrów. Jeśli te parametry nie zostaną podane, zostaną użyte domyślne parametry określone w pliku fw.conf.
ISP_RX_LIMIT=470000kbit
ISP_TX_LIMIT=470000kbit
GW_TO_LAN_RATE_LIMIT=100kbit
GW_TO_LAN_CEIL_LIMIT=200000kbit
GW_TO_WAN_RATE_LIMIT=100kbit
GW_TO_WAN_CEIL_LIMIT=50000kbit
LAN_UNCLASSIFIED_RATE_LIMIT=16kbit
LAN_UNCLASSIFIED_CEIL_LIMIT=128kbit
WAN_UNCLASSIFIED_RATE_LIMIT=16kbit
WAN_UNCLASSIFIED_CEIL_LIMIT=128kbit
GW_TO_LAN_PRIORITY=2
GW_TO_WAN_PRIORITY=2
LAN_UNCLASSIFIED_PRIORITY=7
WAN_UNCLASSIFIED_PRIORITY=7
LAN_HOSTS_PRIORITY=2
WAN_HOSTS_PRIORITY=2
ISP_RX_LIMIT oraz ISP_TX_LIMIT to wynikające z kontraktu z operatorem nadrzędnym parametry łącza dostępowego do sieci Internet pomniejszone o ok 5-10% aby uniknąć zapełniania kolejki modemu operatora.
GW_TO_LAN_RATE_LIMIT to gwarantowana prędkość dla ruchu wychodzącego do sieci LAN, którego źródłem jest Gateway na którym pracuje skrypt fw.sh
GW_TO_LAN_CEIL_LIMIT to limit ruchu wychodzącego do sieci LAN, którego źródłem jest Gateway na którym pracuje skrypt fw.sh
GW_TO_WAN_RATE_LIMIT to gwarantowana prędkość dla ruchu wychodzącego do sieci WAN, którego źródłem jest Gateway na którym pracuje skrypt fw.sh
GW_TO_WAN_CEIL_LIMIT to limit ruchu wychodzącego do sieci WAN, którego źródłem jest Gateway na którym pracuje skrypt fw.sh
LAN_UNCLASSIFIED_RATE_LIMIT to gwarantowana prędkość dla ruchu wychodzącego do sieci LAN nie sklasyfikowanego, czyli komputerów urządzeń nie ujętych w pliku konfiguracyjnym dla modułu Shaper
LAN_UNCLASSIFIED_CEIL_LIMIT to limit dla ruchu wychodzącego do sieci LAN nie sklasyfikowanego, czyli komputerów urządzeń nie ujętych w pliku konfiguracyjnym dla modułu Shaper
WAN_UNCLASSIFIED_RATE_LIMIT to gwarantowana prędkość dla ruchu wychodzącego do sieci WAN nie sklasyfikowanego, czyli komputerów urządzeń nie ujętych w pliku konfiguracyjnym dla modułu Shaper
WAN_UNCLASSIFIED_CEIL_LIMIT to limit dla ruchu wychodzącego do sieci WAN nie sklasyfikowanego, czyli komputerów urządzeń nie ujętych w pliku konfiguracyjnym dla modułu Shaper
W siedmiostopniowej skali od 1 do 7 gdzie 1 oznacza najwyższy priorytet a 7 najniższy określane są także priorytety dla następujących grup.
GW_TO_LAN_PRIORITY - priorytet dla pakietów wysyłanych z GW do sieci LAN.
GW_TO_WAN_PRIORITY - priorytet dla pakietów wysyłanych z GW do sieci WAN.
LAN_UNCLASSIFIED_PRIORITY - priorytet dla pakietów nie sklasyfikowanych wysyłanych do sieci LAN.
WAN_UNCLASSIFIED_PRIORITY - priorytet dla pakietów nie sklasyfikowanych wysyłanych do sieci WAN.
LAN_HOSTS_PRIORITY - priorytet dla pakietów wysyłanych do sieci LAN, kierowanych do hostów dla, których ruchem zarządza moduł shaper.
WAN_HOSTS_PRIORITY - priorytet dla pakietów wysyłanych do sieci WAN, kierowanych z hostów dla, których ruchem zarządza moduł shaper.
Następnie dla każdego hosta powinny być określone parametry klas UP/DOWN HTB, przy czym kilka hostów może być przypisanych do jednej pary klasy HTB.
Przykładowa konfiguracja dla jednego hosta przypisanego do jednej pary klas UP/DOWN:
#konfiguracja komputerów klientów customer 1
class_up 8kbit 1024kbit
class_down 8kbit 5120kbit
filter 192.168.101.24
dla kilku hostów przypisanych do pary klas:
customer 2
class_up 8kbit 1024kbit
class_down 8kbit 5120kbit
filter 192.168.10.24
filter 192.168.10.25
filter 192.168.10.26
Klient może mieć kilka taryf (kilka umów na usługi) i przypisane do nich różne komputery. Wtedy dla każdej taryfy trzeba wygenerować odpowiedni zestaw rekordów. Np. jeśli klient o id 1 miałby jeszcze dwie dodatkowe umowy/taryfy z przypisanymi do nich po po jednym modemie/komputerze, należy dodać następujące rekordy
customer 1
class_up 8kbit 1024kbit
class_down 8kbit 5120kbit
filter 192.168.101.30
customer 1
class_up 8kbit 1024kbit
class_down 8kbit 5120kbit
filter 192.168.101.34
Znak "#" oznacza komentarz i nie jest parsowany przez moduł shaper. Cyfra po słowie customer to unikalne id klienta w LMS. Wyrażenia class_up oraz class_down mają jako parametry rate oraz ceil, gdzie RATE to jest minimalna gwarantowana prędkość, a CEIL to maksymalna niegwarantowana prędkość. Wyrażenie filter jako parametr ma adres ip hosta, którego dotyczy konfiguracja.
Taki plik może wygenerować odpowiednio skonfigurowany LMS z wykorzystaniem instancji lmsd o nazwie tc-new.
Ta opcja modułu shaper dostarcza szczegółowe statystyki dla każdego hosta, poprzez odczyt z liczników iptables.
Jeśli chcemy zaimportować statystki ruchu naszych klientów do LMS, należy na maszynie z LMS uruchamiać cyklicznie np. co 5 minut skrypt zapisujący statystyki do bazy danych LMS. Mmusi to być taki sam czas jaki jest ustawiony w phpui LMS w parametrze stat_freq Czyli jeśli wybierzemy uruchamianie co 5 minut to stat_freq=300 (sekund)
Skrypt powinien zawierać dwa polecenia:
ssh -p 222 [email protected] '/opt/gateway/scripts/fw.sh stats' > /var/log/traffic.log bash /var/www/html/lms/bin/lms-traffic
gdzie 192.168.100.1 to adres IP naszego rutera na którym pracuje skryp fw.sh.
Polecenie pierwsze uruchomi zdalnie skrypt fw.sh z modułem stats, który odczyta liczniki przesłanych danych dla wszystkich hostów i zapisze je do pliku. Zaś drugie polecenie uruchomi skrypt, który odczyta plik /var/log/traffic.log i zaimportuje wartości do tabeli stats w bazie danych LMS.
W tym trybie wyłącza zaporę, wyłącza zadania uruchamiane w cron, wyłącza serwer DHCP, wyłącza interfejsy LAN i WAN, podnosi zaś interfejs zdefiniowany jako MGMT (management) i uruchamia na nim klienta DHCP .
Wykonanie tej komendy powoduje przejście do normalnego trybu pracy.