Hi,

just confirming one thing: did you flush the pf states between the
tests? I must admit, I mainly glanced the problem, so sorry if this is
an old tip. This was the first thing that popped into my mind when
reading about your solution.

--
Sincerely,
Ville Valkonen

On 5 June 2013 22:39, Raimundo Santos <[email protected]> wrote:
> I've got the issue solved by disabling states on all rules which deal with
> the tproxy.
>
>
> On 4 June 2013 11:28, Raimundo Santos <[email protected]> wrote:
>
>> I am guessing that the problem lies with flags S/SA.
>>
>> Changing all rules to flags any, and the packets hits the rules, but
>> things go worse: no web navigation... this is driving me mad!
>>
>>
>>
>> On 3 June 2013 13:09, Raimundo Santos <[email protected]> wrote:
>>
>>> Hi there!
>>>
>>> I asked, without an answer, something about nat-to and real IPs. Well, I
>>> really need an answer there, so if someone get a clue, I will be glad tho
>>> hear :)
>>>
>>> Now, to the new issue!
>>>
>>> Here in our WiFi ISP we are have contracted a tproxy service from FreeBSD
>>> Brasil. It is somehow working, but I can not figure out exactly how. Here
>>> is a diagram of the desired paths:
>>>
>>> http://devio.us/~raitech/Obsd53PfTproxy.png
>>>
>>> These are my rules by now:
>>>
>>> RFC1918 = "{ 172.16/12, 192.168/16, 10/8, 127/8 }"
>>> table <INT_NET> persist {  internal nets, all valid IPs }
>>>
>>> ext_if_1 = "em0"
>>> ext_gw_1 = "187.72.X.X"
>>> ext_ip_1 = "187.72.X.X"
>>>
>>> ext_if_2 = "em1"
>>> ext_gw_2 = "187.72.X.X"
>>> ext_ip_2 = "187.72.X.X"
>>>
>>> ext_if_3 = "alc0"
>>> ext_gw_3 = "187.72.X.X"
>>> ext_ip_3 = "187.72.X.X"
>>>
>>> int_if_1 = "em2"
>>> int_gw_1 = "187.72.X.X"
>>> int_ip_1 = "187.72.X.X"
>>>
>>> squid_master_if = "em3"
>>> squid_master_gw = "187.72.X.X"
>>> squid_master_ip = "187.72.X.X"
>>>
>>> set limit states 6304000
>>> set limit tables 5000
>>> set limit src-nodes 200000
>>> set limit frags 3000
>>> set optimization aggressive
>>> set state-defaults pflow, no-sync
>>>
>>> set skip on lo
>>>
>>> block in log quick on {  \
>>>  $ext_if_1,        \
>>>  $ext_if_2,        \
>>>  $ext_if_3,        \
>>>  $squid_master_if, \
>>>  $int_if_1 } from $RFC1918 label "blocking RFC1918"
>>>
>>> # trying to prioritizing ACKs...
>>> match set prio (3,5)
>>> # ... and all traffic http. https over the others
>>> match proto tcp to port { http, https } set prio (5,6)
>>> match proto tcp from port { http, https } set prio (5,6)
>>>
>>> match proto tcp to port { ssh, 9876 } set prio(5,7)
>>>
>>> pass in on $int_if_1 proto tcp from { <INT_NET>, $int_gw_1 } to port http
>>> \
>>>  route-to ($squid_master_if $squid_master_gw)
>>>
>>> pass in on { $ext_if_1, $ext_if_2, $ext_if_3 } proto tcp from port http \
>>>  to { <INT_NET>, $int_gw_1 } \
>>>  route-to ($squid_master_if $squid_master_gw)
>>>
>>> pass in on $squid_master_if proto tcp from { <INT_NET>, $int_gw_1 } to \
>>>  port http no state route-to \
>>> { \
>>>   ($ext_if_1 $ext_gw_1) , \
>>>   ($ext_if_2 $ext_gw_2)   \
>>> } least-states label "cahce external outbound balancing"
>>>
>>> pass in on $squid_master_if proto tcp from port http    \
>>>  to { <INT_NET>, $int_gw_1 } route-to ($int_if_1 $int_gw_1)   \
>>>  label "cahce internal outbound routing"
>>>
>>> An here are a pfctl -vsr output:
>>>
>>> block drop in log quick on em0 inet from 172.16.0.0/12 to any label
>>> "blocking RFC1918"
>>>   [ Evaluations: 61764339  Packets: 332       Bytes: 32854       States:
>>> 0     ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 0     ]
>>> block drop in log quick on em0 inet from 192.168.0.0/16 to any label
>>> "blocking RFC1918"
>>>   [ Evaluations: 5883927   Packets: 114       Bytes: 28621       States:
>>> 0     ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 0     ]
>>> block drop in log quick on em0 inet from 10.0.0.0/8 to any label
>>> "blocking RFC1918"
>>>   [ Evaluations: 5883813   Packets: 170       Bytes: 18354       States:
>>> 0     ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 0     ]
>>> block drop in log quick on em0 inet from 127.0.0.0/8 to any label
>>> "blocking RFC1918"
>>>   [ Evaluations: 5883643   Packets: 0         Bytes: 0           States:
>>> 0     ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 0     ]
>>> block drop in log quick on em1 inet from 172.16.0.0/12 to any label
>>> "blocking RFC1918"
>>>   [ Evaluations: 60684174  Packets: 305       Bytes: 30912       States:
>>> 0     ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 0     ]
>>> block drop in log quick on em1 inet from 192.168.0.0/16 to any label
>>> "blocking RFC1918"
>>>   [ Evaluations: 6862827   Packets: 93        Bytes: 9232        States:
>>> 0     ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 0     ]
>>> block drop in log quick on em1 inet from 10.0.0.0/8 to any label
>>> "blocking RFC1918"
>>>   [ Evaluations: 6862734   Packets: 196       Bytes: 19396       States:
>>> 0     ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 0     ]
>>> block drop in log quick on em1 inet from 127.0.0.0/8 to any label
>>> "blocking RFC1918"
>>>   [ Evaluations: 6862538   Packets: 0         Bytes: 0           States:
>>> 0     ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 0     ]
>>> block drop in log quick on alc0 inet from 172.16.0.0/12 to any label
>>> "blocking RFC1918"
>>>   [ Evaluations: 50726925  Packets: 304       Bytes: 30856       States:
>>> 0     ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 0     ]
>>> block drop in log quick on alc0 inet from 192.168.0.0/16 to any label
>>> "blocking RFC1918"
>>>   [ Evaluations: 1251      Packets: 79        Bytes: 8268        States:
>>> 0     ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 0     ]
>>> block drop in log quick on alc0 inet from 10.0.0.0/8 to any label
>>> "blocking RFC1918"
>>>   [ Evaluations: 1172      Packets: 152       Bytes: 16948       States:
>>> 0     ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 0     ]
>>> block drop in log quick on alc0 inet from 127.0.0.0/8 to any label
>>> "blocking RFC1918"
>>>   [ Evaluations: 1020      Packets: 0         Bytes: 0           States:
>>> 0     ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 0     ]
>>> block drop in log quick on em3 inet from 172.16.0.0/12 to any label
>>> "blocking RFC1918"
>>>   [ Evaluations: 50726392  Packets: 304       Bytes: 30856       States:
>>> 0     ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 0     ]
>>> block drop in log quick on em3 inet from 192.168.0.0/16 to any label
>>> "blocking RFC1918"
>>>   [ Evaluations: 13589809  Packets: 76        Bytes: 8132        States:
>>> 0     ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 0     ]
>>> block drop in log quick on em3 inet from 10.0.0.0/8 to any label
>>> "blocking RFC1918"
>>>   [ Evaluations: 13589733  Packets: 152       Bytes: 16948       States:
>>> 0     ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 0     ]
>>> block drop in log quick on em3 inet from 127.0.0.0/8 to any label
>>> "blocking RFC1918"
>>>   [ Evaluations: 13589581  Packets: 0         Bytes: 0           States:
>>> 0     ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 0     ]
>>> block drop in log quick on em2 inet from 172.16.0.0/12 to any label
>>> "blocking RFC1918"
>>>   [ Evaluations: 39571927  Packets: 10414     Bytes: 478685      States:
>>> 0     ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 0     ]
>>> block drop in log quick on em2 inet from 192.168.0.0/16 to any label
>>> "blocking RFC1918"
>>>   [ Evaluations: 6364466   Packets: 1779      Bytes: 142401      States:
>>> 0     ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 0     ]
>>> block drop in log quick on em2 inet from 10.0.0.0/8 to any label
>>> "blocking RFC1918"
>>>   [ Evaluations: 6362687   Packets: 32496     Bytes: 1375238     States:
>>> 0     ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 0     ]
>>> block drop in log quick on em2 inet from 127.0.0.0/8 to any label
>>> "blocking RFC1918"
>>>   [ Evaluations: 6330191   Packets: 0         Bytes: 0           States:
>>> 0     ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 0     ]
>>> match all set ( prio(3, 5) )
>>>   [ Evaluations: 61717375  Packets: 13877464  Bytes: 10275632710  States:
>>> 3831  ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 0     ]
>>> match proto tcp from any to any port = 80 set ( prio(5, 6) )
>>>   [ Evaluations: 61717375  Packets: 13877464  Bytes: 10275632710  States:
>>> 3831  ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 0     ]
>>> match proto tcp from any to any port = 443 set ( prio(5, 6) )
>>>   [ Evaluations: 51200612  Packets: 0         Bytes: 0           States:
>>> 0     ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 0     ]
>>> match proto tcp from any port = 80 to any set ( prio(5, 6) )
>>>   [ Evaluations: 51200612  Packets: 0         Bytes: 0           States:
>>> 0     ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 0     ]
>>> match proto tcp from any port = 443 to any set ( prio(5, 6) )
>>>   [ Evaluations: 51200612  Packets: 0         Bytes: 0           States:
>>> 0     ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 0     ]
>>> match proto tcp from any to any port = 22 set ( prio(5, 7) )
>>>   [ Evaluations: 51200616  Packets: 0         Bytes: 0           States:
>>> 0     ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 0     ]
>>> match proto tcp from any to any port = 9876 set ( prio(5, 7) )
>>>   [ Evaluations: 51200616  Packets: 0         Bytes: 0           States:
>>> 0     ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 0     ]
>>> pass all no state allow-opts
>>>   [ Evaluations: 61717379  Packets: 61549113  Bytes: 41451833770  States:
>>> 0     ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 0     ]
>>> pass in on em0 inet proto tcp from any port = 80 to <INT_NET> flags S/SA
>>> keep state (no-sync, pflow) route-to 187.72.X.X@em3
>>>   [ Evaluations: 61717379  Packets: 0         Bytes: 0           States:
>>> 0     ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 0     ]
>>> pass in on em1 inet proto tcp from any port = 80 to <INT_NET> flags S/SA
>>> keep state (no-sync, pflow) route-to 187.72.X.X@em3
>>>   [ Evaluations: 55197296  Packets: 0         Bytes: 0           States:
>>> 0     ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 0     ]
>>> pass in on alc0 inet proto tcp from any port = 80 to <INT_NET> flags S/SA
>>> keep state (no-sync, pflow) route-to 187.72.X.X@em3
>>>   [ Evaluations: 38378103  Packets: 0         Bytes: 0           States:
>>> 0     ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 0     ]
>>> pass in on em0 inet proto tcp from any port = 80 to 187.72.X.X flags S/SA
>>> keep state (no-sync, pflow) route-to 187.72.X.X@em3
>>>   [ Evaluations: 48038032  Packets: 0         Bytes: 0           States:
>>> 0     ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 0     ]
>>> pass in on em1 inet proto tcp from any port = 80 to 187.72.X.X flags S/SA
>>> keep state (no-sync, pflow) route-to 187.72.X.X@em3
>>>   [ Evaluations: 44966361  Packets: 0         Bytes: 0           States:
>>> 0     ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 0     ]
>>> pass in on alc0 inet proto tcp from any port = 80 to 187.72.X.X flags
>>> S/SA keep state (no-sync, pflow) route-to 187.72.X.X@em3
>>>   [ Evaluations: 41608198  Packets: 0         Bytes: 0           States:
>>> 0     ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 0     ]
>>> pass in on em2 inet proto tcp from <INT_NET> to any port = 80 flags S/SA
>>> keep state (no-sync, pflow) route-to 187.72.X.X@em3
>>>   [ Evaluations: 48044445  Packets: 1439990   Bytes: 894473590   States:
>>> 435   ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 40060 ]
>>> pass in on em2 inet proto tcp from 187.72.X.X to any port = 80 flags S/SA
>>> keep state (no-sync, pflow) route-to 187.72.X.X@em3
>>>   [ Evaluations: 3694317   Packets: 12437474  Bytes: 9381159120  States:
>>> 3396  ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 128206]
>>> pass in on em3 inet proto tcp from <INT_NET> to any port = 80 no state
>>> label "cahce external outbound balancing" route-to <__automatic_9ca6f8d9_0>
>>> least-states
>>>   [ Evaluations: 38420511  Packets: 0         Bytes: 0           States:
>>> 0     ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 0     ]
>>> pass in on em3 inet proto tcp from 187.72.X.X to any port = 80 no state
>>> label "cahce external outbound balancing" route-to <__automatic_9ca6f8d9_1>
>>> least-states
>>>   [ Evaluations: 13586403  Packets: 0         Bytes: 0           States:
>>> 0     ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 0     ]
>>> pass in on em3 inet proto tcp from any port = 80 to <INT_NET> flags S/SA
>>> keep state (no-sync, pflow) label "cahce internal outbound routing"
>>> route-to 187.72.X.X@em2
>>>   [ Evaluations: 13731058  Packets: 0         Bytes: 0           States:
>>> 0     ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 0     ]
>>> pass in on em3 inet proto tcp from any port = 80 to 187.72.X.X flags S/SA
>>> keep state (no-sync, pflow) label "cahce internal outbound routing"
>>> route-to 187.72.X.X@em2
>>>   [ Evaluations: 13586403  Packets: 0         Bytes: 0           States:
>>> 0     ]
>>>   [ Inserted: uid 0 pid 19584 State Creations: 0     ]
>>>
>>> This is the same behavior with or without multipath routing. What
>>> bahavior? Well, only rules for in on em3 that are destineted to internal
>>> network are working, the others barelly catches a few thousands of packets.
>>> Very strange...
>>>
>>> But, as said before: more strange is the fact that the cache solution is
>>> almost working, just some delays to load a page here, youtube gasps there,
>>> but overall it seems to work!
>>>
>>> Tested without multipath routing, without keep state, and the behavior
>>> are the same.
>>>
>>> Will apreciate any kind of help on this, thank you in advance.
>>>
>>> Raimundo Santos

Reply via email to