Freesco, NND, CDN, EOS
http://forum.freesco.pl/

Squid transparentny - nowe NND
http://forum.freesco.pl/viewtopic.php?f=24&t=7324
Strona 1 z 1

Autor:  Alfred [ czwartek, 7 kwietnia 2005, 07:47 ]
Tytuł:  Squid transparentny - nowe NND

Squid działa, jako transparentny, porty przekierowane bałwan jestem:
Iptables –t nat –A PREROUTING –i eth1 –p tcp --dport 80 –j REDIRECT --to-port 3128

I teraz pytanie:
Jak (czarno na białym) sprawdzić, czy komputer klienta 'idzie' przez Squida ?
W IE (Win XP) jest internet, obojętnie, czy ustawię proxy na porcie 3128, czy też proxy jest wyłączone.
Problem polega na tym, że bałwan jestem iptables w firewallu raz liczą przepływające dane, a raz nie (a otwieram strony na których squid napewno jeszcze nigdy 'nie był').

Autor:  Jacq [ czwartek, 7 kwietnia 2005, 08:57 ]
Tytuł: 

wpisz zamiast adresu jakis fikcyjny adres i jak squid ci dziala to ci sie wyswietli jego komunikta ze strona nie istnieje.
To jest chyba najprosciej

Autor:  IT [ czwartek, 7 kwietnia 2005, 10:31 ]
Tytuł: 

ja bym zobaczyl w logach squida pod katem adreeu ip danego komputera

Autor:  Alfred [ czwartek, 7 kwietnia 2005, 10:59 ]
Tytuł: 

Cytuj:
ja bym zobaczyl w logach squida pod katem adreeu ip danego komputera

W logach nic nie ma, a squid raczej chodzi, bo komunikat z niego (patrz post wyżej) już kiedyś widziałem.
Dzięki za porady, sprawdzę jak będę przy kompie.

Autor:  Alfred [ piątek, 8 kwietnia 2005, 08:26 ]
Tytuł: 

Jeszcze jedno pytanie.
Dopisałem do standadowego firewalla (to - tłustym drukiem) bałwan jestem, które zliczają ruch:
Cytuj:
#!/bin/sh
# firewall 0.1-2004.12.27 Zciech (poprawka w lini 113 i 49 - macieks)
#
# W podstawowej wersji caly ruch z inerfejsow wewnetrznych jest dopuszczony i maskowany
# ruch z internetu zabroniony poza pakietami "powracajacymi" juz nawiazanych polaczen
# i polaczen na strone www (port 80 tcp) oraz pingi 1/s

. /etc/rc.conf
. /etc/rc.d/functions

i=`which iptables`

# Zmienne pobierane z rc.conf
# EXTIF="ppp0" # Interfejs do inetu
# CONNECTION="neorj" # Rodzaj polaczenia
# NETWORK=1 # Wlaczenie maskarady


case $1 in

start)

if [ -e /proc/sys/net/ipv4/tcp_ecn ];then
echo 0 > /proc/sys/net/ipv4/tcp_ecn
fi

echo 1 > /proc/sys/net/ipv4/ip_forward

if [ -e /proc/sys/net/ipv4/tcp_syncookies ] ; then
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
fi

for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo 1 > $f
done

$i -F
$i -F -t nat

$i -P INPUT DROP
$i -P FORWARD DROP
$i -P OUTPUT ACCEPT

# ================ Tu moje dopiski =================
$i -N RECV
$i -N SEND
# bałwan jestem dla każdego kompa
$i -A RECV -d 10.10.10.1 -j RETURN
$i -A SEND -s 10.10.10.1 -j RETURN
$i -A RECV -d 10.10.10.2 -j RETURN
$i -A SEND -s 10.10.10.2 -j RETURN
$i -A RECV -d 10.10.10.3 -j RETURN
$i -A SEND -s 10.10.10.3 -j RETURN
$i -A RECV -d 10.10.10.4 -j RETURN
$i -A SEND -s 10.10.10.4 -j RETURN
$i -A RECV -d 10.10.10.5 -j RETURN
$i -A SEND -s 10.10.10.5 -j RETURN
$i -A RECV -d 10.10.10.6 -j RETURN
$i -A SEND -s 10.10.10.6 -j RETURN
$i -A FORWARD -j RECV
$i -A FORWARD -j SEND
# =============================================


# interfejs lo
$i -A INPUT -i lo -j ACCEPT
$i -A FORWARD -o lo -j ACCEPT

i dalej już bez zmian
Działa pięknie, ale nie dla kompa o numerze IP 10.10.10.1, czyli rutera. Powoduje to, że całkowity ruch internetowy jest umniejszany o ruch wytwarzany przez ruter, czyli np przez squid.
Podobnie, kompy w sieci nie mają zaliczanego ruchu, jeśli 'idą' przez squida, jeśli squida wyłączę, wszystko jest OK.
Gdzie jest błąd ?

