Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[hardened] [~x86-64] problem z TPROXY (squid) [SOLVED]
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Polskie forum (Polish)
View previous topic :: View next topic  
Author Message
tjwasiak
n00b
n00b


Joined: 14 Jul 2015
Posts: 1
Location: okolice Warszawy, PL

PostPosted: Tue Jul 14, 2015 4:38 pm    Post subject: [hardened] [~x86-64] problem z TPROXY (squid) [SOLVED] Reply with quote

W pełni zaktualizowany system ~x86-64:
- jądro hardened-sources 4.0.7-r1
- squid 3.5.6 [+tproxy]
- iproute2 4.1.1
- iptables 1.4.21-r1

Sieć lokalna - br0 (LAN + WLAN), 192.168.0.0/24, router ma przypisane adresy 192.168.0.1-192.168.0.5
Łącze internetowe PPPoE - ppp0, dynamiczne IP

Konfiguracja squid:
Code:
http_port 192.168.0.5:3128
http_port 192.168.0.5:8080 tproxy


Konfiguracja iptables - łańcuch PREROUTING tabeli mangle:
Code:
[0:0] -A PREROUTING -i ppp0 -p tcp -m tcp --sport 80 -j MARK --set-xmark 0x1/0x1
[0:0] -A PREROUTING -i br0 -p tcp -m tcp --dport 80 -j TPROXY --on-port 8080 --on-ip 192.168.0.5 --tproxy-mark 0x1/0x1


Routing:
ip rule show
Code:
0:      from all lookup local
32765:  from all fwmark 0x1/0x1 lookup 1
32766:  from all lookup main
32767:  from all lookup default

ip route show table 1
Code:
unicast default via 192.168.0.5 dev br0  proto static  scope global


/proc/sys/net/ipv4/conf/*/rp_filter: 0

Jeśli usunąć regułę TPROXY z łańcucha PREROUTING tabeli mangle to wszystko normalnie działa (jest włączony forwarding, MASQUERADE itp. itd.). Działa również sam Squid (przy połączeniu na port 3128). Jednak z uwagi na konieczność podziału łącza takie rozwiązanie nie jest optymalne (stosując REDIRECT/DNAT do Squid'a cały ruch WWW trafia do klasy dedykowanej routerowi). Z uwagi na ograniczone możliwości techniczne łącze jest dosyć mocno ograniczone jeśli chodzi o prędkość, a znaczna część ruchu WWW jest przez Squid'a cache'owana, co znacznie poprawia komfort korzystania z WWW.
Niestety zastosowanie reguły TPROXY powoduje że cały ruch z sieci lokalnej do portu 80 po prostu znika (nie trafia do Squid'a - potwierdziłem to stosując odpowiednią opcję debug_options).

Czy ktoś ma pomysł co jeszcze może mieć wpływ na takie zachowanie router'a?

EDIT: Znalazłem rozwiązanie problemu.
Po pierwsze - wpis w tabeli routing'u 1 powinien wyglądać następująco:
Code:
local default dev br0  scope host

Po drugie - mała zmiana reguł łańcucha PREROUTING tabeli mangle
Code:
[0:0] -A PREROUTING -p tcp -m socket -j MARK --set-xmark 0x1/0x1
[0:0] -A PREROUTING -p tcp -m socket -j ACCEPT
[0:0] -A PREROUTING -i br0 -p tcp -m tcp --dport 80 -j TPROXY --on-port 8080 --on-ip 192.168.0.5 --tproxy-mark 0x1/0x1


Ważne - jeśli używacie firewall'a port 80 musi być otwarty w łańcuch INPUT dla każdego docelowego adresu IP!

Teraz wszystko działa jak trzeba i cały ruch jest odpowiednio kolejkowany przez QoS.

Szkoda że dokumentacja (zarówno ogólnie dla Linux'a jak również dla Gentoo) dotycząca QoS, policy routing oraz TPROXY jest taka jaka jest - czyli praktycznie nieistniejąca, w znacznej mierze zdeaktualizowana, a poza tym trzeba jej szukać w tak wielu miejscach...
_________________
question = ( to ) ? be : ! be;
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Polskie forum (Polish) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum