Newsgroups: comp.os.linux.announce,comp.os.linux.help,comp.os.linux.admin,news.answers,comp.answers
From: terryd@extro.ucc.su.oz.au (Terry Dawson)
Subject: Linux NET-2 HOWTO (part 1/2)
Message-ID: <NET-2-HOWTO.1-8629.767303272@cs.cornell.edu>
Date: Mon, 25 Apr 1994 19:48:17 GMT
Approved: linux-announce@tc.cornell.edu (Matt Welsh)

Archive-name: linux/howto/networking/part1
Last-modified: 15 Apr 94

	This is the Linux NET-2 HOWTO (previously known as the NET-2-FAQ). 	
	This document explains how to configure TCP/IP and SLIP with the new 
	``NET-2'' networking code in Linux kernels 0.99.pl10 and above. 
	Please mail me if you have questions or comments. --terryd

This is the Linux NET-2 HOWTO v1.11, 26 January 1994
By Terry Dawson <terryd@extro.ucc.su.oz.au> and 
   Matt Welsh <mdw@sunsite.unc.edu> 

(c)1994 by Terry Dawson, Matt Welsh

CHANGES from previous version:
	Added the NFS questions and answers that Alan posted, thanks Alan.
	Added dynamic slip server script - thanks Paul Mossip!
	Added dip-i source, thanks Karl, kkeyte@esoc.bitnet
	Added copyright message. Ack.

*** FTP site maintainers: This document should be stored in the docs/HOWTO
*** directory on your Linux archive as ``NET-2-HOWTO''. You may also wish
*** to link this file to ``NET-2-FAQ'' (its previous name). This document
*** also supercedes the old Linux NET-FAQ.

'Real Programmers don't write documentation.' -- Ancient Proverb

