Здрасти на сички земеделци. По същество:

клиентска мрежа -> рутер -> интернет (етх1 е вътрешен / етх3 външен итерфейс)
Всичко  ток и жици. Просто и работещо.
Сега обаче трябва да си добавя squid-а във веригата.
Тъй като ТРЯБВА да си запазя марките на пакети, защото са ми важни за traversal-а, не ползвам policy routing, а също и че мястото където решавам какъв трафик да отиде до squid-а е POSTROUTING веригата на mangle таблицата, което обезмисля слагането на марки(от опити го пиша). Както и да е. Слагам forced route с помощта на -j ROUTE (част от pom-ng) и пакетите, които искам отиват до прокси машината. Там има редирект, който праща сичко към локален сокет. Заявка минава, SYN отива, ACK се връща ,стига до рутер И НЕ НАПУСКА ИНТЕРФЕЙСА. Което е удивително.
tcpdump показва, че минава нещо от сорта на :
x.x.x.x : 80 -> 192.168.x.x : spt
на вътрешния интерфейс, но до клиентската машина така или иначе НЕ СТИГА.
Когато пакета се върне директно към клиента(все пак са в една и съща физическа мрежа), то той пристига успешно.Това обаче е безмислено, тъй като трябва да се шейпи.

Опитах следните варианти :
client -> eth1 -> proxy(eth0 on router) -> internet -> proxy -> router(eth1)
client -> eth1 -> proxy(eth1 on router) -> internet ->proxy -> router(eth1)

Истината е че играейки си с iptables не виждам ако сложа правило от сорта на iptables -t mangle -I POSTROUTING -p tcp --dport 80 -s internet.host -j ACCEPT
да се покачват броячите.

ако сложа същото правило в PREROUTING обаче, пакети удрят правилото.
Знам, че traversal-a е така :
mangle PREROUTING
nat PREROUTING
input FORWARD
mangle FORWARD
mangle POSTROUTING
nat POSTROUTING

Това е прекрасно, но [EMAIL PROTECTED]:/home/httpd# iptables -t mangle -L PREROUTING
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
valid_macs  all  --  anywhere             anywhere

[EMAIL PROTECTED]:/home/httpd# iptables -t mangle -L valid_macs
Chain valid_macs (1 references)
target     prot opt source               destination
DSCP all -- localnet/16 anywhere !set macs1 src DSCP set 0x0a DSCP all -- 212.72.216.0/24 anywhere !set macs3 src DSCP set 0x0a DSCP all -- 213.91.223.128/25 anywhere !set macs2 src DSCP set 0x0a

Нищо необикновено. Просто се слага DSCP стойност на пакети.

Няма правило или policy , което да спре пакета от травърсал.


Ето един tcpdump :
tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes 18:19:53.670460 IP (tos 0x0, ttl 128, id 54945, offset 0, flags [DF], proto: TCP (6), length: 48) 192.168.10.2.3784 > 61.74.68.182.80: S, cksum 0x6ef4 (correct), 3511086128:3511086128(0) win 64240 <mss 1460,nop,nop,sackOK> 18:19:53.670518 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto: TCP (6), length: 48) 61.74.68.182.80 > 192.168.10.2.3784: S, cksum 0x66c6 (correct), 2500745007:2500745007(0) ack 3511086129 win 5840 <mss 1460,nop,nop,sackOK> 18:19:55.052399 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto: TCP (6), length: 48) 61.74.68.182.80 > 192.168.10.2.3780: S, cksum 0x8fa8 (correct), 2441684349:2441684349(0) ack 3499751735 win 5840 <mss 1460,nop,nop,sackOK>

Вижда се, че пакетите би следвало да стигнат до машината, но те просто не стигат(потвърдено с ethereal).

Дайте ми сламка, за която да се хвана.




Reply via email to