make
, it complains about -I(TOP).Go addflags S
to each one of your TCP rules that haskeep state
in it. What's happening is you're getting state entries for more than just the first packet of each connection and your state table is filling up... you only want to add a state table entry for those packets with a SYN flag.
See above.
keep state
in it and there are existing state table entries that would be affected?
Yes, you can reload the rules without flushing the state table if you want. This is done in the boot script as a procaution because if you add a rule to block something, but there's an entry for that connection in the state table, it won't get blocked.
You're probable blocking stuff to your ident port, 113. Change that rule so that you send a TCP reset:
block return-rst in quick on ppp0 proto tcp from any to any port = 113
Solaris users, see VII-1
See above.
Make sure you have a kernel that has been correctly patched using the patches supplied with IP Filter, has "IPFILTER" in the config file and is the current kernel you are using.
For FreeBSD/NetBSD, you will need to load if_ipl.o in an rc script (when securelevel is 0) or make sure that securelevel is -1 at runtime.
make
, it complains about -I(TOP).You're using the GNU version of make. Use the standard version of make that comes with your operating system.
For the purposes of explaining this, lets take the following example:
(internet)--->(if0[OS]if1)----|----(httpd on 192.168.0.2) | |----(browser on 192.168.0.3)if0 is some.isp.ip.addr
if1 is 192.168.0.1
I have a rdr on the external interface, written as:
rdr if0 0.0.0.0/0 port 80 -> 192.168.0.2 port 80
Now, IPFilter's rdr function does not natively support "bouncing" the connection (i.e. a packet coming in and leaving the same interface). The redirection happens only to packets coming in on the external interface. If you want to surf to 192.168.0.2 from the browser on 192.168.0.3, you can either do so directly via http://192.168.0.2/ (or by a CNAME in your DNS), or by using a "bounce" utility on the firewall to reflect inbound packets on if1 towards 192.168.0.2. By nature neither the OS nor ipf will do this for you. If you search the ipf archives you will find some bounce utilities. The golden RDR rule: rdr works *only* when the packet traverses the firewall (i.e. in one interface and out on another interface).
You probably have anipf.conf
rule that looks something like:
block return-rst in on ext-interface proto tcp all
A rule like this will send an RST in response to an out-of-sequence ACK from the other end of a long ftp transfer, breaking the connection. Try replacing your rule with:
block in on ext-interface proto tcp all
which will send RST only to SYN packets.
block return-rst in on ext-interface proto tcp all flags S
Add a second ftp proxy rule to your ipnat.conf:
map ext-interface firewall-ip/32 -> firewall-ip/32 proxy port ftp ftp/tcp