dhclient dry-run - need to know the def gateway without installing the def route

Sten Carlsen stenc at s-carlsen.dk
Mon Apr 7 20:46:15 UTC 2014


On 07/04/14 22.23, alessandro macuz wrote:
> 2014-04-07 21:15 GMT+02:00 Simon Hobson <dhcp1 at thehobsons.co.uk
> <mailto:dhcp1 at thehobsons.co.uk>>:
>
>     alessandro macuz <alessandro.macuz at gmail.com
>     <mailto:alessandro.macuz at gmail.com>> wrote:
>
>     > I could deduce the gateway from the DHCP server IP address
>     because normally they coincide but that would be my assumption.
>
>     You've heard the expression that "assume" makes an "ass" out of
>     "u" and "me", well your assumption is badly wrong. In home and
>     small networks it is likely to be true (not mine though). But once
>     you get to business networks then its more likely that the DHCP
>     server is not at the same IP address as the router.
>
>     However, I'm still not quite sure why you are doing things the
>     long way round. What's specifically wrong with using the route
>     that comes with the lease ? Or more to the point, what's wrong
>     with dealing with it when you get it ? And BTW - have you
>     considered the possibility of getting different answers to your
>     two queries ?
>
>
> Sorry maybe I should have added more details but there is only one
> defaut gateway on the network of that interface and hence the dry-run
> returns always the same IP address. As to the second reply it will
> configure the interface.
>
> Why I want to run a dry-run? Because eventually I need to install some
> routes pointing to the only gateway on the network. On the system
> there is another interface that gets the IP dinamically and two
> default routes are not OK
I suggest you look at: /sbin/dhclient-scripts

It contains the following code, I think a small modification to this
will do your job:
~~~~~~~~~~~~~~~~~~~~~
add_default_gateway() {
    router="${1}"

    if is_router_reachable ${router} ; then
        metric=""
        if [ $# -gt 1 ] && [ ${2} -gt 0 ]; then
            metric="metric ${2}"
        fi
        ip -4 route replace default via ${router} dev ${interface} ${metric}
        if [ $? -ne 0 ]; then
            logmessage "failed to create default route: ${router} dev
${interface} ${metric}"
            return 1
        else
            return 0
        fi
    fi

    return 1
}
~~~~~~~~~~~~~~~~~~~~~
>
>  
>
>
>     For many clients (certainly the ISC one on Linux) you can supply
>     your own script/modify the stock one. That means you can go and
>     accept a lease, then use your own script to fiddle with the
>     system. Or at least I thin that's the case.
>
>
> I thought of this and delete the 2nd def route but even if for less
> than a second packets would load-balanced between the two default
> routes. Now that I'm writing I realize that the loadbalancing
> mechanism is in place only when the adm distance is the same, so maybe
> I can play with that value if the DHCP protocol allows that.
>
> Alex
>
>
> _______________________________________________
> dhcp-users mailing list
> dhcp-users at lists.isc.org
> https://lists.isc.org/mailman/listinfo/dhcp-users

-- 
Best regards

Sten Carlsen

No improvements come from shouting:

       "MALE BOVINE MANURE!!!" 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.isc.org/pipermail/dhcp-users/attachments/20140407/d7b7a8d3/attachment-0001.html>


More information about the dhcp-users mailing list