Linux RoadRunner Setup

Last updated: 2/13/98

In order to run Linux on the San Diego RoadRunner network, you need a dhcp client (dhcpcd) and Phil Karn's rrlogin program.

I have provided a source rpm and libc5 and glibc binary rpms of the dhcpcd-0.65 package. You are not required to use *these* dhcpcd rpms. The dhcpcd that comes with RedHat works just as well.

This rpm contain patches to allow dhcpcd to work under linux 2.1.4x, compile under glibc and to not release the IP address when it exits, which mimics the win95 dhcp behavior. This rpm also contains an experimental patch to allow dhcpcd to work on aliased ethernet interfaces.
The latest tarfile is available at http://sunsite.unc.edu/pub/Linux/system/network/daemons/dhcpcd-0.70.tar.gz.

Dhcpcd is used to ask the dhcp server for an ip address. Dhcpcd will create a /etc/dhcpc directory and place the files hostinfo-{network interface} and resolv.conf there once it authenticates with the server. You then need to setup your network configuration to use these files.

Rrlogin is used to authenticate with Roadrunner's auth server. It replicates the login protocol used by the win95 and mac clients provided with the service. You must run this program as you are effectively cutoff from the network if you do not authenticate to the authserver.

Below are a list of files and the modifications that I made to get them to work:


Syslog

Modify /etc/syslog.conf and add these lines with tab separated entries and restart syslogd and klogd:
# dhcp
local0.*                                          /var/log/dhcpcd
This measure is to prevent your /var/log/messages file from being overrun with dhcpcd messages as it generates 2 syslog messages every 1/2 hour.

The following messages in /var/log/dhcpcd are a good indicator of a working dhcpcd:

Feb 28 21:03:23 dt5h2n07 dhcpcd[12334]: assigned IP address:        204.210.32.7 
Feb 28 21:03:23 dt5h2n07 dhcpcd[12334]: assigned subnetmask:        255.255.255.0 
Feb 28 21:03:23 dt5h2n07 dhcpcd[12334]: assigned broadcast address: 204.210.32.255 
Feb 28 21:03:23 dt5h2n07 dhcpcd[12334]: got in BOUND state 
Feb 28 22:21:56 graymalkin dhcpcd[107]: got in RENEWING state 
Feb 28 22:21:56 graymalkin dhcpcd[107]: got in BOUND state 
The following message is a good indicator that the dhcp server is tied up or otherwise unavailable at the moment:
Mar  5 00:34:07 graymalkin dhcpcd[105]: no DHCPOFFER messages 

Redhat 4.2/5.0

Redhat 4.2/5.0 support dhcp as a network configuration option. They even provide a dhcpcd rpm. You can use the netcfg program to add a network interface that uses DHCP as the configuration protocol.
For those w/o X setup, you can grab the sample /etc/sysconfig/network-scripts/ifcfg-eth0 file (included below).
Add the following lines to the end of /etc/sysconfig/network-scripts/ifdhcpc-done:

# Make sure the network is setup properly and run the login program
DEVICE=${IFNAME} /bin/sh /etc/rc.d/rc.dhcp
To get rid of the incorrect "dhcpcd...failed" message on boot, you need to make the following changes to /etc/sysconfig/network-scripts/ifup:
Change:
/sbin/dhcpcd -c /etc/sysconfig/network-scripts/ifdhcpc-done ${DEVICE}
to
IFNAME=${DEVICE} /sbin/dhcpcd -c /etc/sysconfig/network-scripts/ifdhcpc-done ${DEVICE}
You also need the sample /etc/sysconfig/network and /etc/rc.d/rc.dhcp files.


Redhat 4.0/4.1

Versions of RedHat dists less than 4.2 do not support the DHCP configuration protocol, so we have to manually call dhcpcd from the network script.
In /etc/rc.d/init.d/network, you'll need to add the following lines to the start section:
        if [ -f /sbin/dhcpcd ] && [ -f /etc/rc.d/rc.dhcp ]; then
                /sbin/dhcpcd -c /etc/rc.d/rc.dhcp 
        fi
And the following lines to the stop section:
        killproc dhcpcd
	killproc rrlogin
You also need the sample /etc/sysconfig/network and /etc/rc.d/rc.dhcp files.


Other distributions

Debian keeps some startup files in /etc/init.d while different versions of slackware have kept them in /etc/rc.d/* and /etc/rc.*. You will need to add the following lines to the appropriate network startup script for your distribution:
        if [ -f /sbin/dhcpcd ] && [ -f /etc/rc.d/rc.dhcp ]; then
                /sbin/dhcpcd -c /etc/rc.d/rc.dhcp 
        fi
You also need the sample /etc/rc.d/rc.dhcp file.


Sample /etc/sysconfig/network

Your /etc/sysconfig/network file should look like this:
NETWORKING=yes
HOSTNAME=myhost
DOMAINNAME=mydomain.org
It doesn't matter what HOSTNAME and DOMAINNAME are as they will get overridden when you run dhcpcd.


Sample /etc/sysconfig/network-scripts/ifcfg-eth0

Your /etc/sysconfig/network-scripts/ifcfg-eth0 file should look like:
DEVICE=eth0
IPADDR=127.0.0.1
NETMASK=255.0.0.0
NETWORK=127.0.0.0
BROADCAST=127.255.255.255
ONBOOT=yes
BOOTPROTO=dhcp
USERCTL=yes


Sample /etc/rc.d/rc.dhcp

Your /etc/rc.d/rc.dhcp file should look like:
#!/bin/sh

# Make sure we have a network device
if [ "$DEVICE" = "" ]; then
        DEVICE=eth0
fi

# Source function library.
. /etc/rc.d/init.d/functions
. /etc/dhcpc/hostinfo-${DEVICE}

# Authenticate to the AUTHHOST
/usr/local/sbin/rrlogin username password &
# Replace with your own dynamic dns client
#/usr/local/sbin/dyndnsc 
#/bin/hostname my.dyn.dns.hostname.domain.com
exit 0


Questions/comments:

webmaster@seawood.org