On Fri, Jan 23, 2009 at 3:06 PM, (private) HKS <hks.priv...@gmail.com> wrote:
> On Fri, Jan 23, 2009 at 8:49 AM, Daniel A. Ramaley
> <daniel.rama...@drake.edu> wrote:
>> I've gotten a couple of off-list replies with suggestions to try. I
>> greatly appreciate any ideas, but still have not had any luck so far.
>> I've trimmed my ruleset and adjust some of it to be more permissive.
>> Any ideas as to why ftp-proxy still doesn't work?
>>
>>
>>
>> ext_if = "vr0"
>> int_if = "fxp0"
>>
>> icmp_types = "{ echoreq, unreach }"
>>
>> # options
>> set block-policy return
>> set loginterface $ext_if
>> set skip on lo
>>
>> # packet hygiene
>> scrub in all fragment reassemble
>>
>> # nat
>> nat on $ext_if from !($ext_if) -> ($ext_if)
>> nat-anchor "ftp-proxy/*"
>> rdr-anchor "ftp-proxy/*"
>> rdr pass on $int_if proto tcp to port ftp -> 127.0.0.1 port 8021
>>
>> # filter rules
>> #block in all
>> #block quick inet6 all
>> anchor "ftp-proxy/*"
>> pass out keep state
>>
>> pass out quick proto tcp from lo to any port ftp
>>
>> pass in inet proto icmp all icmp-type $icmp_types keep state
>> #pass from !($ext_if) to any keep state
>> pass from any to any keep state
>
>
> Running ftp-proxy with the args "-r -d -D 6", can you do a packet
> capture when you run ls? You'll want to find all packets that involve
> the internal host, and all packets that involve your external
> destination, so you'll probably need to do two separate captures. This
> should at least give an idea of what's breaking.



Something is definitely amiss. Does anybody have a working
nat/ftp-proxy setup with 4.4? If so, can you post your rules and
ftp-proxy flags?

My 4.3 router is working fine, but when I try this on 4.4 I get some
very weird behavior. The anchor rules and such are all inserted
correctly and ftp-proxy -vv logs the following (munged for clarity)
repeatedly until I kill the connection or it times out:

11:42:32.540840 rule 331.19328.1.0/(match) pass in on $ext_if:
$server.20 > $client_private.1830: S 67547520:67547520(0) win 16384
<mss 1460,nop,nop,sackOK,nop,wscale 0,[|tcp]> (DF)
11:42:32.540892 rule 331.19328.1.1/(match) pass out on $int_if:
$server.20 > $client_private.1830: S 67547520:67547520(0) win 16384
<mss 1460,nop,nop,sackOK,nop,wscale 0,[|tcp]> (DF)
11:42:32.540911 rule 331/(match) pass out on $ext_if: $ext_ip >
$server: icmp: host $ext_ip unreachable


The second log entry refers to traffic that was supposedly passed, but
my packet sniffer on $int_if never saw it (I tested with tcpdump
filters 'host $client_private' and 'host $server'). The anchor
information is in there:

# pfctl -a ftp-proxy/19328.1 -s rules
pass in log (all) quick inet proto tcp from $server to $client_private
port = 1830 flags S/SA keep state (max 1) rtable 0
pass out log (all) quick inet proto tcp from $server to
$client_private port = 1830 flags S/SA keep state (max 1) rtable 0
# pfctl -a ftp-proxy/19328.1 -s nat
nat inet proto tcp from $server to $client_private port = 1830 rtable
0 -> 129.128.5.191 port 20
rdr inet proto tcp from $server to $ext_ip port = 63607 rtable 0 ->
10.2.0.13 port 1830


The only block in pf.conf is a "block all" at the top. Aside from a
bunch of other pass statements, it looks very similar to what Daniel
posted before.

Running ftp-proxy with: ftp-proxy -r -dvvD 7

Can anyone else replicate this?

-HKS

Reply via email to