Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 28 Oct 2002 04:00:11 -0800 (PST)
From:      Maxim Konovalov <maxim@FreeBSD.org>
To:        freebsd-bugs@FreeBSD.org
Subject:   Re: kern/39937: ipstealth issue
Message-ID:  <200210281200.g9SC0BZD066010@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/39937; it has been noted by GNATS.

From: Maxim Konovalov <maxim@FreeBSD.org>
To: bug-followup@FreeBSD.org
Cc: Chris Wasser <flatline@cmdcomputers.ca>, <murray@FreeBSD.org>
Subject: Re: kern/39937: ipstealth issue
Date: Mon, 28 Oct 2002 14:56:02 +0300 (MSK)

 [ CC: Murray Stokely, our dhcp maintainer ]
 
 OK, I found the problem but I have no idea about proper fix now.
 
 We have:
 
 options IPSTEALTH
 
 net.inet.ip.stealth=1
 net.inet.ip.forwarding=1
 
 We run dhclient <NIC name> and get lock up.
 
 The problem is in endless loop: ip_input -> ip_forward -> ip_output ->
 ip_input.
 
 The loop is present regardless of net.inet.ip.stealth but with
 net.inet.ip.stealth=0 ip_input() has a chance to decrement TTL on
 each cycle and a packet expires.
 
 Why does the loop exist?
 
 dhclient(8) invokes dhclient-script(8) which installs a static route:
 
 route add $alias_ip_address 127.0.0.1
 
 which makes endless routing loop. Frankly, I do not understand a
 purpose of that route.
 
 Here is a quick and probably dirty hack:
 
 Index: isc-dhcp/client/scripts/freebsd
 ===================================================================
 RCS file: /home/ncvs/src/contrib/isc-dhcp/client/scripts/freebsd,v
 retrieving revision 1.20
 diff -u -r1.20 freebsd
 --- isc-dhcp/client/scripts/freebsd	19 Feb 2002 12:10:40 -0000	1.20
 +++ isc-dhcp/client/scripts/freebsd	28 Oct 2002 11:44:16 -0000
 @@ -122,7 +122,6 @@
      if [ -n "$new_routers" ]; then
        $LOGGER "New Routers: $new_routers"
      fi
 -    route add $new_ip_address 127.1 >/dev/null 2>&1
      for router in $new_routers; do
        route add default $router >/dev/null 2>&1
      done
 @@ -138,7 +137,6 @@
    if [ x$new_ip_address != x$alias_ip_address ] && [ x$alias_ip_address != x ];
     then
      ifconfig $interface inet alias $alias_ip_address $alias_subnet_arg
 -    route add $alias_ip_address 127.0.0.1
    fi
    make_resolv_conf
    exit_with_hooks 0
 @@ -168,7 +166,6 @@
    fi
    if [ x$alias_ip_address != x ]; then
      ifconfig $interface inet alias $alias_ip_address $alias_subnet_arg
 -    route add $alias_ip_address 127.0.0.1
    fi
    exit_with_hooks 0
  fi
 @@ -191,9 +188,7 @@
        if [ x$new_ip_address != x$alias_ip_address ] && \
  			[ x$alias_ip_address != x ]; then
  	ifconfig $interface inet alias $alias_ip_address $alias_subnet_arg
 -	route add $alias_ip_address 127.0.0.1
        fi
 -      route add $new_ip_address 127.1 >/dev/null 2>&1
        for router in $new_routers; do
  	route add default $router >/dev/null 2>&1
        done
 
 %%%
 
 With this patch my 4.7-STABLE works OK.
 
 --
 Maxim Konovalov, maxim@FreeBSD.org
 
 
 
 
 
 

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200210281200.g9SC0BZD066010>