Introduction.
This is the Official Frequently Asked Questions document for TNOS. This
document is designed to aid the TNOS user, and prospective user in
setting up and maintaining a working TNOS system.
The document will take the form of common questions relating to TNOS, complete with answers. The document will cover both the Unix and DOS versions of TNOS. Where specific differences between the versions apply, they will be noted.
This document is prepared using the text editor 'vi', with a liberal helping of cut and paste using the GPM mouse server.
If you find any mistakes with this FAQ or have any suggestions etc, please mail me:- mike@lurpac.lancs.ac.uk
Notes.
In this FAQ I make reference to the TNOS 'home' or TNOS 'root' directory.
These directories are the same and refer to the directory from which the
other TNOS directories are made from. You may also see '..tnos/' and
can take this to mean the same.
Where I make reference to Linux specifics, this may also apply to
other Unix like operating systems as mentioned in question 5 below:-
"What platforms/operating systems has TNOS been successfully compiled/run on?".
*** Please login with '/n
bit back from
the server?
ctlcheck
program
that comes with TNOS actually do ?
Questions and comments relating to hardware issues.
Questions and comments relating to software/operating
system.
'ERROR: Group DGROUP exceeds 64k
limit.'
??
TNOS is a multi-threaded application that contains a complete implementation
of industry standard TCP/IP with drivers, applications, and support for
use in an RF environment, primarily the Amateur Packet Radio environment.
There are two versions, one that runs under MS-DOS/PC-DOS/DR-DOS and any
multi-taskers that support virtual DOS boxes, and the other which runs as
an application under Unix.
TNOS serves as a good dedicated router, firewall, email exchanger, gateway,
etc.
TNOS is derived from KA9Q NOS, and has many of the same roots as JNOS, another
KA9Q derivitive.
Some of the TNOS differences from JNOS:
TNOS is supported by it's author,
Brian A. Lantz/KO4KS, and several Internet mailing lists.
A lot more information on what TNOS is can be found
here.
TNOS can also be obtained from dial up BBS's for those without 'net' access.
The info below is out of date, but may be helpful.
Here is some info from Mike Bilow regarding his BBS:-
A working list, striving to produce a usable
Frequently Asked Questions (FAQ) document.
Varied discussions on TNOS and related topics.
A working list of the TNOS Documentation Project, creating and improving the
documentation of TNOS.
SUBSCRIBE tnos-stuff@ko4ks.ampr.org tnos-topics
UNSUBSCRIBE tnos-stuff@ko4ks.ampr.org tnos-topics
Brian Lantz now has a system in operation where you can register your copy
of TNOS, and receive enhanced support. Here is the information, from Brian.
You DO NOT need to pay anything for your copy of TNOS to use it for
Amateur Radio or educational purposes. TNOS is free for these purposes.
Any usage outside of this requires a commercial license of TNOS. For details
on a commercial license, contact
brian@lantz.com.
Registering TNOS is simply a way of supporting the TNOS project, and it's
author. Registration DOES have it's benefits, though:
To register your copy of TNOS and become a registered user
send via snail mail,
the following info and a voluntary contribution (suggested minimum $25.00,
in US dollars, and yes, some have given more). Upon
receipt of this, you will receive verification via email, be added to the
registered users database and added to the TNOS-SUPPORT mailing list
(which is already in place).
Needed info:
Send to:
Visa and Mastercard not accepted. No CODs. Not available is stores. Good
through this Internet offer only. Limited time, only. First come, first
served......
Now we must add a line to execute the startnos script, this looks like
this:-
The numbers above '234' after 'c7' are the run levels to start TNOS in.
These may vary from system to system. Check the man page for 'init' for
more details. They do however work for Red Hat 2.3.0.
Remember to replace '/tnos' with the root directory of your TNOS
installation.
After a moment you can change to vt7 (press ALT F7) and TNOS should be
running! If you type 'exit' at the 'Net>' prompt it should exit and
restart again.
Occasionaly TNOS may 'lock' up all together,
it does not happen often, but you can bet it will happen just
after you leave on holiday, or for the weekend :-).
Here is a short script that can be run from one of you startup files, I put
the command:-
Below is the nosreset file itself.
Of course that may not be the only way to do it, but it works for me :-).
With the above two scripts I am able to make sure my TNOS system
is up and running all the time without having to keep looking to see if it
has crashed or locked.
As I do not run DOS on my packet PC's here I asked for the information from
a local DOS/NOS user. With DOS it is a case of adding a loop around TNOS, to
make sure that if TNOS crashes and exits it will be restarted again.
However if TNOS locks when it crashes this way of restarting
TNOS will be of no use!
As I do not use TNOS with DOS, I cannot really add much to this.
(The following commands allow you to tailor your users security
level according to their connection method to your BBS)
security amprperms value
security ax25perms value
security nonamprperms value
security tipperms value
security ampronly [on|off]
Sorry, but only Amateur Radio IP stations can be reached from here!
Note. A message is NOT sent to sysop notifying you of the users action
With this set to off they will get a 'Permission denied' message.
Or, if you use the following script, and place it in
Permission denied.
Sorry, g9xxx, but access is denied :-(
Only telnets to ampr.org stations are permitted, and those are denied to
non-ampr telnet sessions.
To check out your security level permissions use the 'SEC' command.
Here is the script:-
The script also does other things!
Note. A message is sent to 'sysop' to notify you of the users actions.
security nonsecureampr < addr >
security encode
security mbsecure [on|off]
security level [levelname pathstring permissions]
Some examples:-
And in your ftpusers file.
From the above examples you can see it is easy to assign an easy to remember
name to a specific security level. Above I have only shown examples which are
useful for 'ftp' type connections, it is however possible to set up any type
of security level and assign it a name, e.g. sysop, sub-sysop,
guest etc. NOTE, you ,must put the hash '#' before the security level.
The "security level" command (without the rest of the parameters)
displays the currently defined security levels.
I should also point out that there is an addition to the
in the
This also works for the the output of the BBS 'ms' command too. But
be warned, if you have had mail in the areas you have excluded above, and
they still show up on the Mail for: line, you will have to do a
If I had the time (or volunteers) to document this stuff, you'd already
have the docs ;-)
My setup has ONE port out, to ONE TNC, that forwards to many BBSs. MOST
of them go out on ONE RF port.
In order to pace the traffic and better use the bandwidth, I place all
those that must travel the same RF path into a subchannel together. Ones
that travel ANOTHER RF path, go into another subchannel.
Then the 'forward subchannel' command allows me to restrict HOW MANY of
these will be active at one time (outgoing), and how many I will reverse
forward to (incoming). When a BBS has been deferred due to a maximum
being reached on a subchannel, a flag is set, and when a forwarding
session completes (making a slot available), the forwarding cycle is
'kicked' again (even if the 'forward timer' hasn't expired), to allow the
subchannel to be 'filled' again.
BUT, no one BBS will get a second turn, until all have had their shot
at it.
On mine, I set a maximum of 1 per subchannel, and this makes them all go
in turn, rather than all at once.
If I had several ports with a single BBS on each, I would probably not
define these BBSs as being on a subchannel; so they would not have any
pacing used.
NOTE: The FBB forwarding (inbound) needs a little attention here, since
it doesn't yet account for subchannels. TNOS Version 2.01 when released
will fix this.
1) DO take your time and explain the situation. DON'T assume that the
reader(s) have your knowledge.
2) DO give as detailed a description as possible, indicating what
actions/commands you used, the order used, the given output (if any), and
the expected results.
3) DON'T send along a copy of your config files unless asked.
4) DO your own investigation.
5) DO use the trace function for the feature you are having a
problem/question with, if there is one available.
6) DO double-check your config files.
7) DON'T present bug reports/questions with an attitude or when angry.
8) DON'T even bother with a report if all you can say is "it don't
work!". If you follow the rest of this list, you will have FAR more to
say about the situation than this.
9) DO indicate the Operating System being used, and the release version
number. These can be found in the first line of output from the Command
Session command 'status'.
10) DO realize that the author of TNOS CANNOT fully test/debug all
portions of a program as vast as TNOS, and that some conditions MAY slip
through the cracks.
11) DO be wise enough to know that everything you can do to help pin down
the circumstances of failure will make it that much easier to fix the
problem.
12) DON'T be afraid to ask questions.
13) DON'T expect that there are answers to all questions.
14) DON'T send bug reports/questions to the author directly, unless he has
asked you to. DO send bug reports/questions to the TNOS-TOPICS mailing list.
15) DON'T send the same question/bug repeatedly.
16) DON'T *even* expect immediate resolution of problems. This support is
free and you get what you pay for, sometimes ;^D
17) DON'T get discouraged if you run into problems. TNOS is very complex,
with scores of complete subsystems. It is easy to enter areas where you
can get lost.
18) DO provide GDB output (if you can) if you are running Unix. A
'backtrace' command's COMPLETE output can make a massive problem
disappear in seconds.
19) DO read the docs before posting. Yep, SOME of the FAQs are there in
the body of the new2tnx.xx files. DO take the time to see if the answer
has already been given to you, before asking for it to be given again.
20) DON'T go out into the rain without your raincoat (I ran out of ones
that pertained to the subject, and thought an even 20 would be nice) ;-)
Example:-
ifconfig 2m linkaddress gb7mbb
Here, users connecting in via ax25 would connect to gb7mbb. and all IP
packets/frames would use gb7mbb-5 as the hardware address.
Since the AREA.SYS is THE file that defines which are public areas, it
MUST (at least) have all of the areas listed in the AREAS file.
1) You may not want to use the in built TNOS ftp server, so you could re-direct
incoming ftp connections to your Unix ftp server, or another machines ftp
server.
Here is how you would start a tcpgate port for a web server running on another
host:
this tells TNOS to route any packets it receives for itself on port 80 to
unixphf.ampr.org on port 80. As it happens unixphf.ampr.org is the kernel
side of my TNOS pty.
Advantages to running tcpgate:-
Here is an excerpt from one of the ever invaluable new2tnx.xx files!
'new2tn2.02' to be precise.
To start the cron process, you do a 'start cron'. This will read the
'spool/crontab' file for cron entries. Each entry is of the form:
min hour day month dayofweek command
The fields 'min', 'hour', 'day', 'month', and 'dayofweek' can be in several
forms. A range of numbers (from 1 to 6) can be specified as '1-6'. A list of
numbers (1, 5 and 9) can be specified as '1,5,9'. Lists and ranges can be
combined, so '1-5,9' is the same as '1,2,3,4,5,9'. Ranges can be followed
with a '/xxx' to specify an increment to use other than 1. For example,
a field of '0-12/2' would be the same as '0,2,4,6,8,10,12'.
Minutes can be 0-59, hours can be 0-23, days can be 1-31, months can be
1-12, and dayofweek can be 0-6 (0=Sun).
Additional, the 'months' and 'dayofweek' fields can be specified using
the first three characters of their names ('Sun', 'Sep', 'Dec', 'Thu',
etc.). These can be combined with ranges and lists, as 'Dec,2-4,July' or
'2-12/2,Jan'.
As with most all of the TNOS config files, comments can be included in the
crontab file, by starting a line with a '#', or by using a blank line.
Example: '0 5 * * * expire now' will run the 'expire now' command at
5:00 a.m. everyday.
The 'cron' Command Session command has several subcommands: 'add', 'delete',
'clear', 'list' and 'load'. You can use the 'load' command to re-load a
crontab on demand when you have made changes or to load an additional
file, if given an optional filename. If none is given, it loads the
'spool/crontab' file. You use the 'add' command to
add individual entries manually. The 'list' command show you what cron
is analyzing. The 'delete' command allows you to remove an entry manually.
The 'clear' removes ALL entries.
Once started, it will do a 'clear', a 'load', and then parse the queued
entries, executing any that meet the criteria. Then the CRON server will
goto sleep for 1 minute, and try again. The time is NOT syncronized to
the first second of each minute, so it could fall anywhere within the
minute, depending on when it was started.
"It will run, but only if you use a stripped down version (less features
compiled in), and have almost NO drivers, etc loaded into memory. TNOS
must exist in conventional memory, and on processors earlier than a 386,
you had no support in the CPU for altering memory maps to maximize the
conventional memory.
I ran TNOS on a 286 for several years, I just needed a good "shoehorn" to
get in what features I needed."
So there you go. Of course the above *only* applies to the DOS version of
TNOS, as Linux needs at least a 80386 or greater processor.
This adds an interface named 'linux' to TNOS, which it 'thinks' is a
SLIP connection at 38400, but is actually a 'pseudo-terminal' link into
the Linux kernel
There ARE a few prerequisites, though...
Edit the make.inc to your needs. Anything that you WOULD change
in the Makefile, instead override it in make.inc by including it
in make.inc.
For example, if you wish to use a different directory for installing
TNOS other than the default of '/nos' (or '\nos' for MSDOS), you
could add a new NOSDIR (and NOSDIRSTR, for MSDOS) line in make.inc.
For example, if you wanted to change the default directory (under
DOS) to '\tnos' add 'NOSDIR=c:\tnos' and 'NOSDIRSTR=c:/tnos'
to the make.inc file.
MSDOS NOTE: Backslashes must be used for NOSDIR and forward slashes
used for NOSDIRSTR.
Please consult the Makefile for what things you COULD change in
make.inc, what values are valid, and what affect certain changes
might have on other items. Consider the Makefile as the reference
for make.inc changes.
All changes/additions to the make.inc file should be made NOW, before
moving to the next step.
NOTE: the 'make' utility MAY be named something different than 'make' on
your system, depending on the compiler, etc. For instance, some DOS users may
need to use Borland's real mode make 'MAKER' and BSD users have GNU's make
named 'gmake'. I can't help you here, it should be named 'make' ;-)
The compiles SHOULD be clear of errors and warnings. UNIX NOTE: If the
SETSTACK default (as set up in the Makefile) is used, there will be ONE
warning in ksubr.c (about variable `stktop'). This warning is harmless, and
will ALWAYS occur if SETSTACK is not being used.
Please note. Brian, ko4ks, shows another similar way of doing this
above. Brian's way is more suited if your TNOS system is to be
connected to a network, other than the Amprnet e.g. the Internet.
The way I detail below
assumes that your machine is stand-alone, and not connected to an
external network (other than the Amprnet).
Ok, now we have configured and setup the Linux IP stack to talk to TNOS
via a pseudo (internal) slip link. We used the device
Ok that should do it, you should now be able to sucessfully communicate
between TNOS and your Linux kernel. Test it by trying a ping or better
still telnet between the two. If it fails make sure you have a kernel with
SLIP compiled in, (check /var/adm/messages or watch your system
bootup messages) also make sure TNOS has SLIP in it and that you have the
speeds set correctly at each end.
For the Unix version only, you can also try sunsite.unc.edu in the /Pub/Linux/Incoming directory.
There is also a mirror site of ftp.lantz.com which you may get
better performance from, Brians net link is 56k frame relay, this is a T1 link.
FTP to ftp.mwmicro.com and look in
/pub/mirrors/tnos/current. You will also find all the other goodies from ftp.lantz.com
mirrored here.
Now available for FReq (1:323/107@fidonet) or download (+1 401 944 8498), at up
to 28800 bps V.34, KO4KS TNOS v2.01:
***** DOS *****
Filename Area Size Date Description
TNOS201.RDM TCP-TNOS 2K 9-24-95* TNOS 950924v2.01: README: Instructions to
assist you in chosing the proper files to
download
TN201EX4.ZIP TCP-TNOS 267K 9-24-95* TNOS 950924v2.01: Same as TN201EX1, with
PPP, & DIALER
TN201EX3.ZIP TCP-TNOS 260K 9-23-95* TNOS 950924v2.01: Same as TN201EX1, with
SLIP, TIPMAIL, DIALER, & XMODEM
TN201EX2.ZIP TCP-TNOS 259K 9-23-95* TNOS 950924v2.01: Assorted TNOS
executables with CONFERENCE BRIDGE
TN201EX1.ZIP TCP-TNOS 263K 9-23-95* TNOS 950924v2.01: Assorted TNOS
executables without CONFERENCE BRIDGE
TNOS201S.ZIP TCP-TNOS 1217K 9-23-95* TNOS 950924v2.01: All TNOS release 2.01
source code
TNOS201B.ZIP TCP-TNOS 228K 9-23-95* TNOS 950924v2.01: All TNOS release 2.01
base files/support executables; has not
changed since release 1.10
***** Linux/Unix *****
TN201DOC.TGZ TCP-UNIX 81K 9-24-95* (Tnos-2.01-doc.tgz) KO4KS TNOS for
Linux/Unix 95-Sep-24, all TNOS release
2.01 docs
TN201EXE.TGZ TCP-UNIX 641K 9-24-95* (Tnos-2.01.tgz) KO4KS TNOS for Linux/Unix
95-Sep-24, all TNOS release 2.01
executables
TN201SRC.TGZ TCP-UNIX 1048K 9-24-95* (Tnos-2.01-src.tgz) KO4KS TNOS for
Linux/Unix 95-Sep-24, all TNOS release
TNOS and lots of other Linux/Dos packet programs etc can also be downloaded
from BayBBS (more useful for those in the UK.) BayBBS is at +44 (0)1524 833222
. It is run by myself Mike Dent- G6PHF and also provides dial in
access for
licensed amateur radio operators to the WW convers and my TNOS system.
Please note, as of 22nd Oct. 1995, BayBBS is off-line at present.
Mailing Lists at lantz.com
There are several mailing lists maintained at lantz.com. All are
available as regular subscriptions or digest subscriptions.
Current TNOS specific mailing lists include:
Other mailing lists may be created later if need develops.
Joining a Mailing List
To join one of these mailing lists, send a mail message to
listserv@lantz.com
and in the data of the message include
a single line "SUBSCRIBE emailaddress group", where "group" is the name of one
of the above groups (minus the '@lantz.com'), and "emailaddress" is an
optional name of a complete email address that you wish the subscription
sent. The "emailaddress" is only necessary if you wish the subscription to
go to an address other than the one you are sending the email from. Example:
Leaving a Mailing List
To leave one of these mailing lists, you use the same method of
sending a mail message to
listserv@lantz.com, but use
"UNSUBSCRIBE emailaddress group". Example:
Sending to the Mailing List
To send mail to the mailing list, use the full address of the list (i.e.
tnos-topics@lantz.com). When replying to email from the mailing list, make
sure that you CC: a copy back to the group, to make the information exchange
complete.Help with the Listserver
For help on the listserver, use a data line of
"HELP".
Differences with Digests
The names of
the digest lists are the same as the regular list name, with "-digest" added
to it (i.e. 'tnos-topics' becomes 'tnos-topics-digest'). All mail submissions
are sent to the NON-digest address, though. Digests are formed at approximately
midnight each day for the mailing lists that have had activity that day.Archives of the Mailing Lists
Archives of the mailing list digests are available via anonymous FTP at
lantz.com in the directory '/digests'.
SPECIAL NOTE:
PLEASE!!! Do NOT subscribe from an ampr.org address UNLESS that
address is either available on the Internet, or that address has a
defined Mail Exchanger that is available on the Internet.
If the mail fails due to an unknown route, you
will be MANUALLY removed from the list. Nothing personal ;-)
Hostname: (of the TNOS system)
Email address: (addr you wish the mailing list sent to)
TNOS Release: (your current release, example 2.02)
Snail mail address: (just in case it's needed)
Brian A. Lantz
6403 N. Paddock Ave.
Tampa, FL 33614
(add USA, of course, if mailing outside the US)
Thanks to EA4ABB, there is a SunOS 4.1 binary of TNOS 2.02 in the
/tnos/current/unix directory on ftp.lantz.com, though at time of writing it is
not confirmed if this works.
To compile for BSD/OS, you should add the following make.inc
to your source directory and compile.
#
# Included makefile for BSD/OS by Dave VK2KFU
#
USEELF =
INSTALL= install -c -g dialer -m 2755
CC = gcc
PATCHES = -DIS_LITTLE_ENDIAN -DUSE_SETSTACK -DBSD_RANDOM -DDUMP_CORE
SETSTACK= setsp.o
ICURSES = -I/usr/local/include/ncurses
OPTIONAL = "-DOPTIONAL="
DEBUG = -g
LOCKDIR = /var/spool/uucp
#
Thanks to Dave Horsfell, vk2kfu@amsat.org for BSD/OS information.
Recent versions of TNOS seem to do this after the TNOS binary is made
..tnos/etc/askhome.dat
. This
file will then be shown to the user before the HOME-BBS> prompt.
Here is a sample askhome.dat
file.
Sorry to have to ask, but this system does not know your HOME BBS!
This information is needed in order to properly send any mail to you from
users of this system.
Your HOME BBS is like your Postal Address. If you have already defined your
HOME BBS on another system, the name of that system is needed.
NOTE: only use a BBS hierarchial address, not a TCP/IP address.
forward fbb-style on
. If you also want
the FBB compressed forwarding then use forward fbb-compression on
. You should also note that the syntax of the forward.bbs
file has changed completely. You can use the cnvfwd program distributed
with
TNOS 2.0+ releases to convert your old pre-2.0 forward.bbs file to the new
format.
mbox tdisc 1800
will disconnect a BBS user if they have
been idle for more than 30 minutes. Also make sure you are using version
1.12 or newer of TNOS, there was a bug with the tdisc timer in earlier
versions.
ax25 mycall
and ax25 user
. Make sure these are set to your callsign, or
at least the callsign you want.
It should also be noted that with TNOS 1.13 you should only need to do
an ax25 user
*if* you want it different from the 'ax25 mycall'.
That bug
is fixed in 1.14 and later.
You should also make sure you are running a the latest version of TNOS.
At the time of writing this I am running 2.10 for Unix, and it seems to
be proving very stable.
*** Please login with '/n
bit back from
the server?
convers header
to on.
Linux.
../tnos/startnos
from the /etc/inittab
file. The
way I do it is to start it in place of one of the VT's (virtual
terminals), I choose the one under function key F7.
Note, this will depend on which style of init your system uses!
If you have a line in
your /etc/inittab
file to start a 'getty' process on this
key, then you must comment it out, just put a '#' sign at the start of the
line, for example:-
#c7:45:respawn:/sbin/agetty 38400 tty7
c7:234:respawn:/tnos/startnos /dev/tty7
Here is a sample of the 'startnos' script incase you did not get it with
your TNOS files (please note, this may be a slightly different startnos
script to the one currently distributed in the TNOS releases):-
##########################################################################
# Sample 'startos' script to keep TNOS running if it should crash. Place
# this script in your TNOS root directory.
##########################################################################
#!/bin/bash
ps -aux | grep " ./tnos" | while read user pid rest
do
kill -STOP ${pid} 2>/dev/null
sleep 2
kill -KILL ${pid} 2>/dev/null
done
/bin/rm /home/g6phf/bin/tnos/spool/mqueue/*.lck 2>/dev/null
/bin/rm -f /home/g6phf/bin/tnos/spool/mail/*.lck 2>/dev/null
cd /home/g6phf/bin/tnos
export TZ=GMT0
export TERM=console
sleep 1
exec ./tnos < $1 > $1 2>&1
##########################################################################
# In this script you must make sure to replace the root directory of your
# TNOS installation. Mine is set to /home/g6phf/bin/tnos.
# This script also does a check to make sure there is not already a TNOS
# running, if so it kills it before it restarts.
# Thanks to Mat, dl1bjl@db0fho.ampr.org.
#
##########################################################################
Ok, once you are satisfied you have the script correct, and have made the
changes to /etc/inittab
then you can go ahead and re-read the
file in. To do this type:-
telinit q
echo "Starting TNOS watchdog."
/home/g6phf/bin/tnos/nosreset &
to start it at the end of my /etc/rc.d/rc.local
file, this will depend on your installation of Linux I guess and of course you
will have to alter the path to your nosreset script above.
############################################################################
# Nosreset script.
############################################################################
#!/bin/bash
# This is the nosreset script that checks that TNOS is still running, and
# if not will kill the process and restart it. NOTE!! this script assumes
# that you have the Linux kernel IP talking to TNOS over a pseudo slip link.
# It also assumes you are running TNOS with the 'startnos' script.
# See another section of this FAQ to connect Linux IP to TNOS.
# Every 5 minutes several pings are sent to your TNOS IP address from your
# Linux IP address. If 0 packets are received it assumes your TNOS has
# locked and will then find the process, stop it and kill it. Then the
# startnos script will restart TNOS.
# A message is then mailed to you to let you know when it was restarted.
#
while test -f /home/g6phf/bin/tnos/nosreset
do
if
ping -q -c 3 g6phf | grep "0 packets received" > /dev/null
then
ps -aux | grep " ./tnos" | while read user pid rest
do
kill -STOP ${pid} 2> /dev/null
sleep 2
kill -KILL ${pid} 2> /dev/null
done
sleep 20
echo "TNOS was restarted by nosreset" | mailx -s "TNOS reset" g6phf
fi
sleep 300
done
##########################################################################
# Thanks again to Mat, dl1bjl@db0fho.ampr.org.
#
##########################################################################
DOS.
# These lines can be put in a batch file maybe called startnos.bat, and
# called from the last line in your autoexec.bat file.
# The sleep program is just a little utility to give you chance to stop
# the loop if you want to come out of TNOS.
#
:loop
n:
cd\
@echo "Control C to abort TNOS load !"
n:\sleep 6
del n:\spool\mqueue\*.lck
del n:\spool\mail\*.lck
n:\tnos\tnos
@echo " Control C to abort TNOS load !"
n:\sleep 6
goto :loop
#
# EOF
Sysops can also use the 'AS ALL' command, which gives the above and all
USER areas, too.....
If the site you are mailing is down stream of a TheNet X1J type node/router,
(or indeed any other router that does not handle SMTP connects) and you have
a IP route set via one of these nodes, then the smtp hopper code will be trying
to deliver your mail to this node!
If this is the case simply turn off the smtp hopper, smtp hopper off.
# TNOS FTPUSERS permissions as of Version 2.10
#
#LABEL DECIMAL HEX DESCRIPTION
#ftp_read 1 0x00000001 (Read files)
#ftp_create 2 0x00000002 (Create new files)
#ftp_write 4 0x00000004 (Overwrite or delete existing files)
#ax25_cmd 8 0x00000008 (AX.25 gateway operation allowed)
#telnet_cmd 16 0x00000010 (Non-ampr Telnet gateway operation allowed)
#netrom_cmd 32 0x00000020 (NET/ROM gateway operation allowed)
#sysop_cmd 64 0x00000040 (Remote sysop access allowed)
#excluded_cmd 128 0x00000080 (This user is banned from the BBS)
# 256 0x00000100 (Used in PPP)
# 512 0x00000200 (Used in PPP)
#no_sendcmd 1024 0x00000400 (Disallow send command)
#no_readcmd 2048 0x00000800 (Disallow read command)
#no_3party 4096 0x00001000 (Disallow third-party mail)
#is_bbs 8192 0x00002000 (This user is a bbs)
#is_expert 16384 0x00004000 (This user is an expert)
#no_convers 32768 0x00008000 (Disallow convers command)
#no_escape 65536 0x00010000 (Default is no escape)
#ampr_telnet 131072 0x00020000 (Ampr Telnet gateway operation allowed)
#no_linkedto 262144 0x00040000 (No '*** LINKED TO' allowed
#no_slip 1048576 0x00100000 (Disallow tipmail exit to IP)
#no_pbbs_mail 2097152 0x00200000 (Disallow PBBS mail addresses)
#no_inet_mail 4194304 0x00400000 (Disallow non-ampr mail addresses)
#no_ampr_mail 8388608 0x00800000 (Disallow ampr mail addresses)
#hold_mail 16777216 0x01000000 (Any mail entered held for sysop review)
#no_http_ip 33554432 0x02000000 (Disallow http PBBS access via IP)
#no_http_ax 67108864 0x04000000 (Disallow http PBBS access via AX25)
You can further configure the security of your TNOS system by using the
security
commands.
This defaults to 0, disabled. When a user logs in anonymously
via telnet, i.e. they do not
have a specific entry in the ftpusers file, then they first get
assigned the value of 'univperm' (assuming it is set), then their permission
will be set to whatever value you have this set to, as long as it is non-zero.
NOTE:- ampr/nonampr is determined by a 44.xx.xx.xx address, NOT by a
.ampr.org hostname.
This defaults to 0, disabled. When a user logs in anonymously
via AX25, i.e. they do not
have a specific entry in the ftpusers file, then they first get
assigned the value of 'univperm' (assuming it is set), then their permission
will be set to whatever value you have this set to, as long as it is non-zero.
This defaults to 0, disabled. When a user logs in anonymously
via a non ampr IP address, i.e. they do not
have a specific entry in the ftpusers file, then they first get
assigned the value of 'univperm' (assuming it is set), then their permission
will be set to whatever value you have this set to, as long as it is non-zero.
NOTE:- ampr/nonampr is determined by a 44.xx.xx.xx address, NOT by a
.ampr.org hostname.
This defaults to 0, disabled. When a user logs in anonymously
via a TIP connection, i.e. they do not
have a specific entry in the ftpusers file, then they first get
assigned the value of 'univperm' (assuming it is set), then their permission
will be set to whatever value you have this set to, as long as it is non-zero.
When set to on and assumiung you do not allow non amprnet telnets (see
ftpusers permissions above), then when a user attempt to telnet to a non 44
address, they will see the following message:-spool/cmds
it will give them some further information:-
~ Denied access
Sorry, ~c, but access is denied :-(
~p 1 0 7 20
~a 2 converse
~c 1 2
~n test2
The Conference Bridge is not available to non-ampr telnet sessions.
~g common
~l test2
~a 2 telnet
~c 1 2
~n test3
Only telnets to ampr.org stations are permitted, and those are denied to
non-ampr telnet sessions.
~g common
~l test3
~a 2 ax25
~c 1 2
~n test4
AX25 connects are not allowed from non-ampr telnet sessions.
~g common
~l test4
~a 2 netrom
~c 1 2
~n test5
NETROM connects are not allowed from non-ampr telnet sessions.
~g common
~l test5
The BBS is secured against any RF access from all anonymous users.
~g common
~l common
To check out your security level perimissions use the 'SEC' command.
Here is what Brian has to say about this one:-
I discovered one remaining security hole that I had, so we have a new
subcommand of the security command, 'security nonsecureampr
This simply encodes the passwords in your ftpusers
file so
that they cannot be determined if somebody was to get hold of or view your
ftpusers file. Please note that if you make an alteration to the ftpusers
file whilst TNOS is running, then you must do a 'security encode' to make the
changes take effect. 'security encode' is also done at TNOS boot time.
MD5 is the encoding method used, for those interested.
This secures your radio ports so that any anonymous user cannot gateway
out on them via AX25 or netrom, this overrides any permissions set for anonymous
users in the 'ftpusers' file. Please note it also overrides any
'security [ampr | non | ax25p | tip] values which are set.
Allows you to set up a name for a security level, that can be used
as a shortcut in the ftpusers files. The
levelname can be anything descriptive. The pathstring is the same
format as the third field of the ftpusers files .
The permissions field is the same format as the fourth field of the
ftpusers files.
# Security level examples for inclusion in autoexec.nos file.
#
# set a security level called 'low' and allow the user(s) with this level
# access only to '/pub/restricted' directory with ftp read permission only.
#
security level low /pub/restricted 1
#
# set a security level called 'medium' and allow user(s) with this level
# of access to the directory '/pub' with ftp read and write permission.
#
security level medium /pub 3
#
# set a security level called 'top' and allow user(s) with this level of
# access to the '/' (root) directory with read/write and overwrite permission!.
#
security level top / 7
##################
# Assign a lowly security level to guest users!
guest * #low
#
# and a slightly higher level to univperm.
univperm * #medium
#
# and a level for our registered/trusted users perhaps?
g0vgs sEcret_PwoRD #top
#
###################
ftpusers
file which
allows you to branch out to another file with further users/permissions in it.
To do this use the line:-
#include filename
ftpusers
file.
Where 'filename' above is the name of your 'sub' ftpusers file. Maybe called
ftpusers-2 or something.
After this additional file has been scanned, and the user lookup was
unsuccessful, control returns to the original 'ftpusers' file.
You can have as many included files as you wish, but
you cannot include a file from within an included file.
pbbs mailfor now
to 'flush' these out.
An example, you should be able to fill in the blanks........
ctlcheck
program
that comes with TNOS actually do ?
ctlcheck
is a diagnostic tool used to display the
raw values of a *.ctl file. It is not normally needed other than for
diagnosing problems when altering code that manipulates *.ctl files.
(GDB is the GNU debugger, used to get better
information from a TNOS crash. You have to have the de-bugging code
compiled into TNOS to use this. Read the GDB man page.- ED)
To overcome this you must set your ifconfig <port> ipcall
and your ifconfig <port> linkaddress
to different
callsigns or more usually different SSID's.
ifconfig 2m ipcall gb7mbb-5
################################################################################
# Startup file for Linux based TNOS, as used at gb7mbb.ampr.org.
# Virtually everything in this file applies to both DOS and Unix
# TNOS installations.
# It is likely that you will have to heavily modify this sample file
# to make it useful for your system. You have been warned!.
# Mike Dent. g6phf. July 1996. For TNOS 2.02pl2.
The AREA file defines which public areas are available to the non-SYSOP
users. The AREAS.SYS file defines ALL of the public areas, even those that
are NOT available to the normal users. Such areas would be areas that you
place outgoing PBBS mail that is to be forwarded, etc.
Where 'interface' is the name of your interface, and 'quality' is the minimum
netrom quality to broadcast nodes at.
INFO server is on port 3598
TUTOR server is on port 3599
NOTE I do not presently do this myself, some people have
had varying degrees of success doing this. FTP uses a control and a data
stream, this may cause problems with tcpgate. Caveat!
2) You may run a MUD (Multi User Dungeon/Domain) as I do, and want to allow
connects to it, using your TNOS ip address. The MUD may run on a different
machine or on the same one.
3) You might like to run a http server (though TNOS has its own built in now)
but allow connects using your TNOS ip address.
start tcpgate 80 unixphf.ampr.org:80
1) All incoming connections that are redirected to a different host via tcpgate,
e.g. MUD, httpd, will use the TNOS ip timers etc, and not the Linux/unix
kernel timers, which are more suited to fast networks such as ethernet,
giving better throughput to these services.
2) The host that you are re-directing to, may be on another network,
e.g. non ampr-net, and you may want to keep this other network seperate/secret
from your TNOS users.
Cron relies on a file to read its schedule of events from, this is the
..tnos/spool/crontab
file. Here is an example of the crontab
file I use at gb7mbb.ampr.org.
#
###############################################################################
# TNOS 2.02 crontab file. This file is spool/crontab .
###############################################################################
# 'here' and 'gone' are for incoming tty sessions and BBS 'o'.
# at 5:30 pm I am here!
30 17 * * * here
#
# and 9:15 pm I am gone!
15 21 * * * gone
#
# do a tcp clean to reset any tcp sockets in FIN WAIT 2 state every 3hrs.
# probably not needed these days, but just for good measure.
00 0-23/3 * * * tcp clean
#
# This is a special for my log renaming program run from crontab. This makes
# sure TNOS starts the logging again after I have moved the original log file.
# Runs each day at midnight.
00 00 * * * log net.log
#
# at 04:00 do a wpages update sorting the wpages files.
00 04 * * * wpages kick
#
# at 05:00 kick out wpages updates to BBS(s) specified in 'wpages destination'
00 05 * * * wpages update now
#
# at 05:30 expire mail areas depending on settings in
# spool/expire.dat and also delete mail marked for deletion.
30 05 * * * expire now
#
# on the 1st of each month, prune the personal mail areas.
00 00 1 * * pbbs prune
#
# save the netrom table at 01:00 each day in spool/netrom.sav
00 01 * * * netrom save
###############################################################################
There are 6 fields to each crontab entry:-
* * *ave the netrom table at 01:00 each day in spool/netrom.sav
00 01 * * * netrom save
###############################################################################
There are 6 fields to each crontab entry:-
* * *une
So this says at midnight, on the 1st of each month, issue the TNOS command
'pbbs prune'
arp dupcall used to allow arp replies broadcast to a 2nd address.
ax25 infocall call for direct incoming connects to the info server.
ax25 mycall the main AX25 callsign of your TNOS system.
ax25 newscall call for direct incoming connects to the news server.
ax25 rosecall an alias, used with Rose, which is commonly used for
the call of the entry Rose switch (a commonly typed call).
The alias '@' gets substituted with this call.
ax25 ttycall call for ax25 ttylink, direct chat/talk session to sysop.
ax25 tutorcall call for direct incoming connects to the tutorial server.
ax25 user call for outbound Command Session ax25 connects.
convers alias alias call for 2nd incoming connects to the conference bridge.
convers mycall call for direct incoming connects to the conference bridge.
forward mycall call used for outbound forwarding sessions.
netrom alias the alias used for the netrom protocol.
pbbs alias alias call for 2nd incoming connects to the PBBS.
Questions and comments relating to hardware issues.
Brian says:-
Questions and comments relating to software/operating system.
'ERROR: Group DGROUP exceeds
64k limit.'
??
Brian says:-Installation of TNOS
There are two releases of TNOS, so choose the proper set of instructions.
MS-DOS Installation
Installation under MS-DOS is very simple, but does require
To install TNOS/Dos:
See these instructions on compiling your own copy of TNOS...
Linux/FreeBSD Installation
Installation under Unix is very simple, but does require
To install TNOS/Linux:
Before connecting TNOS/Linux to a TNC:
You should look in the /etc/rc.d directory and see if you have an rc.serial
file. If you do, examine it, as it MAY need to have some changes made to it
before the serial ports will be ready for use.
To connect TNOS/Linux to the Linux kernel:
attach asy ttypf - slip linux 1024 1024 38400
Either way, you need something like the following example to connect the
TNOS process to the Linux kernel, allowing a non-ampr and an ampr address
for both sides of the link. Of course, you MUST supply your own addresses ;-)
#
# Setup for TNOS/Linux gateway
#
# 44.98.24.1 is the TNOS ampr IP address (ko4ks.ampr.org)
# 163.125.16.254 is the TNOS internet IP address (gw.lantz.com)
# 44.98.24.25 is the linux box's AMPR IP address (linux.ko4ks.ampr.org)
# 163.125.16.1 is the linux box's internet IP address (lantz.com)
echo "" # blank line
echo "Initiating SLIP connection to TNOS/Linux..."
/usr/net/bin/slattach -s 38400 -p slip /dev/ptypf &
sleep 1 # allow time for slattach to catch up
/usr/net/bin/ifconfig sl0 broadcast 44.255.255.255 pointopoint 44.98.24.1 \
mtu 576 44.98.24.25
/usr/net/bin/route add 44.98.24.1 sl0
/usr/net/bin/route add 163.125.16.254 sl0
/usr/net/bin/route add -net 44.0.0.0 netmask 255.0.0.0 gw 44.98.24.1
NOTE: while other values probably CAN be used for MTU in the ifconfig line
here and the 'attach' line in the autoexec.nos file, these are KNOWN to
work.
Setting TNOS/Linux to come up automatically in it's own virtual console:
This example will use the 7th virtual console (tty7), that is selected with
the
ls -la /dev/tty7
You should see something like the following:
crw-rw-rw- 1 root system 4, 7 May 13 20:43 /dev/tty7
If you do, skip the next step....
Also, note that you will need to change the pathlist for the startnos file,
if you do not have '/nos' as your TNOS 'root' directory. If you have the
first style of entry, look at the other entries at the '234' field. Some
use '2345' or other combinations here. Look at the 'getty' line for tty2,
and use the same value as in that entry, to be safe.
Installing the source tree for TNOS/Linux also requires:
Compiling your own TNOS
Building the source tree for TNOS in either DOS or Unix is nearly identical.
DOS:
The actual compile is as easy as 1-2-3.........
Unix:
Can't make it any easier! ;-)
'premake.bat'
(Sets up for proper makefile, and creates dummy make.inc and
ddepend files)
'premake'
(Sets up for proper makefile, and runs build-make.inc)
Other functions may be added to the premake scripts at a later time.
This customization should NOT include editing the Makefile.
Instead, all customizations should be placed in a file
named 'make.inc', which will be included within the Makefile's
processing, and commands in make.inc will be treated the same
as if they were in the Makefile. This way ALL changes specific
to your site are in make.inc, and will not have to be RE-DONE
when you upgrade to later releases of TNOS.
make doeverything
autoexec.nos
file. An example:-
attach asy ttyS0 - ax25 iface 1024 256 9600
You must use the linux device name of the serial port you are attaching.
In the above case 'ttyS0', is your first serial port, COM1 in DOS terms, or
0x3f8. Just put a '-' hyphen after the port, this field is not used. Next
comes the protocol to use, 'ax25'. Then put your interface name, 'iface' in the
above example. Next '1024' is the buffer size, then '256' is the MTU, and
lastly '9600' is the TNC to serial port speed.
If you where using COM2 you would use ttyS1, COM3 is ttyS2 and COM4 is
ttyS3.
########################################################################
# Usually these lines can be put in one of the rc.* files found in #
# the /etc/rc.d directory, at least that is the case for the Slackware #
# Linux distriution. I recommend the file /etc/rc.d/rc.inet1, though #
# rc.local is an alternative. #
# Add these lines to the bottom of the file. #
########################################################################
#
# First we must set up a pseudo slip port at the Linux kernel side to
# talk to linux. If this is your only slip port on your Linux machine
# it will become 'sl0'. If you already have a slip port configured on
# your machine, say to talk to a modem or another pc, then this port
# will become 'sl1'. Your will need to know this for later. We will assume
# that it is your only slip port, 'sl0'.
#
/sbin/slattach -v -s 38400 -p slip ptypf &
#
# OK, that is the port attached, now we must wait a while for it to get a
# hold before we can configure it.
#
/bin/sleep 1
#
# Right that should have done it. We now have a slip port 'sl0' attached
# to the kernel. The -v indicates verbose, so we can see everything is
# ok, the -s is the speed 38400, the -p is the port, ptypf in this case
# and the ampersand is to put the command in the background.
#
# Next we shall configure it and assign it an IP address. You must
# have seperate IP addresses for TNOS and Linux. Make sure you have
# these entries in /etc/hosts also.
#
/sbin/ifconfig sl0 linux.g6phf.ampr.org up
#
# Ok we have now assigned the Linux kernel IP stack with its own
# IP address and set it in an 'up' or working state.
# Next we must add a route to TNOS down the pseudo slip link, 'sl0',
# so the kernel IP knows how to reach it.
#
/sbin/route add g6phf.ampr.org sl0
#
# Right now the kernel IP knows how to reach TNOS, we should tell
# the kernel how to reach the other 44.x.y.z addreses.
#
/sbin/route add 44.0.0.0 gw g6phf.ampr.org sl0
#
# That should do it. We have added a route to all 44 addresses via the
# gateway 'gw' of g6phf.ampr.org (TNOS) down sl0.
# If you wanted to add any other routes to non 44 addresses, you would
# do it in the same way, e.g.
# /sbin/route add 148.88.0.0 gw g6phf.ampr.org sl0
#
# NOTES: If you paste the above file into one of your rc.* files
# remember to change g6phf.ampr.org to your TNOS hostname and
# linux.g6phf.ampr.org to your Linux hostname. These hostnames will
# also need to be in your /etc/hosts file, and your ../tnos/domain.txt.
########################################################################
/dev/ptypf
for the port 'sl0', we shall now use the other end of this slip
link /dev/ttypf
for our interface within TNOS.
Below are the necessary lines for your ../tnos/autoexec.nos file.
#####################################################################
# Lines needed in autoexec.nos file for Linux TNOS this allows TNOS #
# to talk to the Linux IP stack and visa-versa. #
#####################################################################
#
# First we must attach the port. Put this attach line with your other
# attach statements.
#
attach asy ttypf - slip kernel 1024 512 38400
#
# As you can see the format is very similar to your other attach
# statement(s).
/dev/ttypf
is the other end of the pseudo
# slip port from /dev/ptypf
, the Linux kernel end. 'slip'
# is of course the protocol used, 'kernel' is the name of the interface
# I have chosen, you can of course call this 'sl0' or whatever you like.
# 1024 is the buffer size, 512 the MTU of the port and 38400 the speed.
#
# Now we must add a route to the Linux IP stack down out port 'kernel'.
#
route add linux.g6phf.ampr.org kernel
#
# Make sure your hostname and IP address are in your ../tnos/domain.txt
# file. If we want other people to be able to access your Linux IP, be
# it for smtp, ftp or whatever, then it is best if your TNOS will answer
# ARP queries for it. So we need to advertise that fact. We use 'proxy'
# arp to do that.
#
arp publish linux.g6phf.ampr.org ax25 g6phf 2m
#
# In the statement above replace linux.g6phf.ampr.org with the hostname
# or IP address of your Linux kernel, replace g6phf with your ax25
# callsign, and replace '2m' with the interface name of your radio port.
# If you have several radio ports you may need to arp publish your
# Linux address on each port. I have 2 more entries like this:-
# arp publish linux.g6phf.ampr.org ax25 g6phf 4m
# arp publish linux.g6phf.ampr.org ax25 g6phf 70cm
#
########################################################################
NOTE. You will have to reboot your machine for the changes in rc.local
to take effect. I recommend typing them in by hand (logged in as root)
at the Linux prompt first to check you have everything correct.
start time
.