1 (edytowany przez WoT 2022-01-07 13:45:32)

Temat: Firewall awaryjne przekierowanie

Cześć

Mam w sieci lan za routerem openwrt dwa małe serwery www 1-główny 2-awaryjny, Chciałbym:
1. W prosty sposób zapewnić przekierowanie ruchu na serwer 2-awaryjny w przypadku problemów z połączeniem z serwerem 1-głównym
2. Rozłączyć przekierowanie w przypadku wykrycia np: ataku DOS (czyli zatrzymania obecnego przekierowania, czy da się to zrobić np: komendą iptables?)

Jak to można zrobić?

Moja obecna konfiguracja routera jest bardzo prosta, zony wan i lan oraz klasyczne przekierowanie w /etc/config/firewall

config redirect
        option name             443-redirect
        option src              wan
        option src_dport        443
        option dest_port        443
        option dest             lan
        option dest_ip          192.168.1.2
        option proto            tcp
        option target           DNAT

2

Odp: Firewall awaryjne przekierowanie

1. od tego jest haproxy
2. znów haproxy. Możesz ograniczyć ilość zapytań która idzie do hosta

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

3

Odp: Firewall awaryjne przekierowanie

Dzięki haproxy wygląda obiecująco smile
Chociaż pakiet waży 495665 i może mi się nie zmieścić.

Jakaś alternatyw korzystając z tradycyjnych metod konfiguracji?

4

Odp: Firewall awaryjne przekierowanie

Jakiś zwykły skrypcik który wali pingami i jak przestaje coś odpowiadać to robi/zmienia przekierowania portów.

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

5

Odp: Firewall awaryjne przekierowanie

Taki spróbuję napisać.
Pytanie jaką komenda zmienić przekierowanie. Szukałem czy iptables potrafi, ale się nie moge doszukać.

Robić edycję /etc/config/firewall wydaje się nieco skomplikowane i łatwe o pomyłkę. Ponadto ciągłe zapisywanie pliku i restartowanie firewall mogłoby źle wpłynać na pamięć rw routera sad

6

Odp: Firewall awaryjne przekierowanie

iptables potrafi dodawać, usuwać i sprawdzać czy jest reguła. Więc możesz w skrypcie sprawdzać czy jest i odpowiednio ustawiać taką jak chcesz. Przez iptables, nie grzebiesz po plikach, nie restartujesz specjalnie firewalla.

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

7 (edytowany przez WoT 2022-01-13 21:44:18)

Odp: Firewall awaryjne przekierowanie

Ciągnę temat bo może się przyda dla potomnych.
Trochę postudiowałem i wymóżdżyłem reguły iptables na serwerze 2-awaryjnym, który pinguje 1-główny i jeśli jest ok, tworzy regułę:

iptables -t nat -A zone_wan_prerouting -p tcp -m tcp --dport 80  -m comment --comment "80-redirect"  -j DNAT --to-destination ip-główny:80

i dalej pinguje.
Ruch www jest przekazany na serwer 1-główny i tak normalnie powinno być.
Jeśli się niedopinguje kasuje wcześniej zadaną regułę, zleca restart 1-głównego i bierze obsługę strony na klatę:

iptables -t nat -D zone_wan_prerouting -p tcp -m tcp --dport 80  -m comment --comment "80-redirect"  -j DNAT --to-destination ip-główny:80
iptables -t filter -A zone_wan_input -p tcp -m tcp --dport  80 -m comment --comment  "80www" -j ACCEPT

i dalej pinguje.
Gdy się znów połączy z 1-głównym zrzuca z siebie rolę serwera

iptables -t filter -D zone_wan_input -p tcp -m tcp --dport  80 -m comment --comment  "80www" -j ACCEPT

...i zaczyna od początku.


Niby sukces, ale działa to jakoś ociężale.
Firewall szybko przyjmuje rolę przekierowania i działa to od razu, ale zdjęcie jej trwa z parędziesiąt sekund. Podobnie z otwarciem portu. Podczas testowania serwer 1-główny zdążył się zrestartować zanim nastąpiła wymiana reguł.
W odróżnieniu od komend wpisacych w config i /etc/init.d/firewall restart, które działają błyskawicznie.
Coś robę nie tak?
Próbowałem z opcją -I bez większych sukcesów.
Może jest komenda żeby szybciej pchnać zmianę?

8 (edytowany przez Cezary 2022-01-13 21:48:03)

Odp: Firewall awaryjne przekierowanie

root@OpenWrt:/# time iptables -t nat -A zone_wan_prerouting -p tcp -m tcp --dport 80  -m comment --comment "80-redirect"  -j DNAT --to-destination 192.168.1.100:80
real    0m 0.00s
user    0m 0.00s
sys    0m 0.00s
root@OpenWrt:/# time iptables -t nat -D zone_wan_prerouting -p tcp -m tcp --dport 80  -m comment --comment "80-redirect"  -j DNAT --to-destination 192.168.1.100:80
real    0m 0.00s
user    0m 0.00s
sys    0m 0.00s
root@OpenWrt:/# 

Obie reguły działają u mnie identycznie szybko i natychmiast.

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

9

Odp: Firewall awaryjne przekierowanie

Tak, zastosowanie reguły trwa ułamek sekundy.
Ale dla przykładu wykasowanie otwarcia portu serwera awaryjnego

iptables -t filter -D zone_wan_input -p tcp -m tcp --dport  80 -m comment --comment  "80www" -j ACCEPT

powoduje że na strona jest jeszcze przez parenaście sekund dostepna na serwerze awaryjnym i nie skutkuje przekierowaniem na główny.

10

Odp: Firewall awaryjne przekierowanie

Myślałem że to może kwestia jakiegoś cache www, ale nie. nc -zv 192.168.1.1 80 pokazuje, ze port wciąż jest otwarty mimo że poszła już reguła wykasowania tego otwarcia

11

Odp: Firewall awaryjne przekierowanie

A czasami nie powinieneś ubić nawiązanych już połączeń? Wyczyścić contracka?

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

12

Odp: Firewall awaryjne przekierowanie

Właśnie to miałem na uwadze pisząc o komendzie do "popchnięcia".
Znalazłem ze w klasycznym linuxie robi się: service iptables save

13

Odp: Firewall awaryjne przekierowanie

W sumie na chwilę obecną działa jak za każdym razem przed zastosowaniem reguły zrestartuję firewall smile
Mam nadzieję ze to nie wpływa negatywnie na pamięc routera.