Files
oldlinux-files/docs/kgb/bryce2.txt
2024-02-19 00:23:35 -05:00

1191 lines
52 KiB
Plaintext

From: p_copela@csd.uwe.ac.uk (Phil (SysAdmin Parallel Research))
Subject: The EtherNet FAQ - v0.1 (Alpha Test)
Date: 16 Nov 92 01:12:45 GMT
Reply-To: p_copela@csd.bristol-poly.ac.uk
Well if I don't post it now I never will. In future this FAQ will
be posted on the net channel roughly every 1-2 weeks
=======================
The linux ether-NET FAQ
=======================
quick disclaimer: I must appologize for my luck of a spoll checkr
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 Dungeon) sessions.
Networking also has many stumbling blocks for the administrator
to fall over, most notably the initial setting up of a system network
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 to the network configuration
that best suits you, whether you are a single machine with no network
attachment (silly I know) to the multi billion cred networking enviroment
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.4
2) A WD8003/WD8013 compatible MEMORY MAPPED ethernet card
but WD8013 is probably the best to use due to its
electronic reconfiguration rather than jumper settings
although you'll probably need DOS to set it up
You should note that the kernel will always claim to
have found a WD8013. If this bothers you, change the printk
in linux/net/tcp/we.c to reflect your hardware.
*NOTE* no special hardward is needed to communicate with
yourself
Currently I know of three cards that will work (please tell
me if there are more) support for the ne2000 is being
worked on but little has been heard of it's progress
These are the WD8013, WD8003, and the SMC Elite 16.
3) If you are only going to use 'loopback' mode, you probably
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...
5) Know the IRQ's of your internal cards.
6) 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 )
but 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 change.
Right, compile the kernel (You may need to do a 'make clean 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 inserted (I know you wouldn't) it could
cause all kinds of errors to be reported.
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.
iv) The tcpip-0.8.0/tcpip-0.8.1 suites (the history/differances)
------------------------------------------------------------
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 (This was just before Microport
went chapter 11.(an American bankrupcy (sp?) law) Unix. 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 with out
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 it's 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 alot 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 atleast 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
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 you 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 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 but 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
was 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 shoul 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 whith 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 your networked to the local Uni/technical collage your in luck and it
shoul 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 connecting reqesting external sites to your
machine for interactive logins
named - the nameservice daemon
time for some explainations I think,...
config is a general do it all fix your ether 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.
'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 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.
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
and 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 on.a.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
for to translate te 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 to remotely interigate 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 <cr>
#
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
but 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 (Domain Name System) 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 numbet of files be editted
in the case of Linux these files are minimally
(resolv.conf can be optional)
/usr/etc/inet/
resolv.conf
or
named.boot
a_hosts_table (normally called named.hosts)
named.boot: domain uwe.ac.uk
primary uwe.ac.uk /usr/etc/inet/a_hosts_table
resolve.conf: domain uwe.ac.uk
nameserver 192.35.173.2
a_hosts_table: @ IN SOA slave.uwe.ac.uk. root.slave.uwe.ac.uk. (
1.1 ;serial
3600 ;refresh every 10 hours
300 ;retry every 6 minutes
36000000;expire after 1000 hours
3600 ; default dtl 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 flies 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 release in comp.sources.unix (volume25) called hostcvt (mutter mutter)
which is supposidly capable of converting /etc/host entried 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 meer machine do the job I did over 2 day's
in 5 seconds. (ah that pride of mine). I know that there have been two
patchlevels release but I only added patch1 cos it's a hassle for me to get to
the internet (me being on x25 prtocol 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.
*** 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 referanced 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 cashe 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.slave.uwe.ac.uk. (
1 ; serial
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 file example
;
@ IN SOA slave.uwe.ac.uk. probs.slave.uwe.ac.uk. (
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
servent 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
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):
/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, :. 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
========^===============================================================
The /usr/etc/inet/rc.net file
=============================
This rc file 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 on it as well as the mountd daemon.
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.
==============================================================================
Touble shooting
===============
One of the most common complaints requards the config command
what isn't often noted is that this has to be recompiled from the 0.8.1
sources (available currently on tsx-11.mit.edu: as
/pub/linux/ALPHA/tcpip/tcpip-0.8.1.tar.Z). Another problem that crops up is
that some binaries that are distributed requires libc.2.2.2 to be present
(mine I've no idea what version/wher it came from but it's 173060 bytes long if
it helps!)
Other people think that it's their version of libraries that casue 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.
Several things that can help
1) upgrade your kernel to the latest one that you can grab
a copy of (currently at time of writting 0.98.4)
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.2d7
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..)
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) 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 DSouza - 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.
The pioneers - Mentioned in the history of TCP/IP 0.8.[01] by
Ross earlier in this FAQ
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.
Linus Torvolds - 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 vetrian?)
Phil (The non spell checking insomniacial/palagerist who never learnt
=--= english grammer)
p_copela@uk.ac.uwe.csd on JANET in the UK and p_copela@csd.uwe.ac.uk elsewhere
--
===============================================================================
(c) 1992 Philip Copeland - alias 'Bryce' (SysAdmin)
JANET : p_copela@uk.ac.bristol-poly.csd
"... I can resist anything but temptation..."
===============================================================================