Allow me to share a few notes that might help others before sharing my
woes. I started off with plans to run the latest stable ipfilter
release on 64-bit RHEL (ES 4 U6). The kernel is 2.6.9-67.ELsmp x86_64.

Compilation needed the following patches (the first two are actually
from another post on this list; the Makefile one I had to hack up
myself):

# diff -u ip_state.c.orig ip_state.c
--- ip_state.c.orig     2009-04-29 18:42:51.000000000 -0700
+++ ip_state.c  2009-04-29 18:40:24.000000000 -0700
@@ -221,7 +221,8 @@
     * XXX - ips_seed[X] should be a random number of sorts.
     */
 #if !defined(NEED_LOCAL_RAND) && defined(_KERNEL)
-               ips_seed[i] = arc4random();
+               /*ips_seed[i] = arc4random();*/
+               ips_seed[i] = 1234;
 #else
    ips_seed[i] = ((u_long)ips_seed + i) * fr_statesize;
    ips_seed[i] += tv.tv_sec;


# diff -u ip_nat.c.orig ip_nat.c
--- ip_nat.c.orig       2009-04-29 18:42:59.000000000 -0700
+++ ip_nat.c    2009-04-29 18:40:36.000000000 -0700
@@ -2031,7 +2031,8 @@
      if (np->in_flags & IPN_SEQUENTIAL) {
        port = np->in_pnext;
      } else {
-                               port = ipf_random() % (ntohs(np->in_pmax) -
+                               /*port = ipf_random() % (ntohs(np->in_pmax) -*/
+                               port = 12345 % (ntohs(np->in_pmax) -
                   ntohs(np->in_pmin));
        port += ntohs(np->in_pmin);
      }


# diff -u Makefile.orig Makefile
--- Makefile.orig       2009-04-30 07:51:38.000000000 -0700
+++ Makefile    2009-04-30 07:51:58.000000000 -0700
@@ -109,8 +109,8 @@
 $(OBJ)/ipfstat: $(FILS) $(OBJ)/libipf.a $(TOP)/ip_fil.h $(TOP)/ipf.h \
      $(TOP)/ip_frag.h $(TOP)/ip_compat.h $(TOP)/ip_state.h \
      $(TOP)/ip_nat.h
-       -if [ ! -f /usr/lib/libelf.so ] ; then \
-               (cd /usr/lib; a=`echo libelf.so.*|head -n 1`; \
+       -if [ ! -f /usr/lib64/libelf.so ] ; then \
+               (cd /usr/lib64; a=`echo libelf.so.*|head -n 1`; \
     if [ "$$a" != "" ] ; then ln -s $$a libelf.so; fi) \
  fi
  $(CC) $(CCARGS) $(FILS) -o $@ -lelf $(LIBS) $(STATETOP_LIB)
@@ -124,8 +124,8 @@
  ln -s `pwd`/ipftest $(TOP)

 $(OBJ)/ipnat: $(IPNAT) $(OBJ)/libipf.a
-       -if [ ! -f /usr/lib/libelf.so ] ; then \
-               (cd /usr/lib; a=`echo libelf.so.*|head -n 1`; \
+       -if [ ! -f /usr/lib64/libelf.so ] ; then \
+               (cd /usr/lib64; a=`echo libelf.so.*|head -n 1`; \
     if [ "$$a" != "" ] ; then ln -s $$a libelf.so; fi) \
  fi
  $(CC) $(CCARGS) $(IPNAT) -o $@ $(LIBS) -lelf $(LEXLIB)

Note that iptables firewall and SELinux are both disabled.

So as soon as I start ipfilter (after touching empty files
/etc/ipf.conf and /etc/ipnat.conf), all networking is lost. I cannot
ping in nor can I ping out. The console is okay. pinging out leads to
messages like "sendmsg: Operation not permitted" from this box.
ipfstat shows no blocks (all stats are 0, except the ticks). ipf
-Tlist shows okay configuration. Adding 'pass in quick' in
/etc/ipf.conf. Does not help (ipfstat -hio shows no hits on it).

Any ideas on what to try or expect?

Thanks,
- Ashwani

Reply via email to