konto usunięte
Temat: Analiza pakietów i kształtowanie ruchu
Witam!Mam taką zagwostkę: jest sobie maszyna z Freeradiusem. Standardowo słucha na porcie 1812. Każdy pakiet który przyjdzie na ten port zostaje normalnie obsłużony - norma :)
Natomiast jest drugi port, powiedzmy 2812 i pakiety przychodzące na ten port powinny być analizowane pod kątem nazwy użytkownika (są to pakiety RADIUSowe). Powiedzmy że szukam pakietów które mają user-name lukasz. Jeżeli jest taki user-name to przerzucam sobie pakiet na port 1812 i RADIUS się nim zajmuje. Jeżeli nie, to chciałbym cały ruch przerzucić do drugiej maszyny radiusowej na jej port 1812.
W skrócie:
Pakiet RADIUS
User-Name: lukasz ---port 2812--> user się zgadza -- redirect na port 1812 --> radius lokalny
Sytuacja 2:
Pakiet RADIUS
User-Name: marek ---port 2812 --> user się nie zgadza -- redirect na inny ip --> radius zdalny
Udało mi się taki efekt osiągnąć za pomocą iptables i parametru string:
iptables -t nat -A PREROUTING -p udp -m string --string "lukasz" --algo bm -d 192.168.1.202 --dport 2812 -j REDIRECT --to-port 1812
iptables -t nat -A PREROUTING -p udp -d 192.168.1.202 --dport 2812 -j DNAT --to-destination 192.168.1.110:1812
iptables -t nat POSTROUTING -s 192.168.1.33 -o eth0 -j SNAT --to-source 192.168.1.203
Niestety nie jest on zbyt dokładny, ponieważ powyższa reguła zostanie wykonana zarówno w przypadku loginu lukasz jak i lukasz68 a mogą być to dwie zupełnie różne osoby.
Zastanawiałem się czy można by wykorzystać jakoś do tego tsharka albo snorta, ale niestety nie przychodzi mi do głowy żadne sensowne rozwiązanie.
Z pewnych względów nie chcę tego także robić za pomocą konfiguracji samego radiusa - potrzebuję żeby pakiety wychodziły ode mnie różnymi interfejsami sieciowymi w zależności od tego z jakiego hosta przyszły.
Będę bardzo wdzięczny za wszelką pomoc :)
Łukasz