Autor:  Alfred [ niedziela, 10 kwietnia 2005, 12:05 ]
Tytuł: 

Dobra, nikt nie wie, albo nie chce powiedzieć ?

Przeczytałem tony dokumentacji iptables, zrobiłem miliony prób i ...wiem.
Wiem jak zliczać ruch idący bezpośrednio i ruch idący przez squida.

Autor:  MAC!EK [ niedziela, 10 kwietnia 2005, 17:55 ]
Tytuł: 

"wiem ale nie powiem" co to ma być ? :evil:
albo piszesz jak to się robi albo nie pisz nic ;/ tu się pomaga, a nie przechwala, że się coś wie

Autor:  Alfred [ niedziela, 10 kwietnia 2005, 18:07 ]
Tytuł: 

OK już piszę
Na początek - mam dwie karty sieciowe eth0=internet, eth1=sieć wewnętrzna
Dodałem do firewalla (tłusty druk):
Cytuj:
#!/bin/sh
# firewall 0.1-2004.12.27 Zciech (poprawka w lini 113 i 49 - macieks)
#
# W podstawowej wersji caly ruch z inerfejsow wewnetrznych jest dopuszczony i maskowany
# ruch z internetu zabroniony poza pakietami "powracajacymi" juz nawiazanych polaczen
# i polaczen na strone www (port 80 tcp) oraz pingi 1/s

. /etc/rc.conf
. /etc/rc.d/functions

i=`which iptables`

# Zmienne pobierane z rc.conf
# EXTIF="ppp0" # Interfejs do inetu
# CONNECTION="neorj" # Rodzaj polaczenia
# NETWORK=1 # Wlaczenie maskarady

# ============== Tu moje dopiski ===============
IPGW="10.0.0.1" # zewnętrzny adres karty eth0
IF="eth1" # karta sieci wewnętrznej
IPIF="10.10.10.1" # i jej adres IP

# adresy IP kompów podłączonych do rutera
NATED_HOSTS="10.10.10.1 10.10.10.2 10.10.10.3 10.10.10.4 10.10.10.5 10.10.10.6"
# ============= KONIEC DOPISKÓW ============


case $1 in

start)
if [ -e /proc/sys/net/ipv4/tcp_ecn ];then
echo 0 > /proc/sys/net/ipv4/tcp_ecn
fi

echo 1 > /proc/sys/net/ipv4/ip_forward
if [ -e /proc/sys/net/ipv4/tcp_syncookies ] ; then
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
fi
for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo 1 > $f
done

$i -F
$i -F -t nat

$i -P INPUT DROP
$i -P FORWARD DROP
$i -P OUTPUT ACCEPT

# ============== Tu moje dopiski ===============
# definiujemy łańcuchy do zliczania ruchu
$i -N in_counter
$i -N out_counter
$i -N proxy_in_counter
$i -N proxy_out_counter
# kierujemy cały ruch przez nowe łańcuchy
# ruch wejściowy i wyjściowy bez proxy
$i -A FORWARD -i $EXTIF -d ! $IPGW -j in_counter
$i -A FORWARD -o $EXTIF -d ! $IPGW -j out_counter
# ruch wejściowy i wyjściowy z proxy (PORT PROXY=3128)
$i -A INPUT -i $IF -p tcp -d $IPIF --dport 3128 -j proxy_out_counter
$i -A OUTPUT -o $IF -p tcp -s $IPIF --sport 3128 -j proxy_in_counter
# przypisujemy dane do konkretnych kompów
for HOST in $NATED_HOSTS; do
$i -A proxy_in_counter -d $HOST
$i -A proxy_out_counter -s $HOST
$i -A in_counter -d $HOST
$i -A out_counter -s $HOST
done
# ============= KONIEC DOPISKÓW ============

...dalej tak jak było...

Teraz wystarczy co jakiś czas odczytać liczniki:
(uwaga - parametr -Z zeruje zebrane dane po odczytaniu)

iptables -L in_counter -v -x -n -Z
iptables -L out_counter -v -x -n -Z
iptables -L proxy_in_counter -v -x -n -Z
iptables -L proxy_out_counter -v -x -n -Z


zsumować in_counter + proxy_in_counter, oraz out_counter + proxy_out_counter,
zapisać otrzymane dane (dodane do zliczonych w poprzednim odczycie)
i wyświetlić odpowiednim skryptem na stronie (patrz www.ao.sytes.net/stat)

To wszystko.

Strona 1 z 1 Strefa czasowa UTC+2godz.
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/