INDEX for this version

	To search for a particular section, search for '^N.S' where
	N is the section, and S is the Subsection.

	0.	Introduction.
	0.1	Disclaimer.
	0.2	Questions already ?
	0.3	Related documentation.
	0.4	New versions of this document.
	0.5	Feedback.
	1.	NET-2 Supported Functionality.
	1.1	Supported Ethernet cards.
	2.	Getting the NET-2 Software.
	2.1	Unpacking the software.
	2.2	Putting things in the right place.
	2.3	Creating the device interfaces.
	3.	Building the Kernel.
	3.1	Configuring the NET-2 kernel code.
	3.2	Building the kernel.
	4.	Configuring NET-2 TCP/IP.
	4.1	Before you begin.
	4.2	/etc/rc.d/rc.inet1 and /etc/rc.d/rc.inet2
	4.2.1	Editing rc.inet1
	4.2.2	Editing rc.inet2
	4.2.2.1	"To named or not to named... that is the question."
	4.3	/etc/hosts
	4.3.1	Important note regarding /etc/hosts from NET-032.
	4.4	/etc/networks
	4.5	/etc/host.conf
	4.6	/etc/resolv.conf
	4.7	/etc/HOSTNAME
	4.8	/etc/rc.local
	4.9	Other files.
	5.	Configuring SLIP.
	5.1	Static SLIP server connections using a dialup line.
	5.2	Static SLIP server connections using a leased line or cable.
	5.3	Dynamic SLIP server connections using a dialup line.
	5.4	Using DIP.
	5.5	Configuring your Linux Machine as a SLIP Server.
	5.6	/etc/net/diphosts
	5.7	Configuring PLIP interfaces.
	5.7.1	PLIP Cabling Diagram.
	6.	PPP (Under construction).
	7.	AX.25 (Under construction).
	8.	Are You Stuck ?
	9.	Common Problems and Solutions.
	9.1	Not so common problems and solutions (Mostly NFS).
	10.	Known bugs.
	11.	Copyright Message. (We're not ogres, nor are we silly).
	12.	Miscellaneous.
	13.	Change History.

------------------------------------------------------------------------------
0.	Introduction.

	This is the NET-2 HOWTO, which is a rewrite of the earlier NET-FAQ for
	the new NET-2 TCP/IP code in Linux kernels 0.99.pl10 and above. 

	The NET-2 code is the new kernel-based networking support for Linux,
	written by Fred van Kempen <waltje@uwalt.nl.mugnet.org>. It is based 
	on the NET-1 code by Ross Biro <bir7@leland.stanford.edu>, ethernet 
	drivers by Donald Becker <becker@super.org>, SLIP drivers by 
	Laurence Culhane <loz@holmes.demon.co.uk>, and the D-Link driver by
	Bj0rn Ekwall <bj0rn@blox.se>. The NET-2debugged code is maintained
	by Alan Cox <iiitac@pyr.swan.ac.uk>. Many others too numerous to
	mention have provided support, bug fixes, and help. 

	This NET-2 HOWTO is by Terry Dawson and Matt Welsh. It covers setup 
	and configuration of TCP/IP under Linux using NET-2. It also hopefully 
	answers some of the many questions about the NET-2 code and common
	problems that people have. It does not cover using TCP/IP (i.e.
	using telnet, FTP, etc.), other documents are available which will
	describe these much better than I am able to.

0.1	Disclaimer.

	The NET-2 code is under development, which means that it may 
	not be as stable and easy to configure as you may like it to be.
	code is relatively new and bug fixes are being posted every day, so if 
	you run into a large number of problems just hang in there. The 
	software is in two stages of development at the moment. The version
	currently supplied in the standard kernel distribution is version
	NET-2D(ebugged), and is being progressively debugged and made more
	stable by Alan Cox, until NET-2E, which is currently undergoing Beta
	testing, is ready for general release.

	We do not, and cannot know everything there is to know about the
	Linux networking code. Please accept that this document may, and
	probably does contain errors. Please read any README files that
	are bundled with any of the various pieces of software described
	in this document for more detailed and accurate information. We
	will attempt to keep this document as error free as possible.

	NOTE: In this document, 'NET-2' does not refer to the Berkeley
	Software Distribution NET-2 release of BSD UNIX. Yes, the names
	are conflicting. In this HOWTO, 'NET-2' refers only to the new
	generation of TCP/IP code in the Linux kernel.

0.2	Questions already ?

	'The only stupid question is the unasked one.' - One of my own Motto's

	If you have general configuration questions, and you have been unable
	to find the answers after reading the other various HOWTO and FAQ
	files,	then you would be best served to post them comp.os.linux.help,
	or, if you believe it to be specifically related the NET-2 kernel
	code, then you could post it to the NET mailing list. Please include
	as much relevant information as possible, there is nothing more
	annoying than to have a bug or problem reported without sufficient
	information to even begin searching for it.

	Version numbers and revisons of code, a detailed account of the
	problem, and the circumstances that caused it to happen are essential.
	Traces and debug messages where available should also be considered
	mandatory.

	If you have a question relating to the configuration of, or problems
	experienced with, _any_ linux distribution, regardless of
	whether it be SLS, Slackware, Yggadsril, TAMU, MCC, Pro, or other,
	please contact the people who created the distribution for support
	before attempting to report it to the list or the NET-2 developers
	directly. The developers of the NET-2 code _cannot_ and _will not_
	offer support for NET-2 as distributed in any form, other than as
	specified in this document, or as per distributed Alpha/Beta test
	instructions.

	Please do NOT bug the NET-2 developers directly unless you have a
	_development_-related issue (especially Fred: he has to pay $$$ for
	his e-mail access).

        To join the NET channel of the Linux-activists mailing list
        send mail to
                linux-activists-request@niksula.hut.fi
        with the line
                X-Mn-Admin: join NET
        at the top of the message body (not the subject).

	Note that the SLIP channel of the mailing list has been disabled and
	the NET channel should be used for SLIP discussions as well.
	Remember, keep in mind that the NET channel is for development
	discussions only.

	Note also that a PPP list has been established. To join it, use the
	same procedure as for joining the NET list, except specify PPP in
	place of NET.


0.3	Related documentation.

	There is now a book from the Linux Documentation Project entitled
	`Linux Network Administration Guide' by Olaf Kirch. It covers all
	aspects of setting up and using networking under Linux, including
	TCP/IP, NFS, UUCP, mail, news, etc.

	This book supplements the NET-2 HOWTO  and covers all of the
	other aspects of using TCP/IP. This guide simply covers setup of 
	NET-2, i.e., "How to put your machine on the net". If you are new
	to unix networking, then I strongly urge you to obtain a copy and
	read it first. It will answer a lot of questions for you that are
	not within the scope of this document.

	The current version is available in:

	sunsite.unc.edu:/pub/Linux/docs/linux-doc-project/network-guide

	There are various versions of the file available. The most common
	formats are supported, being plain ascii, Postscript, DVI, Latex
	and groff.

	The Linux Network Administrators Guide is Copyright (c) by Olaf Kirch.

	You should read the Ethernet HOWTO (from sunsite.unc.edu:
	/pub/Linux/docs/HOWTO) if you are using an Ethernet network
	with NET-2. The Ethernet HOWTO explains all of the ins and outs
	of using and configuring Ethernet devices for Linux, and should
	be considered the definitive source of information relating to same.
	That is, if the Ethernet HOWTO and this HOWTO differ, then believe
	the Ethernet HOWTO.

	This NET-2 HOWTO supercedes the earlier 'Linux NET-FAQ' by Phil
	Copeland and Matt Welsh. The NET-FAQ is for Linux kernels previous
	to 0.99.pl10, running the older version of the TCP/IP code.

	This document used to be called the NET-2-FAQ, before the Linux HOWTO
	project was underway. Thus, the NET-2-FAQ and the NET-2 HOWTO are
	the same.

0.4	New versions of this document.

	New versions of this document can be retrieved via anonymous
	FTP from sunsite.unc.edu:/pub/Linux/docs/HOWTO/NET-2-HOWTO
	or directly from me (terryd@extro.ucc.su.oz.au). It will also be
	posted to the newsgroups comp.os.linux.announce, comp.os.linux.help,
	and news.answers periodically. 

	You can find news.answers FAQ postings, including this one, archived
	on rtfm.mit.edu:/pub/usenet.

0.5	Feedback.

	Please send any comments, updates, or suggestions to me,
	terryd@extro.ucc.su.oz.au. The sooner I get feedback about this
	document, the sooner I can update and correct it. If you find any
	problems with it, please mail me, instead of posting to one of the
	newsgroups. I may miss your corrections. Thanks.

	Please send any money or interesting pieces of hardware to either
	Fred, Linus, or the Free Software Foundation. They made this happen.


1.	NET-2 Supported Functionality.

	The NET-2 code is a complete kernel implementation of TCP/IP for
	Linux, including many features not found in the original networking
	code. NET-2 supports most popular Ethernet cards, real IP routing,
	SLIP (Serial Line IP) for TCP/IP connections over a serial line, such
	as the phone line via modem, and PLIP (Parallel Line IP) for local
	connection of two machines using your printer ports. 

	NET-2 does not yet include:

 	- SPX(SPP)/IPX(IDP)/NCP support, though it is being worked on.
	- PPP support, this is being worked on, and an ALPHA version exists.
	  read on for more details.
	- AX.25 support natively, though Alan Cox has some experimental code
	  available for pl14+ for you to try. Fred has the start of fully
	  integrated DDI based AX25 support in NET-2EB2+
	- LAN types other than Ethernet, this means no Token Ring, no
	  FDDI, no ARCNET, etc. An experimental Token Ring driver is being
	  quietly developed.
	- ISDN support, though I understand it too is being worked on.

1.1	Supported Ethernet cards.

	NET-2 supports the following Ethernet cards (and more):

	3com 3c503, 3c503/16
	Novell NE1000, NE2000
	Western Digital WD8003, WD8013
	Hewlett Packard HP27245, HP27247, HP27250

	The following clones are reported to work:
	WD-80x3 clones: LANNET LEC-45
	NE2000 clones: Alta Combo, Artisoft LANtastic AE-2, Asante Etherpak
	  2001/2003, D-Link Ethernet II, LTC E-NET/16 P/N 8300-200-002,
	  Network Solutions HE-203, SVEC 4 Dimension Ethernet, 4-Dimension
	  FD0490 EtherBoard 16, D-Link DE-600, SMC Elite 16.

	** Please see the Ethernet HOWTO for more complete information. **

	As mentioned above, NET-2 also supports SLIP in the kernel. Therefore
	if you don't have an Ethernet connection you can do TCP/IP over the
	phone line, provided you have a SLIP server nearby (many universities
	and businesses provide SLIP access to employees/students) and a
	compatible modem (usually 14.4 v.42bis, depending on your SLIP server).
	Two possible modems are the US Robotics Sportster, or the Infotel
	144DF Internal. 


2.	Getting the NET-2 Software.

	Before you can configure TCP/IP on your system you need to get the
	appropriate software. This includes the current version of the Linux
	kernel (0.99.pl14 or above), TCP/IP configuration programs and files
	(e.g., /etc/ifconfig, /etc/hosts), and finally a set of network
	application programs (such as telnet, ftp, rlogin, etc.). 

	You may already have all of the items below. Check and make
	sure that you do. For example, some distributions come with all
	of the NET-2 configuration files, binaries, libraries, and kernel
	installed, so there's no reason to get the following files.
	Note: they may not be in the places specified in this HOWTO.

	If you DO have the NET-2 software already, skip to section 3 on
	configuration. If you do NOT have the NET-2 software, follow the
	directions below.

	The current kernel version is found in
	nic.funet.fi:/pub/OS/Linux/PEOPLE/Linus/linux-0.99.14.tar.gz. 
	This is a gzipped tar file; .gz is the new extension used by gzip.
	If you have the old version of gzip, "zcat foo.gz | tar xvf -" works.

	The current libraries (libc-4.4.4), can be found in 
	sunsite.unc.edu:/pub/Linux/GCC/image-4.4.4.tar.z. (You'll probably 
	want to install the include files in inc-4.4.4.tar.z as well! See the 
	READMEs there for details.) You'll need at least ver 4.4.2 to use
	NET-2, as there were problems with earlier versions that affected
	routing and netmasks.

	The current NET-2 configuration file distribution is in

	sunacm.swan.ac.uk:
	/pub/misc/Linux/Networking/Programs/System/net032/net-0.32.tar.gz

	This package includes network configuration programs such as
	ifconfig, route, netstat etc.

	The TCP/IP application binaries and setup files are found in:

	tsx-11.mit.edu:/pub/linux/packages/net/net-2/binaries/net-base.tar.z
	      "          "    "      "      "    "      "    /net-std.tar.z
	      "          "    "      "      "    "      "    /net-ext.tar.z

	As some of the internals of the networking code have changed, you will
	also need to get and install the files that are in the:

	tsx-11.mit.edu:/pub/linux/packages/net/new-net-2

	directory, as they correct some problems you will experience if you
	opt _not_ to get and install them :)

	If you use shadowed password (Most SLS users do), then you may find
	that the standard network programs do not support them. There used
	to be a specially modified package of binaries about, but these were
	intended as a short term fix, and have been removed. Recent work on
	the standard libraries will mean that as of version 4.5.8 of libc,
	the shadow password handling will no longer need to be in the
	application, and will be handled externally. At the time of writing
	libc.4.5.8 has just been released. If you use shadowed passwords
	you will most certainly want a copy of this.

2.1	Unpacking the software.

	You don't need to unpack any of the following if you already have all
	of the NET-2 software installed.
	
	First, unpack the kernel sources in /usr/src. This will put all
	of the kernel sources under /usr/src/linux (the usual place).

		# cd /usr/src
		# zcat linux-0.99.14.tar.z | tar xvf -

	Next, unpack the libraries. 
	(The following is a summary, please read the detailed instructions
	that come with the libraries for complete installation details)

		# cd /
		# zcat image-4.4.4.tar.z | tar xvf -

	Now, make the links to the new libraries in /lib. BE VERY CAREFUL
	that you do not delete the previous links. Do everything in
	one step, as so:

		# ln -sf /lib/libc.so.4.4.4 /lib/libc.so.4
		# ln -sf /lib/libm.so.4.4.4 /lib/libm.so.4

	Next, unpack the net-base package, which contains the basic
	utils and configuration files in /etc. Note that net-base makes
	symlinks in /etc for all of your TCP/IP configuration files to /conf.

	Therefore, BE WARNED: Before you unpack the following tar files,
	make a backup of your files in /etc. Unpacking net-base will overwrite
	many of the files in /etc with symbolic links to other places.
	For example, /etc/hosts is a symlink to /conf/net/hosts. Why is this
	done? Because Fred's Linux/PRO distribution of Linux keeps all
	machine-specific configuration files in /conf. And because this is
	the way he does it, we may as well too. In general it makes things
	easier to locate. If you want to keep all of your net files in 
	/etc, that's fine, but you'll have to put them there by hand.

	Make a backup of everything in /etc before you unpack net-base. 
	Then unpack it from / (the root directory):

		# cd /
		# zcat net-base.tar.z | tar xvvofp -

	Also, unpack net-std.tar.z, which contains the network clients and
	daemons (e.g., telnet and telnetd). Unpack it from / as well:

		# cd /
		# zcat net-std.tar.z | tar xvvofp -


	If you wish to use tin (a newsreader), or DIG (the DARPA Internet
	Groper), unpack the net-ext package from /:

		# cd /
		# zcat net-ext.tar.z | tar xvvofp -

	Now unpack the fixed versions of rlogin/telnetd from the files:

		# cd /tmp
		# gzip -dc ftpd.tar.z | tar xvf -
		# gzip -dc telnet-rlogin.tar.z | tar xvf -

		you will then need to copy the binaries to where the old
		version currently live.
		
	Finally, unpack the net-032 package, which contains the sources
	for the TCP/IP setup programs (ifconfig, arp, route, etc.) and the
	configuration files. This is unpacked into /usr/src/net-032.

		# mkdir /usr/src/net-032
		# cd /usr/src/net-032
		# zcat net-032.tar.gz | tar xvvofp -
		# make install

	** Important information for Shadow Password users **
	If you are using the SLS distribution, then replace any blank
	passwords in /etc/passwd with :x: instead of ::.
	Otherwise rshd/rlogind will let anyone become these user ids.
        This is an SLS setup bug and will, by default allow anyone remote
	access to your machine, with root priveledges!

2.2	Putting things in the right place.

	With the standard NET-2 distribution, all of the configuration files
	are in /conf/net, with links in /etc. For example, /etc/hosts
	is a link to /conf/net/hosts. However, if you are using a 
	standard pre-packaged distribution of Linux such as SLS, /conf/net
	probably isn't used... that is, /etc/hosts is just /etc/hosts.
	So, when I say "/conf/net/hosts", I mean "/etc/hosts", and vice
	versa.

	Just keep in mind that the TCP/IP software only looks in /etc and
	/usr/etc for configuration files. Therefore, it makes sense to
	keep all of your files in /etc and /usr/etc as they should be.
	HOWEVER, Fred has decided to put the files in /conf/net with LINKS
	in /etc. Either way, it doesn't matter. When we say "/etc/hosts",
	it doesn't matter if /etc/hosts is an actual file or a link to
	/conf/net/hosts.

	If you just unpacked NET-2 above (i.e. you don't already have the
	files from installing SLS), then you don't have the configuration
	files in /conf/net (you only have the symlinks in /etc). 
	The easiest way to get the configuration files in /conf/net is
	to copy them from the net-032 distribution:

		# mkdir -p /conf/net
		# chown -R root.root /conf; chmod -R 755 /conf
		# cp /usr/src/net-032/etc/* /conf/net

	You should make sure that all of the symlinks to /conf/net in /etc
	can be resolved (that is, try to "more" or "cat" each file, make
	sure you don't get any errors). Also note that some files will
	be duplicated: for example, /etc/inetd.conf is a symlink to 
	/usr/etc/inetd.conf. However, from the cp command above you also
	have a /conf/net/inetd.conf, which can be deleted (remember that
	all of the programs still look in /etc, not /conf. So whatever is
	in /etc is the file which is actually being used).


2.3	Creating the device interfaces.

	In previous versions it was necessary to create a number of
	device files for the NET-2 code. This is no longer the case.

	If you have any of the following files created you should delete
	them:

	rm /dev/net /dev/unix /dev/inet
	rm /dev/ip /dev/icmp /dev/tcp /dev/udp
	rm /dev/wd0 /dev/wd1 /dev/wd2 /dev/wd3
	rm /dev/ec0 /dev/ec1 /dev/ec2 /dev/ec3
	rm /dev/ne0 /dev/ne1 /dev/ne2 /dev/ne3

	should clean them all.

	However, the arp program does need /dev/arp, so:

	mknod -m 600 /dev/arp c 16 1

	will create it ok. If you already have it, check that it looks
	the same.

3.	Building the Kernel.
	
	You're now ready to build the new 0.99.pl14 kernel with the NET-2
	code enabled. 

3.1	Configuring the NET-2 kernel code.

        A 'make config' will take you through configuring the kernel
        Select the drivers you desire by answering 'yes' when prompted.

	Note, you will be prompted for "Network Device Support?", but
	the label after it might suggest that this is for Ethernet only,
	this is not the case, and you must answer 'yes' to this, even if
	you only desire the slip or plip drivers to be configured.
	You will be asked later about each of the ethernet drivers,
	slip and plip in turn.

	The Ethernet HOWTO also contains much useful information for
	configuring Ethernet devices in the kernel.

3.2	Building the kernel.

	You can now build the kernel as you normally would (see the file
	/usr/src/linux/README if you've never done this before). Essentially
	this entails editing /usr/src/linux/Makefile to set root device and
	default display mode. (*Note: keyboard is now handled by loadable
	keymaps as of 0.99.pl10; grab the file keytable.tar.z from your 
	nearest Linux ftp site). 

        Finally do 'make dep' and 'make'. You now have a new 0.99.14 kernel
        with NET-2 set up. I wouldn't reboot it quite yet as we still have
        to configure the NET-2 programs before it will work correctly.

4.	Configuring NET-2 TCP/IP.

	The final step is to modify the various setup files to get NET-2
	working. After this is ready you can boot your new kernel and 
	go happily netting (if all goes well).

	In this section I'll describe each of the major TCP/IP setup files,
	what they do, and what you need to do to configure them. 

	If you're using SLIP, see section 5.0 on configuring SLIP. The
	discussion below is for Ethernet connections only. SLIP users
	should FIRST read all of section 4.0 and then apply the changes
	discussed in section 5.0.

4.1	Before you begin.

	Before you can configure NET-2 TCP/IP, you need to find out
	the following information about your network setup. Your network
	admins can tell you most of these things.
	
	* IP address: this is the unique machine address in dotted-decimal
	  format. An example is 128.253.153.54. Your network admins will 
	  provide you with this number. 
	  
	  If you're only configuring loopback mode (i.e. no SLIP, no ethernet 
	  card, just TCP/IP connections to your own machine---called 
	  "loopback") then your IP address is 127.0.0.1.

	* Your network mask ('netmask'). For performance reasons, it is
	  desirable to limit the number of hosts on any particular segment
	  of a network. If you have a large number of addresses allocated
	  to you, you might break those addresses up into large chunks,
	  and create subnetworks, and then allow each individual network
	  segment be a subnetwork of the whole network. The network mask
	  is a pattern of bits, which when overlayed onto an address on your
	  network, will tell you which subnet that address lives on. This is
	  very important for routing, and if you find, for example, that you
	  can happily talk to people outside your network, but not to some
	  people within your network, there is a good chance that you have
	  an incorrect mask specified.

	  Your network administrators will have chosen the netmask when the
	  network was designed, and therefore they should be able to supply
	  you with the correct mask to use. Most networks are class C
	  subnetworks which use 255.255.255.0 as their netmask. Other Class B
	  networks use 255.255.0.0. The NET-2 code will automatically select
	  a mask that assumes no subnetting as a default if you do not specify
	  a mask.

	  The masks chosen by default are as follows:

	  For addresses with the first byte:
	  1-127		255.0.0.0		(Class A)
	  128-191	255.255.0.0		(Class B)
	  192+		255.255.255.0		(Class C+)

	  If one of these doesn't work, try the other. If this
	  doesn't work, ask your local net guru for help.

	  This applies equally well to the loopback port. Since the
	  loopback ports address is always 127.0.0.1, the netmask for
	  this port is always 255.0.0.0. You can either specify this
	  explicitly or rely on the default mask.

	* Your network address. This is your IP address masked with the netmask.
	  For example, if your netmask is 255.255.255.0, and your IP address
	  is 128.253.154.32, your network number (IP addr AND netmask) is 
	  128.253.154.0. With a netmask of 255.255.0.0, 
	  this would be 128.253.0.0. 

	  If you're only using loopback, you don't have a net address.

	* Your broadcast address. This is your IP address masked with the
	  netmask, and then possibly ORed with the subnetmask inverted.
	  Such that for a Class C network, with netmask 255.255.255.0,
	  your broadcast address will be your network address (calculated
	  above) ORed with 0.0.0.255.

	  For example:

	  Your IP address is:			128.253.154.32
	  Your netmask is:			255.255.255.0
	  netmask inverted is:			000.000.000.255

	  then:

	  Your broadcast address should be:	128.253.154.255.

	  Note that for historical reasons, some networks are setup to use
	  the network address as the broadcast address, if you have any doubt,
	  check with your net admin.

	  If you have access to a sniffer, or some other device capable of
	  providing a trace of your network, then you might be able to
	  determine both the network and broadcast addresses by looking at the
	  traffic on your network. Keep an eye open (or filter all traffic
	  except) for ethernet frames destined for the ethernet broadcast
	  address: ff:ff:ff:ff:ff:ff, if it is an IP datagram, then look at
	  the destination ip address. If the IP source address is your router,
	  and the protocol ID is not ARP, then what you are seeing might be a
	  routing broadcast. The destination IP address in this case will be
	  the IP broadcast address of your network. You can then work out the
	  IP network address. But again, if in doubt then consult your network
	  admin, or check the configuration of a known working machine.

	  If you're only using loopback, you don't have a broadcast address.

	* Your gateway address. This is the address of the machine which
	  is your "gateway" to the outside world (i.e. machines not on your
	  subnet). In general the gateway machine has an IP address identical
	  to yours but with a ".1" in the last position; e.g. if your IP
	  address is 128.253.154.32, your gateway might be 128.253.154.1.
	  Your network admins will provide you with the IP address of your
	  gateway.

	  If you're only using loopback, you don't have a gateway address.
	  If your network is not connected to the Internet, that is, it
	  is a standalone network, then you don't have a gateway, and
	  therefore don't need a gateway address.
	
	* Your nameserver address. Most machines on the net have a name
	  server which translates hostnames into IP addresses for them. 
	  Your network admins will tell you the address of your name server.
	  You can in fact run a nameserver on your own machine by running
	  named, in which case the nameserver address is 127.0.0.1. However,
	  But it is not required that you run named at all; see section
	  4.2.2.1.

	  If you're only using loopback, you don't have a nameserver
	  address. (After all, you're only connecting to yourself.)

	SLIP USERS: You may or may not require any of the above information
	except for a nameserver address. Depending on how your slip access
	is achieved, you will either be given an ip address to use, in
	which case you probably already know it, or the slip server will
	dynamically allocate one for you. How to handle this situation is
	described in section 5.

	NET-2 supports full routing, multiple routes, subnetworking (at
	this stage on byte boundaries only), the whole nine yards. The above
	describes most basic TCP/IP configurations. Yours may be quite
	different: when in doubt, consult your local network gurus and check
	out the man pages for "route" and "ifconfig" included with the net-032
	package. Configuring TCP/IP networks is very much beyond the scope of
	this document; the above should be enough to get most people started.

4.2	/etc/rc.d/rc.inet1 and /etc/rc.d/rc.inet2

	For the non-UNIX wizard: "rc" files are run at bootup time by the
	"init" program and start up all of the basic system programs, such
	as sendmail, cron, etc. as well as the NET-2 daemons (such as inetd).
	They are analogous to the MS-DOS autoexec.bat file, and "rc" might
	stand for "runtime commands". For NET-2 the rc files are found in
	/etc/rc.d. It doesn't really matter where you keep them, as long as
	init can find them. (We'll go into this later). 

	First things first. The file /etc/rc.d/rc.inet1 configures the basic
	TCP/IP interface to your machine, using two programs: /etc/ifconfig
	and /etc/route.

	/etc/ifconfig is used for configuring interface with the parameters
	that they require to function, such as IP addresses, network masks,
	broadcast addresses and the like.

	/etc/route is used to create entries in a table (the routing table)
	that the networking code will look in, to determine where to send
	datagrams that it wishes to transmit.

	Note that in the previous NET-1 code, the name of the interface
	configuration program was "config". However, the "standard" for UNIX
	system TCP/IP configuration is to use ifconfig and route, and this has
	been implemented with NET-2.
	
	THEREFORE: Be sure NOT to use /etc/config in your rc files. "config"
	will not work with NET-2, and if you try and use it you will see
	messages mentioning "old-style ioctl", and it wont work. You should
	only run rc.inet1 and rc.inet2 at boot time (or rc.net after you have
	converted it).

	NOTE: The standard SLS "rc" file file calls "/etc/rc.net" instead
	of "/etc/rc.d/rc.inet1" and "/etc/rc.d/rc.inet2". The SLS rc.net
	file can be treated as just the rc.inet1 and rc.inet2 files in
	one file. So when you see rc.inet1, and rc.inet2 below, just add the
	same commands into /etc/rc.net, and you will achieve the same result.
	It is important that the commands in rc.inet1 be run first, so make
	sure those commands are at the top of the file.

	Below you're going to edit rc.inet1 to use the correct ifconfig and
	route commands for your machine. But first, you need to know the
	information about your network setup in section 4.1, above.

4.2.1	Editing rc.inet1

	Edit the file /etc/rc.d/rc.inet1. This file uses the "ifconfig" and
	"route" commands to configure your network interface at boot time.
	SLS Users: Remember that SLS uses just rc.net, and these command
	should be called first, so put them at the top of the file.

	You may need to do some heavy surgery on this file to get it to look
	right; it may be easier to delete it and start from scratch. Given
	the information above, a possible rc.inet1 for a machine that has
	a single ethernet interface should look like:


#!/bin/sh
# Portion of /etc/rc.d/rc.inet1 to configure the loopback interface

HOSTNAME=`hostname`

# Attach the loopback device. 
/etc/ifconfig lo 127.0.0.1	# uses default netmask 255.0.0.0
/etc/route add 127.0.0.1	# a route to point to the loopback device
# End Loopback Definition

# Portion of /etc/rc.d/rc.inet1 to configure an ethernet interface

# IF YOU HAVE AN ETHERNET CONNECTION, use these lines below to configure the 
# eth0 interface. If you're only using loopback or SLIP, don't include the
# rest of the lines in this file.

# Edit for your setup.
IPADDR="128.253.154.32"		# REPLACE with YOUR IP address!
NETMASK="255.255.255.0"		# REPLACE with YOUR netmask!
NETWORK="128.253.154.0"		# REPLACE with YOUR network address!
				# Note: NETWORK MUST be in
				#       /etc/networks
BROADCAST="128.253.154.255"	# REPLACE with YOUR broadcast address, if you
				# have one. If not, leave blank and edit below.
GATEWAY="128.253.154.1"		# REPLACE with YOUR gateway address!

/etc/ifconfig eth0 ${IPADDR} netmask ${NETMASK} broadcast ${BROADCAST}
# If you don't have a broadcast address, change the above line to just:
# /etc/ifconfig eth0 ${IPADDR} netmask ${NETMASK} 

/etc/route add ${NETWORK}			# MUST HAVE AN ENTRY IN
						# /etc/networks !!!

/etc/route add default gw ${GATEWAY} metric 1	# Only necessary if your
						# network has an Internet
						# connection.
# End of Ethernet Configuration


	This is a basic rc.inet1 to run the ifconfig and route commands
	needed to set up a basic TCP/IP connection. Edit this for your setup.
	If you do not have an ethernet interface, and either have a standalone
	workstation (no network connection at all), or you use SLIP, then
	you need only the two lines that refer to the loopback interface "lo"
	as noted.

	To ensure that this will be run at boot time, make sure that you
	include the command:

		/bin/sh /etc/rc.d/rc.inet1

	in your /etc/rc, or in your /etc/inittab (if you're running the
	sysvinit package). In general, make sure that rc.inet1 is run
	BEFORE rc.inet2 at boot time. You may wish to run rc.inet1 and
	rc.inet2 from /etc/rc or /etc/rc.local. Or you can run them from
	/etc/inittab. Either way is fine, but don't run one without the other.


4.2.2	Editing rc.inet2

	Having run rc.inet1, you now your interfaces configured with addresses,
	and a routing table with enough information to get you started. You'll
	now want to do something with them.

	The rc.inet2 script is also run at boot time, AFTER rc.inet1.
	It starts up various TCP/IP daemons such as inetd, portmapper, 
	and so on. Remember that SLS uses just rc.net, thus, the following
	should appear at the bottom of the file.

	Now would be a really good time for you to read Olafs Network
	Administrators Guide. It will help you decide what you need to
	put in this file, and what you don't need to put in this file.

	But Briefly:
	'inetd' is a program that sits in the background and manages
	internet connection requests and the like. It is smart enough
	that you don't need to leave a while bunch of servers running
	even when there is nothing connected to them. When it sees an
	incoming request for a particular service, eg telnet or ftp, it
	will check the /etc/services file, and find what server program
	needs to be run to manage the request, will start it, and hand
	the connection over to it. Imagine it as a master server for you
	internet servers.

	'syslogd' is a daemon (server that runs in the background) that
	handles all system logging. It accepts messages generated for it,
	will distribute them according to the specifications in
	/etc/syslogd.conf. For example, certain types of messages you will
	want to send to the console and also to log to a file, while others
	will need only be logged, while others yet again, will only need
	to go to the console. syslogd allows you to specify what messages
	you want to send where.

	For a more complete and detailed description of how all the networking
	bits and pieces fit together, please get Olaf Networking Guide as
	described in section 0.3 (Related Documentation).


	You will probably want to comment out most of this file, especially
	if you're not planning on using NFS (Network File System). You 
	MUST leave the stanza to run inetd and syslogd uncommented. Note
	that if you DON'T uncomment everything but inetd and syslogd, 
	you may run into network problems at first. The best bet is to 
	comment all of these things out, get yourself on the network, and
	then worry about configuring the rest of the clients in rc.inet2.

	If you're not going to be using NFS, you can comment out the lines
	to run: ugidd, mountd, nfsd, pcnfsd, and bwnfsd.

	You can comment out the stanza to run "umail" unless you have that 
	package. In general, most of the things found in rc.inet2 are "sold 
	separately". I recommend starting only inetd and syslog at first
	until you get everything going.

	The following is a copy taken from Fred's net-032 distribution.
	Please check the "NET" declaration, as some distributions might
	keep the network daemons in another directory.

	Each of the stanzas basically says: "If the filename xxxxxx exists,
	and it is an ordinary file (not a directory, pipe, etc.) then
	execute the following commands".


#! /bin/sh
#
# rc.inet2	This shell script boots up the entire INET system.
#		Note, that when this script is used to also fire
#		up any important remote NFS disks (like the /usr
#		distribution), care must be taken to actually
#		have all the needed binaries online _now_ ...
#
# Version:	@(#)/etc/rc.d/rc.inet2	2.18	05/27/93
#
# Author:	Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
#

# Constants.
NET="/usr/etc"
IN_SERV="lpd"
LPSPOOL="/var/spool/lpd"

# At this point, we are ready to talk to The World...
echo -e "\nMounting remote file systems ..."
/bin/mount -t nfs -v		# This may be our /usr runtime!!!

echo -e "\nStarting Network daemons ..."
# Start the SYSLOG daemon.  This has to be the first server.
# This is a MUST HAVE, so leave it in.
echo -n "INET: "
if [ -f ${NET}/syslogd ]
then
	echo -n "syslogd "
	${NET}/syslogd
fi

# Start the SUN RPC Portmapper.
if [ -f ${NET}/rpc.portmap ]
then
	echo -n "portmap "
	${NET}/rpc.portmap
fi

# Start the INET SuperServer
# This is a MUST HAVE, so leave it in.
if [ -f ${NET}/inetd ]
then
	echo -n "inetd "
	${NET}/inetd
else
	echo "no INETD found.  INET cancelled!"
	exit 1
fi

# Start the NAMED/BIND name server.
if [ ! -f ${NET}/named ]
then
	echo -n "named "
	${NET}/named
fi

# Start the ROUTEd server.
if [ -f ${NET}/routed ]
then
  	echo -n "routed "
  	${NET}/routed -q #-g -s
fi

# Start the RWHO server.
if [ -f ${NET}/rwhod ]
then
	echo -n "rwhod "
	${NET}/rwhod -t -s
fi

# Start the U-MAIL SMTP server.
if [ -f XXX/usr/lib/umail/umail ]
then
	echo -n "umail "
	/usr/lib/umail/umail -d7 -bd </dev/null >/dev/null 2>&1 &
fi

# Start the various INET servers.
for server in ${IN_SERV}
do
	if [ -f ${NET}/${server} ]
	then
		echo -n "${server} "
		${NET}/${server}
	fi
done

# Start the various SUN RPC servers.
if [ -f ${NET}/rpc.portmap ]
then
	if [ -f ${NET}/rpc.ugidd ]
	then
		echo -n "ugidd "
		${NET}/rpc.ugidd -d
	fi
	if [ -f ${NET}/rpc.mountd ]
	then
		echo -n "mountd "
		${NET}/rpc.mountd
	fi
	if [ -f ${NET}/rpc.nfsd ]
	then
		echo -n "nfsd "
		${NET}/rpc.nfsd
	fi

	# Fire up the PC-NFS daemon(s).
	if [ -f ${NET}/rpc.pcnfsd ]
	then
		echo -n "pcnfsd "
		${NET}/rpc.pcnfsd ${LPSPOOL}
	fi
	if [ -f ${NET}/rpc.bwnfsd ]
	then
		echo -n "bwnfsd "
		${NET}/rpc.bwnfsd ${LPSPOOL}
	fi

fi
echo network daemons started.
# Done!

4.2.2.1	"To named or not to named... that is the question."

	"I dub thee ... "
	Named is the nameserver daemon that runs under TCP/IP. It allows
	your machine to serve the name lookup requests of other machines...
	that is, if a machine wants to find the IP address for 
	"goober.norelco.com", and you have this machine's IP address in your
	named database, then you can service the request and tell other
	machines what goober's address is. 

	Under older implementations of Linux TCP/IP, to create aliases for
	machine names (even for your own machine), you were required to run 
	named on your Linux box to store name->IP address translations. The
	problem with this is that named is generally difficult to setup and
	maintain. To solve this problem, a program called "hostcvt.build"
	was made available on Linux systems to translate your /etc/hosts file
	(see section 4.3) into named database files. However, even with
	this problem out of the way, running named on your system will cause
	some amount of CPU load and network traffic. 

	The bottom line is this: You DO NOT need to run named on your 
	Linux system. The SLS instructions will probably tell you to run
	hostcvt.build to set up named. This is simply unnecessary, UNLESS
	you want to make your Linux system a nameserver for some reason.
	Now, instead of putting hostnames into the named database, you can
	simply include them in the file /etc/hosts (section 4.3). When
	looking up names, your Linux system will first look in /etc/hosts
	and then ask the nameserver out on the net (if you have one).

	The only reason you may want to run named would be if:
	  a) You're setting up a network of machines, and need a nameserver
	     for one of them (and don't have a nameserver out on the net
	     elsewhere);
	  b) Your network admins want you to run your Linux system as a
	     nameserver for some reason; or,
	  c) You have a slow SLIP connection, and want to run a small
	     cache-only nameserver on your Linux machine so that you don't
	     have to go out on the phone line every time a name lookup
	     occurs. (If you are only going to lookup a small number of
	     machine names, and you know what they are, you can put their 
	     addresses in /etc/hosts instead.) Generally name lookup isn't
	     that slow, and should work fine over most SLIP connections.
	  d) You want to run a nameserver for fun and excitement.

	In general, you DO NOT need to run named: this means that you
	can comment it out from rc.inet2, and you don't have to run
	hostcvt.build. If you want to alias machines, for example you want
	to refer to "loomer.vpizza.com" just as "loomer", you can add an
	alias in /etc/hosts instead. There is no reason to run named unless
	you truly want a full nameserver on your machine. If you already
	have a nameserver (most machines on the Internet do, and your net
	admins will tell you its address), don't bother running named.

	If you're only using loopback, you can run named and set your
	nameserver address to 127.0.0.1, but that's pointless. (No pun
	intended.) You don't need a nameserver at all if you use only
	loopback; the only hostname you know is your own, and it's in
	/etc/hosts (see section 4.3, below).

	Have I mentioned Olafs Network Administration Guide as described
	in section 0.3 (Related Documentation) yet ??

4.3	/etc/hosts

	/etc/hosts contains a list of IP addresses and the hostnames they 
	map to. In this way, you can refer to other machines on the network
	by name, as well as by IP address. Using a nameserver (see section 4.1)
	also allows you to do the name->IP address translation automatically.
	(Running named allows you to run your own nameserver on your Linux
	box. See section 4.2.2.1 above.)

	This file needs to contain at least an entry for 127.0.0.1 with 
	the name "localhost". If you're not only using loopback, you need
	to contain an antry for your IP address, with your full hostname
	(such as loomer.vpizza.com).  You may also wish to include entries 
	for your gateway and network addresses. 

	For example, if "loomer.vpizza.com" has the IP address 
	"128.253.154.32", my /etc/hosts file would look like:

	# /etc/hosts: List of hostnames and IP addresses
	127.0.0.1 		localhost
	128.253.154.32 		loomer.vpizza.com loomer
	# end of hosts

	Once again, edit this for your own needs. If you're only using 
	loopback, the only line in /etc/hosts should be for 127.0.0.1, with
	both "localhost" and your hostname after it.
	
	Note that in the second line, above, there are two names for 
	128.253.154.32: "loomer.vpizza.com" and just "loomer". The first name 
	is the full hostname of the machine. The second is an alias---it 
	allows me to just use "rlogin loomer" without having to type in the 
	entire name.

4.3.1	Important note regarding /etc/hosts from NET-032.

	If you using the hosts file that came with NET-032, then:
	The line "%%IP%%	%%HOST%% %%ALIAS%%" needs to be deleted from 
	this file! This is a "tag" line used by Fred's experimental net
	config scripts. Matt Welsh is now writing a new set of scripts which
	don't use these lines. In any of these files, you see curious lines
	with entries such as "%%NAME%%", these lines MUST be deleted. If you
	don't delete them, you may have lots of strange errors and overflowing
	syslog files.

4.4	/etc/networks

	The /etc/networks file lists the names and addresses of your own,
	and other, networks. It is used by the route command, and allows
	you to specify a network by name, should you so desire.

	NOTE: Every network you wish to add a route to using the 'route'
	command MUST have an entry in /etc/networks

	Its format is similar to that of the /etc/hosts file, (Sec 4.3)
	and an example one might look like:

#
# /etc/networks: list all networks that you wish to add route commands
#                for in here
#
default		0.0.0.0		# default route    - mandatory
loopnet		127.0.0.0	# loopback network - mandatory
mynet		128.253.154.0	# Example network CHANGE to YOURS
#
# end of networks

	
4.5	/etc/host.conf

	The system has some library functions called the resolver library.
	This file specifies how your system will lookup host names. It should
	contain the two lines:

		order hosts,bind
		multi on

	These two lines tell the resolve libraries to first check the 
	/etc/hosts file for any names to lookup, and then ask the nameserver
	(if one is present). The "multi" entry allows you to have multiple
	IP addresses for a given machine name in /etc/hosts.

	This file comes from the implementation of the resolv+ bind 
	library for Linux. You can find further documentation in the
	resolv+(8) man page (if you have the man page available).

	If you don't, they are available from:
        Site:           src.doc.ic.ac.uk [146.169.2.1]
        Directory:      /computing/comms/tcpip/nameserver/resolv+
        File:           resolv+2.1.1.tar.Z

	This file contains resolv+.8, which is the man page for the
	resolver library.

4.6	/etc/resolv.conf

	This file actually configures the system name resolver.
	This file contains two types of entries: The addresses of your
	nameservers (if any), and the name of your domain (if you have one).
	If you're running your own nameserver (i.e., you're running named
	on your Linux machine: see section 4.2.2.1), then the address of
	your nameserver is just 127.0.0.1 (the loopback address).

	Your domain name is your fully-qualified hostname (if you're a
	registered machine on the Internet, for example), with the hostname
	chopped off. That is, if your full hostname is loomer.vpizza.com,
	your domain name is just "vpizza.com", without the hostname ("loomer").

	For example, if your machine is goober.norelco.com, and has a
	nameserver at the address 128.253.154.5, your /etc/resolv.conf would 
	look like:

		domain norelco.com
		nameserver 127.253.154.5

	You can specify more than one nameserver. Each one
	must have a "nameserver" line of its own in resolv.conf.

	If you're only using loopback, you don't need a nameserver.

4.7	/etc/HOSTNAME

	This is a new file; it contains the full hostname of your machine 
	(with the domain name). It is used by the 'hostname' command, to
	saveyou having to supply the hostname as an argument. For example,
	the machine above would have the file /etc/HOSTNAME:

		goober.norelco.com

	That's all.

4.8	/etc/rc.local

	Change the line in /etc/rc.local (or /etc/rc, depending on your
	setup) which sets your system's hostname, to

		/bin/hostname -S

	(You have a new hostname in /bin.) This sets your hostname from
	the name found in /etc/HOSTNAME. If you don't like this (personally
	I don't), just do:
		/bin/hostname -S <your-hostname>

	For example,
		/bin/hostname -S loomer.vpizza.com

	It IS important that you give a full hostname (with domain name)
	in /etc/HOSTNAME. This allows the hostname command to set the
	host AND domainname in one shot. 

	IMPORTANT: The hostname found in /etc/HOSTNAME *must* be a valid
	hostname. This means that it must be found in /etc/hosts (or that
	your nameserver must be able to resolve it, but you should put it
	in /etc/hosts in case your nameserver is down).

4.9	Other files.

	There are of course many other files in /etc which you may need to
	dabble with later on. Instead of going into them here, I'm going to
	provide the bare minimum to get you on the net. More information will
	be provided in later versions of the NET-2 HOWTO.

	Once you have all of the files set up, and everything in the 
	right place, you should be able to reboot your new kernel and
	net away to your heart's content. However, I strongly suggest
	that you keep a bootable copy of your old kernel and even possibly
	a "recovery disk" (say, the SLS a1 disk, or HJLu's single disk
	boot disk) in case you hosed your /etc/rc files, for example,
	and can't login when you boot. 


5.	Configuring SLIP.

	SLIP (Serial Line Internet Protocol) allows you to use TCP/IP 
	over a serial line, be that a phone line, with a dialup modem, or
	a leased asynchronous line of some sort. Of course, to use SLIP you'll
	need access to a dial-in SLIP server in your area. Many universities
	and businesses provide SLIP access all over the world.

	SLIP uses the serial ports on your machine to carry IP datagrams.
	To do this is must take control of the serial device. Slip devices
	are named 'sl0', 'sl1' etc, how do these correspond to your serial
	devices ? The networking code uses what is called an IOCTL (I/O
	control) call to change the serial devices into slip devices. There
	are two programs supplied that can do this, they are 'dip' and
	'slattach'.

	'dip' (Dialup IP) is a smart program that is able to set the speed
	of the serial device, command your modem to dial the remote end of
	the link, automatically log you into the remote machine, search for
	messages sent to you and extract information from them such as your
	IP address, and perform the IOCTL to change the serial device over
	to a slip device.

	'slattach' on the other hand does very little other than set the
	serial device speed and perform the IOCTL to convert it to a slip
	device.

	When do you use which ? You would use dip when your link to the
	machine that is your slip server is a dialup modem, or some other
	temporary link. You would use 'slattach' when you have a leased
	line, perhaps a cable, between two machines, and there is no special
	action needed to get the link working. See section 5.4 for more
	information.
	
	Configuring SLIP is much like configuring an Ethernet interface
	(please read section 4.0 above). However, there are a few key
	differences.

	First of all, slip links are unlike an Ethernet network in that
	there are only ever two hosts on the network, one at each end.
	Unlike an ethernet that is available for use as soon as you are
	cabled, with slip, depending on the type of link you have, you
	may have to command your modem to establish the connection to
	the remote modem. Dialing in and connecting to your SLIP server is 
	usually done at boot time, usually by a program called "dip" 
	(found in the "dip" subdir of the net-032 package). "Dip" not only 
	dials and logs you into the SLIP server, but it also initiates the 
	SLIP connection and runs the appropriate ifconfig and route commands 
	to initialize the device. Therefore, the only lines needed in 
	/etc/rc.d/rc.inet1 are the few commands to initilize the loopback 
	connection at the top (see section 4.2.1 above).

	If you're not using DIP, you may indeed have to edit rc.inet1 for
	your SLIP parameters.

	Also, there are two types of SLIP servers: Dynamic IP address
	servers and static IP address servers. Dynamic servers allocate
	a new, different IP address to you every time you dialin and
	initiate a connection. Static servers give you the same address
	every time. Almost every SLIP server will also prompt you for
	a username and password when dialing in: DIP can handle logging
	you in automatically.

	Essentially, configuring a SLIP connection is just like configuring
	for loopback or ethernet. The main differences are discussed below.
	Read section 4.0 above for information on configuring your TCP/IP
	files, and apply the changes below.

5.1	Static SLIP server connections using a dialup line.

	If you have a static-allocation server (same IP address every time),
	then you may want to put entries for your hostname and IP address
	(since you know what your IP address is!) in /etc/hosts. You should
	also configure the other files listed in section 4.0: rc.inet2, 
	host.conf, resolv.conf, /etc/HOSTNAME, and rc.local). Remember that
	when configuring rc.inet1, you don't need to run the ifconfig and
	route commands other than the two for the loopback interface (if
	you're using DIP to dial your connection).

	In general, your gateway is the IP address of your SLIP server.
	Because DIP handles the configuration of the route, you probably
	don't need to know this, but in some cases you might have to run the
	appropriate ifconfig or route commands in /etc/rc.d/rc.inet1 to
	get it to work correctly. Instead of using "eth0" as your interface 
	name, SLIP connections use "sl0".  Keep in mind that you can't
	ifconfig sl0 until you have dialed the connection and connected to
	the SLIP server.

	Also, you may need to use the "pointopoint" argument to ifconfig if
	DIP does not do it correctly. For example, if your SLIP server's 
	address is 44.136.8.5, and your IP address is 128.253.154.32, you may 
	need to run the command 

		# /etc/ifconfig sl0 128.253.154.32 pointopoint 44.136.8.5

	See the man pages for ifconfig in the net-032 package.

5.2	Static SLIP server connections using a leased line or cable.

	If you have a leased line, or cable to your slip server, then you
	do not need to worry with the hassle of causing your modem to
	dial and establish the connection. In this situation the 'slattach'
	program is the best solution for configuring your SLIP link.

	I can think of no better way of describing the process than by
	illustration. In your rc.inet1 file you would have something similar
	to the following:

# Portion of /etc/rc.d/rc.inet1 for leased line static slip connection
#!/bin/sh
IPADDR="128.253.154.32"         # REPLACE with YOUR IP address!
REMADDR="128.253.154.33"	# REPLACE with YOUR OTHER SLIP servers address!

slattach -p cslip -s 19200 /dev/ttyS0
/etc/ifconfig sl0 $IPADDR pointopoint $REMADDR up
/etc/route add default gw $REMADDR

# End

	slattach allocates the first unallocated slip device to the serial
	device specified. slattach starts with 'sl0'. Therefore the first
	slattach command attaches slip device 'sl0' to the serial device
	specified, 'sl1' the next time etc.

	Note also that the first parameter that slattach accepts is one to
	specify the protocol. At present the only working values are
	'slip', and 'cslip'. 'cslip' is compressed slip, it is the same
	slip, except that the datagrams headers have been compressed to
	reduce overhead on the link. On good clean links this is recommended.
	In future protocols such as PPP, and KISS (for Amateur Radio use)
	will be offered.

	After you have 'slattached' the interface, you can now configure
	it with ifconfig as you would an ethernet interface, but since
	there is only one other machine that you can talk to directly via
	the link you do not need to worry about netmasks and the like.
	Normally you would point your default route to the slip interface,
	as it is your connection to every other machine. The pointopoint
	parameter should automatically add a route to the machine at the
	other end of the link. Its primary function is to tell your machine
	that there are no other hosts on that network interface.

	If you have more than one slip interface then you will have routing
	considerations to make. You will have to decide what routes to
	add, and those decisions can only be made on the basis of the
	actual layout of your network connections.

5.3	Dynamic SLIP server connections using a dialup line.

	If your SLIP server allocates a new IP address to you every time
	you dialin, you don't know your IP address at all, so you can't
	include an entry in /etc/hosts for your machine. (If you want, you 
	can place your hostname in /etc/hosts with the address 127.0.0.1). 

	Most dynamic SLIP servers tell you your IP address when you initiate 
	the connection. For example, it may print a string such as, "Your IP 
	address is 128.253.154.10. Server address is 128.253.154.1." DIP will 
	need to know these numbers when it configures the connection. See 
	section 5.3 below on using DIP.

	If you use DIP, it does all of the work of configuring the 
	connection when you dialin, so rc.inet1 only needs the two lines
	to configure the loopback address (see section 4.2.1 above). 
	Also, see section 5.1 above. You need to configure all of
	the files listed in section 4.0. Your gateway address (should you
	need to know it) will be the address of the SLIP server. Also,
	you may need to run ifconfig on sl0 using the SLIP server's address
	as the "pointopoint" argument (see section 5.1 above). However, if 
	you use DIP, it should be able to do all of the ifconfig and route 
	commands for you.

	One good way to figure out how to configure SLIP on your machine is
	to find someone else who uses the SLIP server (it can be on a PC,
	Mac, UNIX box, whatever) and find out what numbers they use. 


5.4	Using DIP.

	DIP can simplify the process of dialing into the SLIP server, logging
	in, starting the connection, and configuring the sl0 device with
	the appropriate ifconfig and route commands. 

	Essentially, to use DIP you'll write a "chat script" which is 
	basically a list of commands to send to DIP along with commands for
	logging in, starting the connection, and so on. See "sample.dip"
	in the net-032 package for an explanation. DIP is quite a powerful
	program, with many options. Instead of going into all of them here
	you should look at the READMEs and the sample files from tsx-11 and
	the net-032 distribution.

	You may notice that the sample.dip script assumes that you're using
	a static SLIP server, so you know what your IP address is beforehand.
	For dynamic SLIP servers, the newer version of dip include a command
	you can use to automatically read and configure your interface
	with the address printed by your server. The following sample was
	contributed by Paul Mossip, and is probably a good starting point
	for you:


#
# Connection script for SLIP to knoware.nl.mugnet.org
#

  # Fetch the IP address of our target host.
main:

  # Set the desired serial port and speed.
  port /dev/cua0
  speed 38400

  # Reset the modem and terminal line.
  reset

  # Prepare for dialing.
  send ATZ1\r
  wait OK 4
  if $errlvl != 0 goto error
  dial 666-0999				## Change to your servers number!
  if $errlvl != 0 goto error
  wait CONNECT 60
  if $errlvl != 0 goto error

  # We are connected.  Login to the system.
login:
  sleep 3
  send \r\n\r\n
  wait gracelands> 20			## Change to your servers prompt
  if $errlvl != 0 goto error
  send login\n
  wait name: 10				## Wait username: prompt
  if $errlvl != 0 goto erro
  send elvisp\n				## Change to your own!
  wait ord: 10				## Wait password prompt
  if $errlvl != 0 goto error
  send alive\n				## Change to your own!
  wait gracelands> 10
  if $errlvl != 0 goto error
  send slip\n				## Change to suit your server
  wait SLIP 30				### Wait for SLIP prompt
  if $errlvl != 0 goto error
  get $local remote 10			## Assumes the server sends your IP..
  if $errlvl != 0 goto error		## address as soon as you enter slip.
  get $remote gracelands		## slip server address from /etc/hosts
done:
  print CONNECTED to $remote with address $rmtip we are $local
  default
  mode SLIP
  goto exit
error:
  print SLIP to $host failed.
exit:
#
# End dip script


	The example above will automatically point your default route via your
	slip link, if this is not what you want, you might have an ethernet
	connection that should be your default route, then remove the 'default'
	command.

	The above example is fairly robust. Please refer to the 'dip' man
	page for more information.

	It should be simple to modify the code for DIP in the file attach.c
	to run the route and ifconfig commands that work for you automatically.

5.5	Configuring your Linux Machine as a SLIP Server.

	Note: Some of the information below came from the dip man pages,
	where in fact how to run Linux as a slip server is briefly documented.

	To configure Linux as a slip server, you need to create Special
	slip accounts for users, where dip (in slave mode) is used as the
	login shell. Fred suggests that he has a convention of having all
	of his Slip accounts begin with a capital 'S', eg "Sfredm".

	Because the login program won't accept arguments to the login shell,
	you will need to create a small program that looks like the following:

/* dip-i.c - from a mail message of Karl kkeyte@esoc.bitnet */
int main()
{
   execlp("dip", "dip", "-i", (char *) 0);
}

	Compile it with: 'gcc -O dip-i.c -o dip-i'

	Give it permissions 555. I recommend calling it /usr/bin/dip-i as
	shown below.

	A sample /etc/passwd entry for a Slip user looks like:

	Sfredm:ij/SMxiTlGVCo:1004:10:UUNET:/tmp:/usr/bin/dip-i
	 ^^         ^^        ^^  ^^   ^^    ^^   ^^
	  |          |         |   |    |     |    \__ shell program running
          |          |         |   |    |     |         dip -i as login shell
	  |          |         |   |    |     \_______ Home directory
	  |          |         |   |    \_____________ User Full Name
	  |          |         |   \__________________ User Group ID
	  |          |         \______________________ User ID
	  |          \________________________________ Encrypted User Password
	  \___________________________________________ Slip User Login Name

---End of part 1/2---

