Skocz do zawartości

Iptables + Lstat + Squid


MrReal

Rekomendowane odpowiedzi

Witam :)

Poradźcie prosze jak należy ustawić regułki iptables aby lstat zliczał ruch www przez transparentnego squida. Nie jest to chyba takie trudne na jakie wygląda i problem leży tylko w odpowiednim manipulowaniu iptables, a ja już się pogubiłem :unsure:

 

Na początku jest coś takiego:

$IPT -t nat -A PREROUTING -s $INTNET -p tcp -d ! $INTNET --dport 80 -j REDIRECT --to-port 8080

Czyli przekierowanie wszystkiego na squida.

 

Po drugie NAT:

$IPT -t nat -A POSTROUTING -o $EXTIF -s $ip -j SNAT --to $EXTIP

 

Dalej jest FORWARD (dla download i upload):

$IPT -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j $DOWN

$IPT -A FORWARD -i $INTIF -o $EXTIF -j $UPL

 

A DOWN i UPL to nic innego jak:

$IPT -A $DOWN -i $EXTIF -p all -d $ip -j ACCEPT

$IPT -A $UPL -o $EXTIF -p all -s $i -j ACCEPT

Czyli jak już coś trafi do DOWN albo UPL to zostaje przepuszczone. Każdy ip z LANu ma tutaj swój wpis po to właśnie aby było skąd czerpać dane do lstata.

Wszystko działa super o ile nie ma squida.

Jak włączam przekierowanie na squida to nagle pakiety z www przestają iść przez FORWARD?. Nie czaje tego no bo jak to? To którędy idą jak nie przez FORWARD a dalej przez DOWN lub UPL :blink:

W lstat nie rejestruje ruchu na poszczególnych ip. (za to rejestruje ruch z INPUT w którym widać że coś tam jednak idzie)

 

Ja to rozumiem tak (bez proxy):

Idzie pakiet -> włazi do FORWARD -> przechodzi przez DOWN -> coś tam sobie robi w POSTROUTING -> idzie do destination w LANie

 

Z proxy jest chyba tak:

Idzie pakiet -> wchodzi do PREROUTING -> zmienia się jego dport na 8080 -> idzie do INPUT -> wchodzi do squida -> idzie OUTPUT -> w LAN

 

No tak.... ;) i w tym momencie mnie oświeciło :P

Ale żeby powyższe pisanie nie poszło na marne to napisze co wystarczyło zrobić :D

 

$IPT -A OUTPUT -o $INTIF -p tcp -s $INTIP -d $INTNET --sport ! $PROXY -j ACCEPT

$IPT -A OUTPUT -o $INTIF -s $INTIP -d $INTNET -j $WWW

 

WWW:=

$IPT -A $WWW -o $INTIF -p all -d $ip -j ACCEPT

 

<jupi>

A męczyłem się i myślałem chyba z tydzień :P

 

Pozdrawiam :D

 

EDIT

oho a jednak zonk. Mały zonk ale zonk bo proxy przyjmuje na 8080 ale z jakiego portu wysyła?

Chiałem rozdzielić w OUTPUT ruch od proxy i inny (np putty itp) i dlatego zrobiłem powyższe 2 regułki. Niby dziala ale nie jestem pewien czy tak jak chce

So Please Help :)

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...