As mentioned earlier, there are three files in the
/etc/sliphome
directory that are part of the configuration
for /usr/sbin/sliplogin
(see sliplogin(8)
for the
actual manual page for sliplogin
): slip.hosts
, which
defines the SLIP users & their associated IP addresses;
slip.login
, which usually just configures the SLIP interface;
and (optionally) slip.logout
, which undoes
slip.login
's effects when the serial connection is
terminated.
/etc/sliphome/slip.hosts
contains lines which have at least
four items, separated by whitespace:
The local and remote addresses may be host names (resolved to IP
addresses by /etc/hosts
or by the domain name service,
depending on your specifications in /etc/host.conf
), and I
believe the network mask may be a name that can be resolved by a
lookup into /etc/networks
. On a sample system,
/etc/sliphome/slip.hosts
looks like this:
----- begin /etc/sliphome/slip.hosts -----
#
# login local-addr remote-addr mask opt1 opt2
# (normal,compress,noicmp)
#
Shelmerg dc-slip sl-helmerg 0xfffffc00 autocomp
----- end /etc/sliphome/slip.hosts ------
At the end of the line is one or more of the options.
normal
- no header compression
compress
- compress headers
autocomp
- compress headers if the remote end allows it
noicmp
- disable ICMP packets (so any ``ping'' packets will be
dropped instead of using up your bandwidth)
Note that sliplogin
under early releases of FreeBSD 2 ignored
the options that FreeBSD 1.x recognized, so the options
normal
, compress
, autocomp
, and noicmp
had no effect
until support was added in FreeBSD 2.2 (unless your slip.login
script
included code to make use of the flags).
Your choice of local and remote addresses for your SLIP links depends on whether you are going to dedicate a TCP/IP subnet or if you are going to use ``proxy ARP'' on your SLIP server (it's not ``true'' proxy ARP, but that is the terminology used in this document to describe it). If you're not sure which method to select or how to assign IP addresses, please refer to the TCP/IP books referenced in the slips:prereqs section and/or consult your IP network manager.
If you are going to use a separate subnet for your SLIP clients, you
will need to allocate the subnet number out of your assigned IP
network number and assign each of your SLIP client's IP numbers out of
that subnet. Then, you will probably either need to configure a
static route to the SLIP subnet via your SLIP server on your nearest
IP router, or install gated
on your FreeBSD SLIP server and
configure it to talk the appropriate routing protocols to your other
routers to inform them about your SLIP server's route to the SLIP
subnet.
Otherwise, if you will use the ``proxy ARP'' method, you will need to
assign your SLIP client's IP addresses out of your SLIP server's
Ethernet subnet, and you'll also need to adjust your
/etc/sliphome/slip.login
and
/etc/sliphome/slip.logout
scripts to use arp(8)
to
manage the proxy-ARP entries in the SLIP server's ARP table.
The typical /etc/sliphome/slip.login
file looks like this:
----- begin /etc/sliphome/slip.login -----
#!/bin/sh -
#
# @(#)slip.login 5.1 (Berkeley) 7/1/90
#
# generic login file for a slip line. sliplogin invokes this with
# the parameters:
# 1 2 3 4 5 6 7-n
# slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 inet $4 $5 netmask $6
----- end /etc/sliphome/slip.login -----
This slip.login
file merely ifconfig's the appropriate SLIP
interface with the local and remote addresses and network mask of the
SLIP interface.
If you have decided to use the ``proxy ARP'' method (instead of using
a separate subnet for your SLIP clients), your
/etc/sliphome/slip.login
file will need to look something
like this:
----- begin /etc/sliphome/slip.login for "proxy ARP" -----
#!/bin/sh -
#
# @(#)slip.login 5.1 (Berkeley) 7/1/90
#
# generic login file for a slip line. sliplogin invokes this with
# the parameters:
# 1 2 3 4 5 6 7-n
# slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 inet $4 $5 netmask $6
# Answer ARP requests for the SLIP client with our Ethernet addr
/usr/sbin/arp -s $5 00:11:22:33:44:55 pub
----- end /etc/sliphome/slip.login for "proxy ARP" -----
The additional line in this slip.login
, arp -s $5
00:11:22:33:44:55 pub
, creates an ARP entry in the SLIP server's
ARP table. This ARP entry causes the SLIP server to respond with the
SLIP server's Ethernet MAC address whenever a another IP node on the
Ethernet asks to speak to the SLIP client's IP address.
When using the example above, be sure to replace the Ethernet MAC
address (00:11:22:33:44:55
) with the MAC address of your
system's Ethernet card, or your ``proxy ARP'' will definitely not work!
You can discover your SLIP server's Ethernet MAC address by looking at
the results of running netstat -i
; the second line of the output
should look something like:
ed0 1500 <Link>0.2.c1.28.5f.4a 191923 0 129457 0 116
^^^^^^^^^^^^^^^
which indicates that this particular system's Ethernet MAC address is
00:02:c1:28:5f:4a
-- the periods in the Ethernet MAC address
given by netstat -i
must be changed to colons and leading zeros
should be added to each single-digit hexadecimal number to convert the
address into the form that arp(8)
desires; see the manual page on
arp(8)
for complete information on usage.
Note that when you create /etc/sliphome/slip.login
and
/etc/sliphome/slip.logout
, the ``execute'' bit (ie,
chmod 755 /etc/sliphome/slip.login
/etc/sliphome/slip.logout
) must be set, or sliplogin
will be unable to execute it.
/etc/sliphome/slip.logout
isn't strictly needed (unless you
are implementing ``proxy ARP''), but if you decide to create it, this
is an example of a basic slip.logout
script:
----- begin /etc/sliphome/slip.logout -----
#!/bin/sh -
#
# slip.logout
#
# logout file for a slip line. sliplogin invokes this with
# the parameters:
# 1 2 3 4 5 6 7-n
# slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 down
----- end /etc/sliphome/slip.logout -----
If you are using ``proxy ARP'', you'll want to have
/etc/sliphome/slip.logout
remove the ARP entry for the SLIP
client:
----- begin /etc/sliphome/slip.logout for "proxy ARP" -----
#!/bin/sh -
#
# @(#)slip.logout
#
# logout file for a slip line. sliplogin invokes this with
# the parameters:
# 1 2 3 4 5 6 7-n
# slipunit ttyspeed loginname local-addr remote-addr mask opt-args
#
/sbin/ifconfig sl$1 down
# Quit answering ARP requests for the SLIP client
/usr/sbin/arp -d $5
----- end /etc/sliphome/slip.logout for "proxy ARP" -----
The arp -d $5
removes the ARP entry that the ``proxy ARP''
slip.login
added when the SLIP client logged in.
It bears repeating: make sure /etc/sliphome/slip.logout
has
the execute bit set for after you create it (ie, chmod 755
/etc/sliphome/slip.logout
).