(private) HKS wrote: > 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?
Yes, I can reproduce it. It looks like '-r' is the culprit. That's an option I would not recommend anyway, except if you have hosts that really need it. Can you try again without -r ? Very little changed in ftp-proxy itself between 4.3 and 4.4 so I suspect the substantial changes in pf itself may have caused this to break. -- Cam