Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Linux router - zrywanie połączeń TCP

pci.sat 26 Lut 2015 21:55 1005 9
  • #1 26 Lut 2015 21:55
    pci.sat
    Poziom 9  

    Mam problem z uruchomieniem Linuxa jako router, który rozdziela dwa zewnętrzne łącza do Internetu.

    Mam serwer na Raspbianie. Ten serwer ma z założenia służyć jako router. I mam następującą sytuację:
    - eth0 - podsieć 192.168.0.0 - sieć wewnętrzna, w której działa uruchomiona na serwerze usługa DHCP, DHCP daje IP z podsieci 192.168.0.0/24 i podaje swój IP z tej podsieci jako gateway.
    - wlan0 - interfejs zewnętrzny, ze stałym IP, podsieć 192.168.8.1
    - wlan1 - interfejs zewnętrzny, ze stałym IP, podsieć 192.168.9.1

    Mam tabele routingu upwlan0 i upwlan1.

    Mam ustawione gateway za pomocą:

    ip route add default via 192.168.8.1 table upwlan0
    ip route add default via 192.168.9.1 table upwlan1

    Dodatkowo mam:

    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
    iptables -t nat -A POSTROUTING -o wlan1 -j MASQUERADE

    Istotą problemu jest polecenie:

    ip route add default scope global nexthop via 192.168.8.1 dev wlan0 weight 1 nexthop via 192.168.9.1 dev wlan1 weight 1

    Sytuacja wygląda tak:

    Jak routing jest ustawiony tak:

    ip route add default scope global nexthop via 192.168.8.1 dev wlan0 weight 1

    Lub tak:

    ip route add default scope global nexthop via 192.168.9.1 dev wlan1 weight 1

    To wszystko działa idealnie, tzn. zarówno na serwerze jak i na każdym komputerze podłączonym do sieci eth0 (któremu DHCP przydzieli IP z podsieci 192.168.0.0). Ale oczywiście cały ruch idzie przez jeden interfejs zewnętrzny (przez odpowiedni w zależności od polecenia).

    Natomiast po wykonaniu polecenia:

    ip route add default scope global nexthop via 192.168.8.1 dev wlan0 weight 1 nexthop via 192.168.9.1 dev wlan1 weight 1

    Jest sytuacja taka, że na serwerze wszystko działa idealnie, www,, ssh, wszystko bez zarzutów i faktycznie cały ruch jest rozdzielany losowo pomiędzy wlan0 i wlan1, całość działa ok, bez żadnych problemów.

    Problem jest na innych komputerach z sieci 192.168.0.0. Efekt jest taki, że ping generalnie działa (choć widać na oko około 25% utraconych pakietów), natomiast wszystkie usługi opierające się na TCP nie działają i wywalają zazwyczaj "Connection reset".

    Pytanie jest - o co chodzi!?

    Wg mnie wygląda na to, że rutowanie pakietów nie zachowuje połączeń TCP i rutuje każdy pakiet z podsieci niezależnie.

    Czy zrobić, aby działało sensownie?

    1 9
  • #2 28 Lut 2015 17:48
    jurek.adam
    Poziom 43  

    Jeśli masz dwa różne łącza, czyli inne bramy, to aby nie wywalało połączeń TCP przy przełączaniu się z jednego na drugie musiałbyś użyć protokołu BGP skonfigurowanego u dostawcy. Jeśli jest to niemożliwe to zakup jakiegoś Drayteka lub innego routera podobnej klasy z Dual-WAN pomoże sensownie tym zarządzać z poziomu GUI.

    0
  • #3 28 Lut 2015 18:18
    smario11
    Poziom 31  

    Ewentualnie mikrotika bo najtaniej ale konfiguracja trudniejsza ale cena bardzo fajna jest na rb941 bo maja docelowo byc w 60zl netto ;)

    0
  • #4 28 Lut 2015 18:25
    szwagros
    Poziom 30  

    pci.sat napisał:
    Pytanie jest - o co chodzi!?

    Wg mnie wygląda na to, że rutowanie pakietów nie zachowuje połączeń TCP i rutuje każdy pakiet z podsieci niezależnie.

    TCPDUMP uruchomiony na każdym interfejsie da Ci zapewne odpowiedź.

    0
  • #5 28 Lut 2015 18:29
    jurek.adam
    Poziom 43  

    smario11 napisał:
    Ewentualnie mikrotika bo najtaniej ale konfiguracja trudniejsza ale cena bardzo fajna jest na rb941 bo maja docelowo byc w 60zl netto
    Można jeszcze taniej, stary router z możliwością wgrania Tomato Dual-WAN, ale pozostaje pytanie jaką przepustowość ma obracać ten sprzęt? Bo jeżeli chodzi o szybkie łącze to router musi być wydajny i trochę kosztować.

    0
  • #6 28 Lut 2015 23:22
    smario11
    Poziom 31  

    jurek.adam napisał:
    smario11 napisał:
    Ewentualnie mikrotika bo najtaniej ale konfiguracja trudniejsza ale cena bardzo fajna jest na rb941 bo maja docelowo byc w 60zl netto
    Można jeszcze taniej, stary router z możliwością wgrania Tomato Dual-WAN, ale pozostaje pytanie jaką przepustowość ma obracać ten sprzęt? Bo jeżeli chodzi o szybkie łącze to router musi być wydajny i trochę kosztować.

    Procka ma mieć 650MHz. Optymalizacja routeros tez jest dobra. Ilość RAMu to 32MB, ale to spokojnie starczy jeśli nie będzie działać jako koncentrator PPPOE.
    Myślę, że do 400mbit bez L7 może dać radę (optymistycznie), ale 200mbit na bank przemieli.
    Generalnie w tej cenie ten mikrotik rozwali temat. Dostępność za 1-2 tygodni.

    0
  • #7 02 Mar 2015 18:39
    luki923
    Poziom 6  

    Panowie, coś mi się wydaje, że Wasze odpowiedzi kompletnie nijak mają się do problemu opisanego przez człowieka. Konfiguracja iptables, o której on pisze kompletnie nijak ma się do BGP, a tym bardziej nijak ma się do kupowania urządzeń dual-WAN...

    Ja obstawiam, że tu wcale nie chodzi o 2xWAN tylko o Nx(dowolny interfejs sieciowy) i jest to pytanie dokładnie w tym kontekście. Tak więc fascynująca dyskusja na temat urządzeń kompletnie nic nie wnosi, ponieważ w poście nie ma ani słowa wskazującego, że aspekt sprzętowy jest jakkolwiek w zakresie problemu.

    Co do samego problemu, to nie mam pod ręką helpa iptables, ale wydaje mi się, że trzeba markować połączenia przychodzące z danego interfejsu i w stanie NEW (pakiet SYN) ustawiać znacznik interfejsu źródłowego po to, aby następnie wszystkie kolejne pakiety w ramach tego połączenia kierować do interfejsu wg marka.

    0
  • #8 02 Mar 2015 19:42
    jurek.adam
    Poziom 43  

    Podobnie pisał tylko też nie wie jak to zrobić:
    https://www.elektroda.pl/rtvforum/viewtopic.php?p=14487173&highlight=#14487173

    Powiem więcej - nie zrobi, bo założenie jest złe. Porady, żeby sobie kupił sprzęt, który pozwoli mu wyklikać coś w tym guście są na miejscu. Albo sam soft (np. RouterOS na PC).

    PS. "Man page iptables" jest w sieci.

    0
  • #9 02 Mar 2015 19:59
    luki923
    Poziom 6  

    jurek.adam napisał:
    Podobnie pisał tylko też nie wie jak to zrobić:
    https://www.elektroda.pl/rtvforum/viewtopic.php?p=14487173&highlight=#14487173


    Nieźle. W sumie powiedział prawdę ;)

    jurek.adam napisał:
    Powiem więcej - nie zrobi, bo założenie jest złe.


    Całkowicie się z Tobą nie zgadzam. Podejście jest w oczywisty sposób dobre. Istnieje wiele gotowych opisów.

    Np.

    http://unix.stackexchange.com/questions/87990...ux-as-router-with-multiple-internet-providers

    Problemem jest tylko i wyłącznie fakt, że bardzo trudno z palca napisać reguły dla iptables, że po prostu zadziałają u kogoś w jego konkretnej konfiguracji.

    Fakt, że to jest wykonalne nie podlega dyskusji, więc nie rozumiem dlaczego próbujesz sugerować, że jest inaczej.

    0
  • #10 03 Mar 2015 14:38
    jurek.adam
    Poziom 43  

    Niewykonalne dla autora deklarującego: "nie mam ani wiedzy ani czasu, aby wnikać w to", czyli trzeba machnąć to za niego, dać poprawną, działającą konfigurację (zadziała byle wersja iptables się zgadzała i było wkompilowane w kernel co trzeba), ale chętny się raczej nie znajdzie, zwłaszcza za darmo. Gdyby wystarczyły przykłady z sieci i "man iptables" nie byłoby tematu.

    0