From: "Philip Copeland (Sys Admin)"
Subject: ANNOUNCE: FAQ for 0.98.5 -> 0.99.0.4
Date: Thu, 17 Dec 1992 03:43:38 +0200
well I've been doing proper work for the past while and ignoring the FAQ
a bit but this should bring the FAQ up to date with linux 0.99 with
the first four tcpip patches for 0.99
this document is available on sunsite.unc.edu
in pub/Linux/Incoming as FAQ-NET-xxxxxx
========================================================
The linux NET FAQ by P.Copeland (p_copela@csd.uwe.ac.uk)
========================================================
quick disclaimer: I must appologize for my luck of a spoll checkr
New to this edition:
Help on how to select a 'driver' for your ethernet card
and patch it into the kernel (actually done by Matt Welsh)
Where to get the latest tcpip utils,
Hopefully better explainations of whats going on for those
who where still confused
NOTE: as of this edition I have jumped from 0.98.4 to 0.99.1 and have
gone to gcc-2.3.2 for compilations so some things may work for
me and not for you depending on your kernel and compiler setup
Also you should note that there are (at time of press) 4 tcp patches
available both on tsx-11.mit.edu and sunsite.unc.edu for linux 0.99
i) Introduction
------------
Hello and welcome to the wonderful world of linux network communications.
Networking has always been one of the most exciting things that you can
coax a computer to take advantage of. It allows you to store/retrieve files
from remote machines (some of which are probably located in countries which
you'll never get to visit)
Networking also allows computers to interactively communicate with other
processes or users on these remote machines allowing a new social aspect of
computing to be approached (mainly in the form of talk or MUD (multi User
Dimension) sessions).
Networking also has many stumbling blocks for the administrator to fall
over, most notably the initial setting up of a system network which can
send the most sane person to eating the proverbial hat through the hell of
trying to coax their machines into networking life.
This FAQ is designed to help you start into networking in a positive
direction by leading you simply through the network configuration that best
suits you, whether you are a single machine with no network attachment
(silly I know) or a multi billion credit networking environment of your
country's local stock exchange. Please note that this FAQ does not follow
the 'normal' format of other FAQ's as it's designed to teach you networking
and it's idiosyncacies
ii) What you NEED to get started
----------------------------
To use TCP/IP on local ethernet you will need the following
1) A linux machine with linux kernel 0.98.5 although I'd
recommend going all the way to 0.99 as many tcp/ip errors
have been stomped out (although not all). Users of the
virgin 0.98.6 release will have to apply patches 1-12
available on sunsite.unc.edu:/pub/Linux/system/Networking
2) An ethernet card, now by default the kernel assumes that
you have a WD80[0/1]3 but there are other 'drivers' available
for the following cards :-
wd8013 \
wd8003 >-- These will work by default with the kernel
SMC Elite 16 /
ne2000
ne1000
3com503 EtherlinkII
These are available from super.org:/pub/linux and a bit further
on I'll explain how to incorperate them (although having a
wd8013 I don't have any prectical experiance of it, I'm relying
on postings and email)
3) If you are only going to use 'loopback' mode, you won't need
a card either! A special loopback device is used to comunicate
with yourself
4) Some tcp/ip software eg telnet/ftp/talk/finger/rcp/
rsh/various other stuff like daemons etc...
You can get most if the networking stuff from :-
sunsite.unc.edu:/pub/Linux/system/Networking
OR
tsx-11.mit.edu:/pub/linux/ALPHA/NFS
OR
nic.funet.fi:/pub/OS/Linux/BETA/NFS
Linux 0.99 now comes with nfs as a standard filesystem,
but you will have to recompile or get a new mount command
to use it if 'mount -t nfs csd:/very/private/area /mnt' fails
there should be one already compiled in the nfs-client package
on nic.funet.fi:/pub/OS/Linux/ALPHA/NFS
5) Know the IRQ's of your internal cards. This is to avoid
conflicts and allow the 'drivers' to communicate with your
hardware
6) Also, If you do have ethernet cable, both coax (thin and thick)
as well as twisted pair will work, the cable is only there to
carry signals, your ethernet board works out how and the linux
'drivers' simply stuff data onto the card.
7) A lot of coffee and one of those stress relieving
gadgets you can get in the local market.
iii) Where to start
--------------
First off you'll need to rebuild the kernel with networking compiled into
the linux kernel. You do this by removing the '#'s in linux/net/Makefile
on lines 13,14 and 26 if they haven't already been removed. Next you'll
need to calibrate your network card. Decide what IRQ setting you'll need
for the network card.
Anyway for those who are frexible, the standard kernel parameters
for this are :-
INT = 5
mem = D0000
i/o addr = 280
memory start = D0000
memory end = D2000 ( 8K block for 8003, make it D4000
16k for the wd8013 )
INT = card interupt, usually selectable between 2-7
mem = where in memory to start stuffing data
i/o addr = low level communications to the board
memory start = nearly all boards have a jumper for mem starts
C8000 CC000 CD000 D0000 D2000 D4000 etc
memory end = in the case of the WD8013 this is a 16k buffered
card and will have a memory end at D4000
These can be changed on lines 12-17 (16,17 being the most important) of the
file linux/net/tcp/Space.c
*NOTE* If you have problems with the memory start addr, please get in touch
with bir7@EDU.Stanford.leland
Future versions of the TCP/IP code will be setable at boot time via
ioctl's. For those of you who do not have the wd8013 card, please refer to
the ethernet board documentation on the jumper settings you may have to
changed.
Now as I don't have another network card I am relying on other postings
for information on how to apply the other drivers, here is a better posting
I weeded out of the mailing lists which I feel should help those in need.
I'm sorry that I don't have any experiance of it but thats life. It's
specific to the ne2000 card but should also aply to the 3com and ne1000 cards
****
From: mdw@db.TC.Cornell.EDU (Matt Welsh)
[stuff deleted about getting utils etc]
---- Now, before you build the kernel, you need to install the
NE2000 driver stuff (this doesn't apply if you're not going to use
an NE2000, NE1000, or 3c503 ethernet card). Omit the following steps
if you're just using the wd8003 card (or no card at all).
---- Got the 8390 driver code. This driver runs the ne2000, ne1000, and
3c503 cards. It is in alpha, mail becker@super.org if you are
interested.
Got the files 8390.c, 8390.h, 3c503reg.h, and Space.c, put them all in
/usr/src/linux/net/tcp. Note that this Space.c overwrites your old
one.
---- Edited Space.c to change value of EI8390_IRQ. Also changed the
#ifdef for the WD8003 card to something like
#ifdef I_HAVE_NE2000_INSTEAD
so that the wd8003 driver wouldn't get put in. I hear it causes
problems with the ne2000 if you set them both for IRQ5.
---- Edited /usr/include/linux/config.h and took out
#define CONFIG_DISTRIBUTION
to force use of config.site.h instead.
---- Edited /usr/include/linux/config.site.h and added
#define EI8390 0x300 /* base address */
#define EI8390_IRQ 5 /* irq of card */
#define EI_DEBUG 2 /* debug level */.
---- Edited /usr/src/linux/net/tcp/Makefile and added '8390.o' to OBJS.
---- Edited /usr/etc/inet/rc.net to config "eth_if" instead of "eth0".
*** (Phil: shouldn't be putting it here but it's part of the same message) ***
Now, it's not really that simple. There are numerous caveats. The main
one is: telnet and telnetd don't work. You can probably telnet out to
other machines okay, but telnetd is broken so you can't telnet to your
own machine. The fix? There is a new version of telnet and telnetd, which
are feature-laden and so far have worked great for me. They are in ALPHA,
but supposedly are to be released with a new TCP/IP package soon.
So, if you have problems telnetting into your machine, then you need
the new telnet. You'll know if you telnet to you own machine, it says
"connected to... whatever" and then closes the connection. If you don't
even get a connection, then things aren't set up right.
If you somehow have Pete Chown's new telnet, there are still bugs in telnetd,
which are fixed by an even newer version. All of this is to be released soon
so hold on. If you're really clamoring for a working telnet and telnetd,
talk to me. But the new binaries should be out soon.
NOTE: If you're only configuring for loopback you need to take out
the line in rc.net that runs config on eth0.
NOTE! SLS puts the TCP/IP stuff in /usr/inet instead of the right place
(/usr/etc/inet). If you can't seem to get things to work, make sure these
files are in the right place.
If you have any problems, just mail me (mdw@tc.cornell.edu). I'll be glad
to try and help. I hope I haven't forgotten anything. As long as you
set up everything in the canonical way it should work.
I think this is pretty complete. There are lots of problems, but
GO SLOW, make sure everything's setup right in all of your configuration
files (esp. rc.net, inetd.conf, services, hosts, resolv.conf, and so on).
Take notes while you do all of this stuff. Note anything out of the
ordinary. This will help GREATLY if you have inevitable problems and have
to ask others for help.
Good luck!
mdw
***
Right, compile the kernel (You may need to do a 'make clean dep Image' or
if you have just gone to 0.99, 'touch .config;make config;make dep Image').
and hopefully on the next reboot with the new kernel it should detect your
card telling you of the ethernet number it is, and also that a new family
of sockets (AF_INET) are available.
If your card is incorrectly installed (I know you wouldn't) it could cause
all kinds of errors to be reported. (eg missing jumper settings, thick
ether selected instead of thin, that kind of thing)
At this stage you have a kernel which supports tcp/ip via the ethernet
board in your machine but knows nothing of networking, that is where the
software in the tcpip suites becomes important as it is this software that
understands networking protocols. Linux 0.99 has the Network filing system
included by default (NFS) so you won't have to track down the nfs-server,
nfs-clients on the various ftp sites.
iv) The tcpip-0.8.0/tcpip-0.8.1 suites (the history/differences)
------------------------------------------------------------
History of ethernet on linux (by Ross Biro (member of the League for
------------------------------------------------------------------------
Programming Freedom LPF)) 'cos I am not worthy, I am not worthy, I am...
------------------------------------------------------------------------
In reality, I did almost all the work myself, and all from scratch.
The jump from slow ftp to the pace we have now was really just some minor
patches. This is how it really happened, including why I chose to switch to
Linux in the first place.
Before I came to Stanford, I had already decided Unix was the way
to go and had a 386/20 running Microport Unix. (This was just before
Microport went chapter 11.(an American bankruptcy law). At Stanford I had
the opportunity to connect my machine to the Internet (networks have always
interested me.) Unfortuneately I couldn't get any sort of networking code
for Microport, so instead I bought Esix. Esix had some networking
problems, but it was ok. As of 3.2 rev d it had just learned to talk to
computers off campus. I spent a lot of time porting networking code to
Esix and ran an anon ftp site for it.
Then I heard about Linux 0.10. Since my file system had been
damaged beyond the ability of fsck to do a complete repair (There was a
file in /lost+found with the name " /etc/something" which I couldn't get
rid of. This was a file, not a subidirectory or anything.) I decided to
back up everything, low-level format my drive and make a linux partition.
After repartitioning my hard drive, I discovered my backup tape was
unreadable. At that point I made a decision. Since I was going to have to
start over I decided to start over with linux. I installed version 0.12
and decided to try my hand at kernel hacking. I wrote a buggy version of
ptrace which Linus fixed and included in the kernel (Actually first he
included it, then he fixed it.) By this time I was tired of switching to
DOS everytime I wanted to use telnet or ftp, so I grabbed the 386bsd source
(or is it bsd386) and copied the wd8003 driver. Since It had to be
rewritten to work with Linux and I had no clue what it was doing, I
introduced many bugs, but it worked well enough to telnet and ftp out using
ka9q, so I uploaded it to tsx and posted something to the net.
After a while I decided I wanted real networking code, and after my
experience with Esix bsd compatible sockets were the way to go. About this
time Zorst was just completing the port of X and needed some sort of socket
library. He wrote the Unix domain sockets leaving hooks to included other
types of sockets later. Which made it unnecessary for me to worry about
the kernel/user interface. After serveral hectic months where I moved in
with my SO, lost my internect connection and most of the reason for
writting the networking code, I finally had something that would let me
connect to and from a PC running Clarkson's telnet. I managed to get
minamal versions of ftp and telnet to compile and released the first alpha
version of the networking code. (The code was all written from scrach by
me without looking at the bsd code.) The things like assuming all ethernet
boards are memory mapped was because mine was and I assumed that was the
cheapest/simplest way. The ethernet board is not its own device because
that would have required debugging code that was not completely necessary.
The first message I recieved about the code was how it had caused
the loss of someones hard drive (I've forgotten who, but It was one of the
testers who really deserves mentioning.) After 3 or 4 releases with some
patches posted to the net channel in between, I began to get the first
glimmering of successes from Dirk Hondel (sp?) who was probably the most
important of the testers. He provided a lot of debugging output and
probably risked his file system more than once. About this time Mitch
Dsouza(sp?) began to complain that he couldn't even get the patches to
compile. After a lot of working (and at least another release or 2) it
worked (sort of) on his machine and many others. At this point Bob Harris
started fixing the wd8003 driver (which had suffered from my port from
386bsd). And Russ Nelson at cymwr software began to tell me how other
cards worked, and some of what was wrong with my design. Bob Harris also
wrote an icmp echo routine so you could ping your linux machine.
At this point 0.8.0 was released and I descovered the need for
slow start (remeber, I've never been able to test my code on the internet,
I've always had to leave that to others.) Not too long after that 0.8.1
was released and my advisor discovered I hadn't gone away for the summer.
(Fortuneatly I had been thinking about math enough that he wasn't too upset
with my progress.) 0.8.1 was included in the kernel, but none of the
support code (mostly config.c) went with it. The rest is mostly just bug
fixes and such released with every new version.
(Thank you Ross and a big hand from everybody for his efforts)
***
Now an important hint, the config file from 0.8.0 isn't 'good' so please
recompile the source 'config.c' from the 0.8.1 distribution and you should
find that the protocol not supported message will evapourate.
***
v) The files that you should have and setup info
---------------------------------------------
Ok i'll stop blethering and start talking about hard fact files that you
should have and where they are supposed to be.
The 0.8.0/0.8.1 suites have reasonable enough documentation to get the
various working parts out into somewhere useful on your system, typically
/usr/etc/inet and /etc although there seems to be an increasing ugly
tendency to crowd it all into /etc by simply linking /usr/etc/inet -> /etc
Having followed the net install shell script you'll probably find that it
asked some questions that you hadn't a clue about,... well ok lets look at
it.
Enter IP Address for (your host) (aaa.bbb.ccc.ddd)
Here you are being asked what network address you would like to be known
as. Ip address are unique numbers so as to identify your machine from
another on a multiuser network. Normally if you reside in the Internet you
will have a network address assigned by the NIC or your local network
controller and you really must stick to it since there is no room for you
to bugger up the network by using someone elses ip address. If you do not
have a connection to the Internet, you will have less of a problem although
it would still be a good idea to apply for a internet class c/d network
number depending on your setup.
IP numbers are typically of the 0-255.0-255.0-255.0-255 range so valid
answers are 243.123.4.23 or 192.35.173.3, etc. 324.234.545.2 is
completely wrong.
Enter Net Address for (your hostname) (aaa.bbb.ccc.0)
Here you are being asked for your subnetwork address. This requires a bit
of explaination. Subnets are a "unit" of connectivity which depict how many
possible hosts 'live' on the same piece of cable as you do (typically this
never exceeds 253 on one piece on cable) a quick way of getting the
question right is to type in whatever you have for your ip address but make
the last number 0 eg if my ip address were 135.56.33.155, my 'safe' Net
address would be 135.56.33.0 0.0.0.0 means the whole world and is probably
what slip people should use.
Enter Router Address for (your hostname) (aaa.bbb.ccc.ddd)
Wibble! Ok here what is being asked is if you have a gateway machine
through which IP traffic can be passed to the great blue yonder. We are
sneekily getting the routeing machine to do some hard work for us. Routers
tend to have 2 ethernet boards in them with differing network numbers for
them so that they can 'bridge' between different numbered networks, eg you
could not talk directly to a ip address of 192.35.173.12 from an ip address
of 192.35.175.15 but a machine in the middle with two ip address
192,35.173.4 and 192.35.175.3 can 'collect' the data from the
xxx.xxx.173.xxx network and transfer it to the xxx.xxx.175.xxx network All
we have to do here is stick in the ip address of the local router in this
case it would be 192.35.173.4 (clear as mud I know but it's as good as it
gets) If you don't have a router,... just stick in 0.0.0.0 meaning don't
route anything.
Enter Domain name for (your host)
This isn't too bad, domain names are 'convenient' labels eg uwe.ac.uk is
the domain name that appends to all the machines on site so that a sun
called csd would be known as csd.uwe.ac.uk This is so that you don't have
to know the full ip number of the host, it's more convient to call out a
semi inteligable name eg 192.35.175.1 = csd.uwe.ac.uk but the 192.35.175 is
aliased to uwe.ac.uk (University in the West of England, academic
community, United Kingdom) Again this should be given to you with a
registered ip address but for now you could put in 'at.linux.net' it can be
changed later.
Name Server for Domain (aaa.bbb.ccc.ddd)
If you are networked to the local Uni/technical collage you're in luck and it
should be able to serve you with a name server service, find out from your
local network controller what machine distributes the service. If you are
unlucky enough NOT to have a nameserver, just stick in your own IP address,
you'll just have to run your own nameserver.
Ok time for a quick check of what you *SHOULD* have in /usr/etc/inet
config - This sets up the ethernet ip tables
inetd - Daemon process that invokes other network daemons
inetd.conf - Configuration file for inetd about the other daemons
install.net - The semi automatic script I just talked about
named-xfer - Used for updating the nameserver records
named.reload - used to load in the named
named.restart - user to stop and restart the named process
rc.net - a network rc file called from /etc/rc.local from /etc/rc
services - a file specifying what 'port' numbers certain services are
available on
telnetd - daemon for accpting incoming telnet requests
named - the nameservice daemon
Time for some explainations I think,...
'config' is a general do it all fix your ethernet board to your
local setup command. It was configured when you ran the install.net script
and if you look at the rc.net file you'll see where it plugged in all the
IP stuff that you fed the script with,... a bit technical but otherwise
nothing to worry too much about provide that your original information was
correct. One thing though, I have found that it is best to edit the rc.net
file and 'hard wire' the ip addresses directly in rather than relying on
the grep search from /etc/hosts but you may disagree (personal preferance)
it's the only time that /etc/hosts is actually used as far as I can tell.
*** stop press ***
Ross: That's a bug. It should be used if /usr/etc/inet/resolv.conf is
missing or there is no named running on the machines refered to by
resolv.conf. However, it is low on my list of priorities, and probably
will not be fixed (by me) any time soon.
*** resume press ***
'inetd' is a daemon process that wait's for certain events to happen upon
which it will select which process to run eg if no network communication is
happening, only inetd will be running but if a telnet session is requested
by a remote machine, inetd will start running telnetd for that incoming
call to connect to.
Of much more intrest is 'inetd.conf' which has information about what
services to run and where to find them example
sevice name ip/tcp/udp run as name
| | | |
| format | wait/nowait | program to run |
| | | | | | |
| | | | | | |
telnet stream tcp nowait root /usr/etc/inet/tenetd telnetd
talk dgram udp wait root /usr/etc/inet/talkd talkd
echo dgram tcp nowait root internal
Most utilities will tell you what should be included in here should it
require editing for to make them run.
Now another file that comes to mind at this stage is /etc/protocols or
rather /usr/etc/inet/protocols (I've made the symlink
/etc/protocols -> /usr/etc/inet/protocols)
This file contain's information on what protocol is to be used
when the datagram packet arrives ie how it is to be treated.
/etc/protocols
# protocols - standard well defined IP protocols
ip 0 # internet protcol, pseudo protocol number
icmp 1 # internet control message protocol
igmp 2 # internet group multicast protocol
ggp 3 # gateway -> gateway protocol
tcp 6 # transmission control protocol
egp 8
pup 12 # PARC universal packet protocol
udp 17 # user datagram protocol
idp 22
raw 255 # raw
There are aothers but these are normally never needed.
(NOTE: the /etc/protocols from the 0.8.0 distribution defines ggp to be 2
which isn't the case)
If this file is missing or empty, you will never get any transports (ftp/telnet)
to work and will be told that there isn't any such protocol.
'services' is a file which informs the tcp/ip code what port number a
particular program will run on for example if you telnetted to port 7 on a
sun you would be connected to an echo service which would send back a
carbon copy of what you typed in but that service has a specially allocated
port number referenced in the /etc/services file of both machines
There is a complete standardized services file in circulation from Ross
Biro; it is included here for your sanity:
Ross: This is the one I made from the relevant rfc. It has some typos and
such here, but it is probably ok for most use.
tcpmux 1/tcp # TCP Port Service Multiplexer
rje 5/tcp # remote job entry
echo 7/tcp
echo 7/udp
discard 9/tcp sink null
discard 9/udp sink null
systat 11/udp users
systat 11/tcp users
daytime 13/udp
daytime 13/tcp
daytime 13/udp
netstat 15/udp
netstat 15/tcp
qotd 17/udp quote
quote 17/tcp # quote of the day
chargen 19/tcp ttytst source
chargen 19/udp ttytst source
ftp-data 20/tcp
ftp 21/tcp
telnet 23/tcp
smtp 25/tcp mail #Simple Mail Transfer
nsw-fe 27/tcp # NSW User System FE [24, RHT]
msg-icp 29/tcp # MSG ICP [85, RHT]
msg-auth 31/tcp # msg authentication
dsp 33/tcp # display support protocol
lp 35/tcp # any private printer server [JBP]
time 37/udp timserver
time 37/tcp timerserver # time
rlp 39/udp resource
rlp 39/tcp # resource location protocl
graphics 41/tcp # Graphics
name 42/tcp nameserver
name 42/udp nameserver
whois 43/udp nicname
whois 43/tcp nicname
mpm-flags 44/tcp
mpm 45/tcp
mpm-snd 46/tcp
ni-ftp 47/tcp
log 49/tcp #login host protocol
la-maint 51/tcp # imp local address maintenance
nameserver 53/tcp domain
nameserver 53/udp domain
isi-gl 55/tcp # isi graphics language
apts 57/tcp # private terminal access
apfs 59/tcp # private file services
ni-mail 61/tcp # ni mail [5, SK8]
via-ftp 63/tcp # VIA Systems - ftp
tacacs-ds 65/tcp # tacacs-database service
bootps 67/udp bootp
bootps 67/tcp # bootstrap protocol server
bootpc 68/udp
bootpc 68/tcp # bootstrap client
tftp 69/udp
tftp 69/tcp # trivial file transfer
netrjs-1 71/tcp # remote job service
netrjs-2 72/tcp # " "
netrjs-3 73/tcp # ""
netrjs-4 74/tcp # ""
priv-dial 75/tcp # private dial out services
rje 77/tcp netrjs # any private rje service
finger 79/tcp
hosts2-ns 81/tcp hosts2 # hosts2 name server
mit-ml-dev 83/tcp # MIT ML Device [DPR]
mit-ml-dev 85/tcp # ditto
link 87/tcp ttylink # private terminal link
su-mit-tg 89/tcp # su/mit telnet gateway
mit-dov 91/tcp # mit dover spooler
dcp 93/tcp # device control protocl
supdup 95/tcp # supdup [27, MRC]
swift-rvf 97/tcp # swift remote virtual file protocol
tacnews 98/tcp # tac news
metagram 99/tcp # metagram relay
newacct 100/tcp # unauthorized use
hostnames 101/tcp hostname # nic host name server
iso-tsap 102/tcp tsap # [16, MTR]
x400 103/tcp
x400-snd 104/tcp
csnet-ns 105/tcp # csnet mailbox name nameserver
rtelnet 107/tcp # remote telnet service
pop2 109/tcp pop postoffice# post office protocol version 2
pop3 110/tcp # post office protocol version 3
sunrpc 111/udp
sunrpc 111/tcp # SUN remote procedure call
auth 113/tcp authentication # authentication service
sftp 115/tcp # simple file transfer protocol
uucp-path 117/tcp # uucp path service
nntp 119/tcp # network news transfer protocol
erpc 121/udp
erpc 121/tcp # encore Epedited remote proc. call
ntp 123/udp
ntp 123/tcp # network time protocol
locus-map 125/tcp # locus pc-interface net map server
locus-con 127/tcp # locus PC-interface CONN server
pwdgen 129/tcp # password generator protocol
cisco-fna 130/tcp # cisco FNATIVE [WX8]
cisco-tna 131/tcp # CISCO TNATIVE
cisco-sysmaint 132/tcp # CISCO sysmaint
statsrv 133/udp
statsrv 133/tcp # statistics service
ingres-net 134/tcp # ingres-net
loc-srv 135/tcp # location services
profile 136/udp
profile 136/tcp # profile naming service
netbios-ns 137/tcp # netbios name service [JBP]
netbios-dgm 138/tcp # netbios datagram service
netbios-ssn 139/tcp # netbios session service
emfis-data 140/tcp # emfis Data Service [GB7]
emfis-cntl 141/tcp # emfis control service
bl-dim 142/tcp # britton-lee idm
imap2 143/tcp # interim mail access protocol v2
NeWS 144/tcp news
uaac 145/tcp # uaac protocl [DAG4]
iso-tp0 146/tcp iso-ip0
is0-ip 147/tcp # [MTR]
cronus 148/tcp # [135, JXB]
aed-512 149/tcp # aed 512 emulation service
sql-net 150/tcp
hems 151/tcp
bftp 152/tcp # background file transfer program
sgmp 153/tcp # sgmp
netsc-prod 154/tcp # [SH37]
netsc-dev 155/tcp #
sqlsrv 156/tcp
knet-cmp 157/tcp # knet/vm command message protocol
pcmail-srv 158/tcp # pcmail server
nss-routing 159/tcp
sgmp-traps 160/tcp
snmp 161/udp
snmp 161/tcp
snmp-trap 162/udp
snmptrap 162/tcp
cmip-manage 163/tcp # cmip/tcp manager
cmip-agent 164/tcp
xns-courier 165/tcp # Xerox
s-net 166/tcp # Sirius Systems
namp 167/tcp
rsvd 168/tcp
send 169/tcp
print-srv 170/tcp # network postscript
multiplex 171/tcp # network innovations multiplex
cl/1 172/tcp
xyplex-mux 173/tcp
mailq 174/tcp
vmnet 175/tcp
genrad-mux 176/tcp
xdmcp 177/tcp # X dispaly manager control protocol
nextstep 178/tcp
bgp 179/tcp # Border Gateway Protocol
ris 180/tcp # Intergraph
unify 181/tcp
unisys-cam 182/tcp
ocbinder 183/tcp
ocserver 184/tcp
remote-kis 185/tcp
kis 186/tcp # KIS protocol
aci 187/tcp
mumps 188/tcp
qft 189/tcp # queued file transport [WXS]
gacp 190/tcp # gateway access control protocol
prospero 191/tcp
osu-nms 192/tcp # osu network monitoring protocol
irq 194/tcp # internat relay chat
dn6-nlm-aud 195/tcp # DNSIX Network Level Module Audit
dn6-smm-red 196/tcp
dls 197/tcp
dls-mon 198/tcp
at-rtmp 201/udp
at-rmtp 201/tcp # AppleTalk Routing Maintenance
at-nbp 202/udp
at-nbp 202/tcp # AppleTalk Name Binding
at-3 203/udp
at-3 203/tcp # AppleTalk Unused
at-echo 204/udp
at-echo 204/tcp # appletalk echo
at-5 205/udp
at-5 205/tcp # appletalk Unused
at-zis 206/udp
at-zis 206/tcp # zone info.
at-7 207/udp
at-7 207/tcp
at-8 208/udp
at-8 208/tcp
sur-meas 243/tcp # survey measurment
dsp3270 245/tcp # display systems protocol
link 245/tcp # link
biff 512/udp # used by mail system to notify users
exec 512/tcp
who 513/udp # maintains data bases showing who's
login 513/tcp
syslog 514/udp
cmd 514/tcp
syslog 514/udp
printer 515/tcp # spooler
talk 517/udp
ntalk 518/udp
utime 519/udp unixtime
router 520/udp #local routing process (on site);
efs 520/tcp # extended file name server
timed 525/udp #timeserver
tempo 526/tcp # newdate
courier 530/tcp rpc
conference 531/tcp chat
netnews 532/tcp readnews
netwall 533/udp #for emergency broadcasts
uucp 540/tcp uucpd
klogin 543/tcp
kshell 544/tcp krcmd
new-rwho 550/udp new-who
dsf 555/tcp
remotefs 556/tcp # rfs server
rmonitor 560/udp rmonitord
monitor 561/udp
chshell 562/tcp chcmd
meter 570/tcp demon
meter 571/udp udemon
pcserver 600/tcp # sun IPC server
nqs 607/tcp
mdqs 666/tcp
elcsd 704/udp errlog # copy/server daemon
loadav 750/udp
rfile 750/tcp
pump 751/tcp
qrh 752/tcp
rrh 753/tcp
tell 754/tcp send
nlogin 758/tcp
con 759/tcp
ns 760/tcp
rxe 761/tcp
quotad 762/tcp
cycleserv 763/tcp
omserv 764/tcp
webster 765/tcp
phonebook 767/tcp phone
vid 769/udp
vid 769/tcp
cadlock 770/udp
rtip 771/tcp
cycleserv2 772/tcp
notify 773/udp
submit 773/tcp
acmaint_dbd 774/udp
rpasswd 774/tcp
acmaint_transd 775/udp
entomb 775/tcp
wpages 776/udp
wpages 776/tcp
wpgs 780/tcp
mdbs_daemon 800/tcp
device 801/tcp
maitrd 997/tcp
puparp 998/udp
busboy 998/tcp
puprouter 999/udp applix
garcon 999/tcp
cadlock 1000/udp
blackjack 1025/tcp #network blackjack
hermes 1248/udp
bbn-mmc 1347/tcp #multi-media conferencing
bbn-mmx 1348/tcp # ""
ingreslock 1524/tcp
orasrv 1525/tcp oracle
issd 1600/tcp
nkd 1650/tcp
dc 2001/tcp
wizard 2001/udp curry
globe 2002/udp
emce 2004/udp CCWS mm conf
mailbox 2004/tcp
berknet 2005/tcp
oracle 2005/udp
invokator 2006/tcp
raid-cc 2006/udp raid
dectalk 2007/tcp
raid-am 2007/udp
conf 2008/tcp
terminaldb 2008/udp
news 2009/tcp
whosockami 2009/udp
pipe_server 2010/udp
search 2010/tcp
raid-cc 2011/tcp raid
servserv 2011/udp
raid-ac 2012/udp
ttyinfo 2012/tcp
raid-am 2013/tcp
raid-cd 2013/udp
raid-sf 2014/udp
troff 2014/tcp
cypress 2015/tcp
raid-cs 2015/udp
bootserver 2016/udp
bootclient 2017/udp
cypress-stat 2017/tcp
rellpack 2018/udp
terminaldb 2018/tcp
about 2019/udp
whosockami 2019/tcp
xinupageserver 2020/udp
servexec 2021/tcp
xinuexpansion1 2021/udp
down 2022/tcp
xinuexpansion2 2022/udp
xinuexpansion3 2023/udp
xinuexpansion4 2024/udp
ellpack 2025/tcp
xribs 2025/udp
scrabble 2026/udp
shadowserver 2027/tcp
submitserver 2028/tcp
device2 2030/tcp
blackboard 2032/tcp
glogger 2033/tcp
scoremgr 2034/tcp
imsldoc 2035/tcp
objectmanager 2038/tcp
lam 2040/tcp
interbase 2041/tcp
isis 2042/tcp
isis 2042/udp
isis-bcast 2043/udp
rimsl 2044/tcp
rimsl 2044/udp
cdfunc 2045/udp
sdfunc 2046/udp
dls 2047/tcp
dls 2047/udp
dls-monitor 2048/tcp
shilp 2049/tcp
shilp 2049/udp
NSWS 3049/tcp
rfa 4672/tcp # remote file access server
commplex-main 5000/tcp
commplex-link 5001/tcp
rmonitor_secure 5145/udp
padl2sim 5236/tcp
xdsxdm 6558/udp
man 9535/tcp
isode-dua 17007/udp
vi) Name Service concepts and what /etc/hosts is about
--------------------------------------------------
The internet protocol document defines names, addresses and routes as follows:
A name indicates what we seek.
An address indicates where it is.
A route indicates how to get there.
Every network interface attached to a tcp/ip network is identified by a
unique 32-bit IP address. A name (hostname) can be assigned to any device
that has an IP address. Names are assigned to devices because, compared to
numeric Internet addresses, names are easier to remember and type
correctly. In use, most of the tcp/ip software on linux can interchangeably
use name or ip address but whichever is chosen, it is always the IP address
that is used to make connections. Translating names into addressses isn't
simply a "local" issue. The command 'telnet fred.at.linux.net' is expected to
work correctly on every host that is connected to the network. If the
machine is connected to the Internet, hosts all over the world should be
able to translate the name into a valid IP address, therefore, some
facility must exist on the net to translate the name into the numeric IP
address.
There are two methods for doing this: one involves using a local lookup
table ('/etc/hosts') and the other uses DNS (Domain Name System) to
remotely interrogate the network for the IP address.
'/etc/hosts' is a very simple file which contains a numeric IP address
followed by a hostname eg:
# note that the hash is a comment, no text is processed after
# it until the next
#
123.45.67.20 csd csdsun csd.uwe.ac.uk csdsun.ac.uk
123.45.67.21 manic manic.uwe.ac.uk # Tom's machine
123.45.67.22 chef chef.uwe.ac.uk # Main waste of money
# other nets
192.35.173.1 hal hal-9000 # local hidden host
192.35.173.2 slave slave.uwe.ac.uk # linux engine 485 25
192.35.173.30 zen zen.uwe.ac.uk # Interactive 2.2.1 386 33
192.35.173.35 thing
# external nets
162.34.32.22 weird.emer.cty.oz
Clearly this has a limitation in that on large networks ALL machines would
have to have this information on disk and that could have 1000's of entries
Just think what that means if an extra 120 machines were added! 1000's of
machines would have to have their /etc/hosts table updated either by hand
or automatic shell scripts calling the list from a main machine,... (see
where this is leading?) Enter the DNS service...
DNS scales well. It doesn't rely on a single large table; it is a
distributed database system that doesn't bog down as the database grows.
DNS currently provides information on approximately 700,000 hosts. DNS also
guarentees thst the new host information will be disseminated to the rest
of the network as it is needed.
vii) DNS nameserver configuration files and how to fix them
------------------------------------------------------
DNS configuration reqires that a number of files be edited. In the case of
Linux these files are minimally:
/usr/etc/inet/
resolv.conf
-or-
named.boot
a_hosts_table (normally called named.hosts)
resolve.conf:
domain uwe.ac.uk
nameserver 192.35.173.2
named.boot:
domain uwe.ac.uk
primary uwe.ac.uk /usr/etc/inet/a_hosts_table
a_hosts_table:
@ IN SOA slave.uwe.ac.uk. root (
1.1 ;serial
3600 ;refresh every 10 hours
300 ;retry every 6 minutes
36000000;expire after 1000 hours
3600 ; default ttl is 100 hous )
IN NS slave.uwe.ac.uk.
slave IN A 192.35.173.2
hal IN A 192.35.173.1
zen IN A 192.35.173.30
.
.
.
mother IN A 192.35.173.69
For most people, a nameserver will be available in which case the only file
really needed is resolv.conf which would contain only the domain name of
the site and a nameserver ip address to point to all the named functions
are thus the responsibility of the nameserver and not your machine (crafty
huh?)
Now unfortunately there are those of us that were just plain born unlucky
and had to RTFM so,... where a nameserver is not available it is possible
to run a nameserver service on your local machine.
The following is a list of files that you will eventually need although
just named.boot and a_hosts_table will suffice
named.boot: Sets general named parameters and points to the
sources of the domain database information used
by this server. The sources can be local disks or
remote servers.
named.ca: Points to the root domain servers
named.local: Used to locally resolve the loopback address
named.hosts: The zone info file that maps host names to IP addresses
named.rev: the zone file for the reverse domain that maps IP
addresses to host names (you'll prob never touch it
so i'm going to skip it's description unless people
get upset enough to lynch me)
*** STOP PRESS ***
I've just found out from Ross by sheer accident that there is a program
released in comp.sources.unix (volume25) called hostcvt (mutter mutter)
which is supposidly capable of converting /etc/host entries into the
nesessary corrisponding named files. I just pulled it down and it looks
quite good although 'out of the box' you'll have to #define R_OK 4 in
main.c and fix the bindir/mandir in the makefile. I've NOT run it cos I did
all my configuration by hand so I'm too stubborn to let a mere machine do
the job I did over 2 days in 5 seconds. (ah that pride of mine). I know
that there have been two patches but I only added patch-1 fo it 'cos it's a
hassle for me to get to the internet (me being on x25 protocol based JANET).
As /etc/hosts file's are amazingly easy to generate this is a handy tool to
have and I hope to see it included in the next tcp/ip util kit-bag.
(Actually, I see it's now on sunsite in /pub/Linux/system/Networking as a
binary probably with the second patch applied, I suggest that you read the
manual entries for it)
*** RESUME PRESS ***
named.boot
----------
The 'named.boot' file points to sources of DNS information. Some of these
sources are local files; others are remote servers. You only need to create
the files referenced in the primary and the cache statements.
commands | functions
----------------+--------------------------------------------------------------
directory | Defines a directory for all subsequent file referances
primary | Declares this server as primary for the specified zone
secondary | Declares this server as secondary for the specified zone
cache | Points to the cache file
forwarders | Lists servers to which queries are forwarded
slave | Forces the server to only use the Forwarders
----------------^--------------------------------------------------------------
example setups
named.boot:
; cache only server
;
primary 0.0.127.IN-ADDR.ARPA /usr/etc/inet/named.local
cache . /usr/etc/inet/named.ca
The loopback domain is an in-addr.arpa domain that maps the address
127.0.0.1 to the name localhost. The idea of resolving your own loopback
address makes sense to most people, so most named.boot files contain this
entry.
named.boot:
; Primary name server boot
;
directory /usr/etc/inet
primary big.cty.com named.hosts
primary 54.152.IN-ADDR.ARPA named.rev
primary 0.0.127.IN-ADDR-ARPA named.local
cache . named.ca
The directory statement tells named that all subsequent filenames are
relative to the /usr/etc/inet directory. The first primary statement
declares that this is the primary server for the big.cty.com domain and
that the data for that domain is loaded from the file named.hosts. The
second primary statement points to the file that maps IP addresses from
152.54.xxx.xxx to hostnames. This statement says that the local server is
the primary server for the reverse domain 54.152.in-addr.arpa and that the
data for the domain can be loaded from the file named.rev
Standard Resource Records
-------------------------
Resource Record Record type function
-----------------------------------------------------------------------------
Start of authority SOA Mark the beginning of a zone's data,
and define parameters that affect the
entire zone
Name server NS Identifies a domain's name server
Address A Converts a host name to an address
Pointer PT Converts an address to a hostname
Mail Exchange MX Identifies where to deliver mail for a
given domain name
Canonical name CNAME Defines an alias host name
Host information HINFO describes a hosts hardware and OS
Well Known Service WKS Advertises network services
------------------------------------------------------------------------------
These resourse records are defined in RFC 1033.
The format of DNS resourse records is:
[name] [ttl] IN type data
name: This is the name of the domain object the resource record
references. It can be an individual host or an entire domain
ttl: time-to-live defines the length of time in seconds that the
information in this resource record should be kept in the
cache. Usually this field is left blank and the default ttl
set in the SOA is used.
IN: Identifies the record as an internet DNS resource record. There
are other classes of records, but they are not used by the DNS
type: Identifies what kind of resourse record this is
data: the information specific to this type of resourse record
The cache Initialization file
-----------------------------
The basic 'named.ca' file contains "NS" records that name the root servers
and "A" records tha provide the addresses of the root servers. A basic
'named.ca' is shown here
named.ca:
; named.ca - typical setup
;
; Servers for the root domain
;
99999999 IN NS tsx-11.mit.edu.
99999999 IN NS nic.funet.fi.
;
; Root servers by addresses
;
tsx-11.mit.edu. 99999999 IN A 231.232.21.12
nic.funet.fi. 99999999 IN A 123.45.67.32
Note that the ttl is 99999999 the largest possible size so that the root
servers are never removed from the cache.
The 'named.local' file
----------------------
The 'named.local' file is used to convert the address 127.0.0.1 (the
loopback address) into the name localhost. It's the zone file for the
reverse domain 0.0.127.in-addr.arpa. Because ALL systems use 127.0.0.1 as
the loopback address, this file is virtually identical on every server.
named.local:
@ IN SOA slave.uwe.ac.uk. root. (
1 ; serial number
36000 ; refresh every 10 hrs
3600 ; retry after 1 hr
3600000 ; expire after 1000 hrs
36000 ; default ttl is 10 hrs
)
IN NS slave.uwe.ac.uk.
1 IN PTR localhost.
The 'named.hosts' file
----------------------
The 'named.hosts' file contains most of the domain information. This file
converts host names to IP addresses, so "A" records predominate, but it
also contains "MX", "CNAME" and other records.
named.hosts:
; named.hosts file example
;
@ IN SOA slave.uwe.ac.uk. probs (
1 ; serial
36000 ; refresh every X seconds
3600 ; retry every X seconds
3600000 ; expire after X seconds
36000 ; default time to live X seconds
)
; define nameservers and mailservers
IN NS slave.uwe.ac.uk.
IN MX csd.uwe.ac.uk.
;
; define localhost
;
localhost IN A 127.0.0.1
;
;hosts in this zone
;
loghost IN A 192.35.173.1
hal IN A 192.35.173.1
zen IN A 192.35.173.30
thing IN A 192.35.173.35
slave IN A 192.35.173.2
IN MX 2 192.35.173.2
servant IN CNAME slave.uwe.ac.uk.
mother IN A 192.35.173.69
;
; outside domains now follow
;
csd IN A 192.35.175.1
IN MX 5 192.35.175.1
csdsun IN CNAME csd.uwe.ac.uk.
chef IN A 192.35.176.1
;
;fictional outside gateway
midway IN A 166.23.44.2
;
; etc until you have built a reasonable host table
; that you feel will be adaquate for your network
vii) NFS - the network filing system
-------------------------------
Network filing systems are convenient mechinisms which allow your machine
axcess to more disk space that it actually has by 'borrowing' disk space
from another networked machine for either sharing of common data or if
allowed, the storing of data generated by your machine.
NFS is still in alpha testing and has the unfortunate handicap of not being
able to run binaries over the interface (due to mmap support not being
available at the moment) but shell scripts can be run.
NFS has several benifits:
1) it reduces local disk storage requirements because
a network can store a single copy of a directory, while
the directory continues to be fully axcessible to everyone
on the network.
2) NFS simplifies central support tasks, becaue files can be
updated centrally, yet be available throughout the network
3) NFS allows users to use familiar UNiX commands to manipulate
files with rather than learning new ones. There is no need
to use rcp/tftp/ftp to copy files, just 'cp' will do
NOTE: the current NFS software isn't able to run binaries (shell scripts yes)
due to bmap() support in the kernel being 'omitted' (ahem). In the next few
weeks we would hope to see this rectified. Linux now has the following
filesystems available for it : minix, extfs, msdos, proc, isofs, ifs(alpha)
with a view to a compressed filesystem being worked on (zfs?) all are perfectly
transparent to each other although filename tructation may occur. The reason
that I mention this is that NFS will allow you filename lengths supported by
the type of filesystem you mount eg the HP9000 here supports 15 cha filenames
on an NFS mount as does it's MAG-OPT drive whereas the sun4's offer unlimited(?)
filename length on their NFS exports.
NFS is controlled by several files:
/etc/exports
/usr/etc/inet/rc.net
The '/etc/exports' file
-----------------------
'/etc/exports' allows your machine to decide what local filesystems it will
allow remote clients to NFS mount and decide what access those clients
should have to your filespace.
Example (I just love examples):
/ -access=slave:moonbeam
/usr -ro
/home -root=slave:csdsun,-access=slave,csdsun
--------v----------------------------------------------------------------------
flag | function
--------+----------------------------------------------------------------------
ro | read only, if this is not specified, the directory is mounted
| as read/write.
rw | read and write, used to explicitly show that the FS is read
| and write
root | normally root cannot use root privillages on an NFS FS as that
| id is untrusted, i.e. you would not be able to make a root owned
| shell. Unless the root option is used, a UID of 0 translates
| to 65536
access | list of hosts who may mount the specified filesystem
--------^----------------------------------------------------------------------
There are other options but these are covered in the README for the NFS kit
the above are the simplest.
The /usr/etc/inet/rc.net file
-----------------------------
The file 'rc.net' is used to start the named services and nfs the suggested
setup is as follows:
.
.
.
if [ -f /etc/portmap ]
then
echo "Starting portmapper..."
/etc/portmap
echo "Starting nfsd..."
/etc/nfsd
echo "Starting mountd...."
/etc/mountd
echo
mount -vt nfs fish:/pub /pub &
mount -vt nfs sparky:/mnt/a /test &
fi
Here if the portmapper isn't running it is started. Once started, it is now
possible to hang the nfsd daemon as well as the mountd daemon on it. The
two mount commands are from the modified mount command that come with the
NFS package and both are run in the background so that if one of the
servers were unreachable the system would continue to try while going on to
finish the system setup and allow root/users to login. The '-vt nfs' bit
isn't nessessary as the mount program understands the nfs syntax and mounts
it as an nfs system but I include it anyway.
(viii) '...And on the 6th day she said, "let there be connectivity"...'
----------------------------------------------------------------
All this is well and fine but shows nothing of how to use the various utilities
commonly taken for granted in networking. ie telnet & ftp and X11
Nornally people would telnet over a LAN (Large area network) to a
remote site simply to play a mud (multi user dungeon) which runs on a socket
say port number 4000 so the command 'telnet wopr.magic.mount.mil 4000'
would connect to a service offered by that machine on port 4000. Now then,
sockets are most easily perceived as 'openings' in a wall where data may
pass through in a uni/bidirectional fashion, there are any number of ports
available for use and quite a few reserved port sockets can be found in
your /etc/services file. For example by telneting to port 7 of your
target machine you should be able to communicate with the computer by typing in
a few charcters and pressing return. Port 7 is the echo service and any input
you type should be sent back exactly as you sent it. In normal use, however,
telnet connects to port 23 where a login service is provided for interactive
logins to the system.
Ftp allows the user to transfer files frrm the host to the target
machine but requires the user to login as (s)he whold normally. Once logged
in the user can transfer files both into and out of the machine with
simple commands like 'get text.doc' or 'send report.wps'. Ofter ftp is used
in the 'get' mode and when browsing sites it is usefull to know that you can
peek at the contents of a small README file using the command
'get README.requirements /dev/tty' which will transfer the contents of the
file to your tty line (in english: the screen)
If you run X11, you can have even more fun with tcp/ip as you can
'throw' displays across xservers eg 'xterm -display zen:0 &' would start
xterm running on your machine but all graphical input/outpu would be axcessable
only on zen. In this case zen would have to 'trust' your machine for to accept
this which is accomplised using the command 'xhost +hostname'
==============================================================================
Troubleshooting
---------------
One of the most common complaints regards the 'config' command. What isn't
often noted is that this has to be recompiled from the 0.8.1 sources
(available currently as
tsx-11.mit.edu:/pub/linux/ALPHA/tcpip/tcpip-0.8.1.tar.Z).
Another problem that crops up is that some binaries that are distributed
require libc.2.2.2 to be present
Other people think that it's their version of libraries that cause the
problem but can't find the source code for the various utils to recompile.
Well sorry folks you are out of luck, the source code for those utils like
ftpd and inetd are jealously held back because they are buggy and full of
ugly hacks so rather than have the net flooded with complaints, they have
been compiled into binary form and shoved out the door with innocent looks
about them. Of note are inetd and named from the BSD sources, someone needs
to port them as the current ones are erm.. well not really inetd/named. A
new telnetd will probably be available after the kernel pty's are fixed
which looks as though it'll break a lot of ioctl code.
You boot the new kernel and suddenly all hell breaks loose,... you have
printk's telling you about RPC errors, framepacket errors etc,.. it looks
a mess but the kernel keeps working,... I suggest you grab HLU's bootdisk
and edit your rc files again. Your problem here is most likely that you have
accidentally attemped to use a working IP address as your own. If it's a sun's,
you can expect the sun to lose all networking capabillity and not recover
until lots of drastic commands are issued (fastboot won't help the guy either)
I was asked to do this so I wasn't too fussed.
To check that something is working in named when it is run check out
/usr/tmp/named_dumb.db. This is the file that named creates from all your
configuration files. Check it exists, and contains formatted information
similar to your named.hosts file.
If it's zero length then something is wrong with your SOA record heading
(A missing '.' perhaps)
Now then, to give you an Idea of what is possible, I'll describe what
I have setup and working. I have X11(Xfree86-1.2) running,.. In one xterm I
have a dos session going, in another I have a telnet session connected to
a sun (csd), and on that sun, i'm connected to a diku on the linux machine
through 'telnet slave 4000', in yet another xterm I have an ftp session to yet
another sun(chef) pulling CIA 10Megabugger world map onto an NFS mounted disk
on another sun (hal) at a rate of about 35k/s (+/- 15k). I was going to mount
up a swapfile on an NFS disk but decided against it on the grounds of what
might happen if the external machine fell over while I was using that swapfile.
Some relief can be found on the newsgroup/mailing lists but one thing that will
*REALLY* help is this,...
#include
#include
#include
char alpha_test[1..80];
FILE *panic;
if ((kernel == lastest_on_offer) && (tcpip_broke))
{
if (kernel_paniced)
{
fprintf(std_email,"give blurb about kernel\n");
system("nm ~linux/tools/system | grep ");
listen();
}
else
{
fprintf(std_email,"Conditions of error (recreatable)");
listen();
}
}
else
{
system(upgrade);
system(try_again);
exit();
}
(Sorry about that, we had a compitition to find out who could write the whackist
pseudo C code) more simply stated, the error address that is reported by the
kernel can be used with a kernel system file to tell us what function broke
and how far into it it broke.
Several things that can help
1) Upgrade your kernel to the latest one that you can grab
(currently at time of writting 0.98.5). Alternatively
if you are running 0.96.5, all the patches are available
on sunsite.unc.edu:/pub/Linux/system/Network/tcpip, but
as always, think strongly of going to a higher kernel
version.
2) Join the NET mail channel, you can learn an awful lot
from the guys on this channel (like the various new
copyrighted techniques for tearing out your hair)
3) Try and upgrade your C compiler and libraries to at least
version 2.2.2d and if possible, combine it with gcc 2.3.2
although if disk space is low, trash your 2.2.2 version
and install 2.3.2 from nic.funet.fi:/pub/OS/Linux/GCC
4) Binary distributions of various network probrams can be
found on sunsite.unc.edu,.. always read the README files
they are there for a reason! (personal show/contacts/etc..)
nic.funet.fi and txs-11.mit.edu also have good variation
in utilities that you can use. Also don't forget that a lot
of network programs will compile reasonably well although,
be prepared for unexpected weeks of fustration.
5) Depending on your type of problem, contacting the author
of the software or the person who ported the software would
be a better choice.
6) If you are experiencing problems with missing files which are
placed where you think they *should* be, it's always worth
trying the following to find out what files are being used
strings | less
This should show up any hard linked files in the binary.
eg differing versions of telnet will look at /etc/services OR
/usr/etc/inet/services, therefore, it is a good idea to have
a symlink from one to the other eg
ln -s /etc/services /usr/etc/inet/services
7) Complain bitterly to me if I haven't covered your problem
and I'll get it sorted for the next FAQ
Cast of this production
-----------------------
Ross Biro - Without whom all this wouldn't be possible
and who pointed out holes in my documentation.
Also contributed the history of tcp/ip on linux
after he saw my rather perverted view of it.
Mitch DeSouza - Constant alpha tester. Also pointed out mistakes
and made critical and helpfull suggestions (like
getting a spell checker). Also gave me his Tel No.
which I used to annoy him with.
Rick Sladkey - The current Author of the NFS client server code
who with the help of Doug Quale repatched the
kernel to support networking filesystems.
Donald Becker - Author of the drop in drivers for the linux kernel
allowing the following cards to be used,
3com503, 3com503/16, NE2000, NE1000 and even a
3com501 (Donald: 'not recommended').
Matt Welsh - For a quick overview of the process of installing the
atlernative ethernet drivers.
The pioneers - Mentioned in the history of TCP/IP 0.8.[01] by
Ross earlier in this FAQ, these are fearless people
who brazenly marched their filesystems towards
complete oblivion and watched weeks of work
evapourate in milliseconds without a shred of hate
for the OS that they had come to love.
The supporting - You know who you are (probably, depending on how
extras much virtual beer you had last night) for contributing
to the network code with the various bug reports that
inevitably crop up.
Linus Torvalds - The elusive ecentric UNiX kernel coder who probably
burns more CPU time on compiling than anyone else
Here's to a long and healthy kernel development
program and a Nobel equiv award for his efforts.
Myself - The only sad person to take on the FAQ because I was
getting annoyed at the number of 'petty' tcp/ip code
problems being asked on the net. Besides of which I
wanted to give something useful towards Linux which
I've used since 0.10 (does this make me a veteran?)
Phil (The non spell checking insomniacial/palagerist who never learnt
=--= english grammer)
|