home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Freelog Special Edition 1: Linux
/
CD1.iso
/
doc
/
HOWTO
/
mini
/
SLIP-PPP-Emulator
< prev
next >
Wrap
Text File
|
1998-10-14
|
18KB
|
450 lines
SLIP/PPP EMULATOR HOWTO
version 3.0 (updated 8/7/97) by Irish
This document will describe how to get your Linux box to connect to a
generic site via a SLIP/PPP emulator, such as SLiRP or TIA. I take no
responsibility for your use of this information, but corrections are
welcome.
I will not attempt to describe all that can be done over this
connection once established, but I will refer you to other documents
or sites that will contain the relevant information.
That done, let's do it!
_________________________________________________________________
* 1.0 How does an emulator work?
It is important to understand how a SLIP/PPP emulator works in
general, to be aware of its limitations. First, you do not need to
install the emulator on your machine. It runs on your remote host
only. What you need on your machine is the TCP/IP and SLIP or PPP
protocols installed in your kernel (more on that in a bit), and
some clients.
Here's what happens: you send network requests from your machine
to your remote host over the SLIP/PPP link. The emulator grabs
them and sends them out to the Net at large. Then, incoming data
is sent back from the Net to your account on the remote host,
where the emulator grabs it and sends it back over the SLIP/PPP
link to your machine. So, to the Net it appears as if you are
working out of your account on the remote host, but to you it
looks like you are really connected right to the Net.
As you can see, this can confuse stuff that is incoming from the
Net. For example, talk doesn't work via an emulator, because the
incoming talk request tries to start the remote hosts talk daemon,
not yours.
The other big difference between an emulator and real SLIP/PPP is
you are NOT assigned your own IP address; remember, you are only
converting a dialup account to a SLIP/PPP connection.
* 1.1 What is TIA?
The Intenet Adaptor was written by the fine folks at
marketplace.com. They have quit working on it now, and consider it
a 'mature' product. The last version is 2.05; if you are going to
use TIA, please get this version. !NOTE! At last report, only site
licenses are available now.
* 1.2 What is SLiRP? This is a freeware application, covered under
the GNU Public License. It is out of beta, and is real stable. It
sports a few more features than TIA, and is (reportedly) easier on
host resources. Available at fine Linux FTP sites everywhere.
* 1.3 What about Term?
If you don't have root access to your machine for one reason or
another, and you can't persuade someone who does to install SLIP
and dip, then you won't have much choice except to use Term. If
you want to know more about Term, please read the HOWTO on
Sunsite.
* 1.4 What about real SLIP/PPP?
Hey, a lot of places are offering real SLIP/PPP at reasonable
prices for non-dedicated dialup nowadays. If you can afford it, or
feel the need, go for it. The Real Thing is always better than
emulation. However, one of the things an emulator provides is
security; it acts as an impregnable firewall, and with it you are
pretty much as bulletproof as your provider is. You'll pay for it
though, emulation is slower, and does not fully support every
protocol. Still and all, emulation is good enough for most people,
and is a fine way to connect to the Net.
_________________________________________________________________
Enough already! How do I set it up?
Alright hotrod, we're getting there, but first there's some info you
need to get, and a couple of explanations.
First, you need to get the IP address of your provider, if you don't
have it already. You can do this by typing 'who' at a shell prompt
there, or reading their /etc/hosts, or even just asking them. While
your getting that, get the IP address of the POP/SMTP host and the
NNTP server (if you don't know what those are, trust me and ask for
them anyway, you'll need 'em).
Next, let me explain quickly about hostnames and domain names. The
hostname is the first part of a machines name, the domain is the rest
of it. Like this: hostname.domain.name (a four parter would be
hostname.do.main.name). Together, they make a Fully Qualified Domain
Name (FQDN).
The name of your Linux machine is stored in /etc/HOSTNAME, and yes,
you can change it. In fact, please do (if you're using Slackware,
it'll be "darkstar.frop.org" by default). Just edit the /etc/HOSTNAME
file to be whatever you want - remember, if you are using an emulator,
you are essentially invisible to the Net at large, so you can be
creative. However, if you plan to get a real SLIP/PPP connection down
the road sometime, you'll probably want to conform to being a sub-host
of your provider. For example, if your provider is
"info.superhiway.com", the domain is "superhiway.com" and the hostname
is "info". So you could either be "offramp.info.superhiway.com" or
just "offramp.superhiway.com". Either would work, and in either case
your hostname is "offramp".
* 2.0 Preparing your Linux machine
In a nutshell, here's what's required. I'll explain the first
three in detail.
+ -> Compile your kernel to include SLIP and TCP/IP
+ -> Edit some files in /etc
+ -> Install and configure dip
+ -> Install pppd (optional, for PPP only)
You will also need to get an emulator binary appropriate for your
remote host and install it. SLiRP is available at Sunsite and
other fine Linux FTP sites. All of the relevant info for TIA is
available at TIAs home site.
That's it! Let's get started.
* 2.1 Compiling your kernel
If you have never done this, you should. And you should read the
FAQ first, but don't worry, it's easy. If you want, you can e-mail
me and I'll help.
I'll assume that you have here, for the sake of brevity. When you
'make config', look for "Network Devices". Say 'y', of course,
then say 'y' to SLIP, CSLIP, (or PPP) and TCP/IP and 'n' to
everything else, unless you have ethercards or need some other
protocol for something else. _If you don't do this, it won't work!
_Finish compiling and installing the new kernel, then,
* 2.2 Edit some files in /etc
These files will set up your routes to your remote host. /etc is
the directory for system configurations. Replace everything in
double quotes with the appropriate values, naturally (but don't
include the quotes - they are there for reference). There are
three files you need to edit, they are:
+ /etc/hosts:
#The next line is required to be EXACTLY as below.
127.0.0.1 localhost
#Note at the end of the next two entries the hostname is repeated.
#This abbreviation is an alias, and is required for the first entry.
#If you're on a LAN, you'll need to substitute your IP address for
#the first one below.
192.0.2.1 "yourhostname.domain.name yourhostname"
"XXX.XXX.XX.XX" "remotehostname.domain.name remotehostname"
+ /etc/host.conf:
order hosts, bind
multi on
+ /etc/resolv.conf:
domain "yourdomain.name"
#The next line usually uses the same remote IP address that's in /etc/hosts
nameserver "XXX.XXX.XX.XX"
+ To use an NNTPserver, put this line in your
/etc/profile:
export NNTPSERVER="remote.hosts.nntpservername"
* 2.3.1 DIP
DIP (Dialup Internet Protocol) is what you will use to dial up the
remote host, start the emulator, and convert the line to SLIP/PPP.
It comes in the "N" set of Slackware, along with a bunch of
clients and utilities, some of which you may want to install also
=). It is also available at Sunsite in an individual tar file
Once you have it installed, you will need to have a dip script,
Here's a sample, just plug in the appropriate stuff where the
double quotes are (but don't include the quotes, they are there
for reference).
----------CUT HERE--------------------------------
main:
get $local "yourhostname.domain.name"
get $remote "remotehostname.domain.name"
#Your port here
port cua"?"
#Use 115200 for 28.8 modems
speed 57400
reset
#don't use spaces in your AT command string!
init AT "string of commands"
wait OK 5
# This will redial. If it doesn't work, play with the wait time (listen
# to your modem). If it still doesn't work, mail me.
# _See also; the note at the bottom of the script re: error codes._
dial:
dial "phonenumber"
print Dialing...
if $errlvl != 0 goto error
#You may need to change this wait time to suit your modem
wait BUSY 20
if $errlvl == 0 goto dial
login:
print Connected and Logging in...
#This wait and send gets me past my hosts Annex. _Change for your site!_
wait ==> 60
send 4\n
wait ogin: 60
if $errlvl != 0 goto login_error1
send "LOGIN"\n
wait assword: 60
if $errlvl != 0 goto login_error2
send "PASSWORD"\n
loggedin:
wait "SYSTEM PROMPT" 60
if $errlvl != 0 goto shell_error
print Logged in!
send "emulator startup command"\n
wait "emulator startup response" 60
if $errlvl != 0 goto emu_error
#The recommended mtu setting is 1500, but this is faster interactively.
#Ftp may be slower, so adjust to taste.
get $mtu 296
default
done:
print CONNECTED to $remote with address $rmtip
mode CSLIP
goto exit
error:
print Dialing Error
login_error1:
print No Login
login_error2:
print No Password prompt
shell_error:
print No shell prompt
emu_error:
There was a problem starting the emulator
exit:
#This will error out when the -v flag is used, but work when run normally
#(ends dip at a local prompt).
\r
-------------CUT HERE-----------------------------
* 2.3.2 Dip notes Newer versions of dip don't return modem status
codes (BUSY, NO CONNECT, etc.), they use numbers instead. Here's a
table:
+ 0 = OK
+ 1 = CONNECT
+ 2 = ERROR
+ 3 = BUSY
+ 4 = NO CARRIER
This would make your dial section look like this:
dial:
dial "phonenumber"
print Dialing...
if $errlvl != 0 goto error
wait 1 20
if $errlvl != 1 goto dial
Thanks to Lee Olds (lee@eskimo.com) for that bit.
\n = newline, \r = carriage return. You may require one or the
other (or both) in the appropriate places. If the ones provided
don't work, experiment.
A word about the form of the wait and sends. If it isn't clear by
the example, here's what's happening:
wait ogin: 60
(the script will wait for the remote to send 'ogin:' for 60
seconds. When it gets it, the script advances. If it doesn't get
it, it will advance after the timeout of 60 seconds.)
if $errlvl != 0 goto login_error1 (this whole line is optional)
(if the script is advancing because it got what it was waiting for,
this gets skipped. if the script is advancing because it timed out,
o it will go to where you tell it to ('login_error1' in this case)
send "LOGIN"\n
(DIP will send 'LOGIN' and a newline)
You can put in sleep statements if you need to, like this: "sleep
10" This will make the script pause for 10 seconds.
After editing this file, rename it, say, remote.dip and put it in
/root. Then, as root, run 'dip remote'. Use the -v flag the first
time to debug it ('dip -v remote'), this will show you all the
steps dip takes.
Dip will only run as root, but there is a way to make it run from
a user account. For now, if you need this info, ask. I may include
it in this file later if enough people want it.
If dip errors out right away, try removing the comments from the
script.
* 2.4 PPP
The above gets you rolling with CSLIP, which is really fine most
of the time. It truly is easy to get working, since the protocol
is supported at the kernel level - just make sure it's in there
and it works.
However, some of you will want PPP, for what reasons, only you can
say. I'm not going to tell you how to set it up here, there's a
whole other HOWTO written just for that. What I will do is tell
you what the gotchas are when using PPP with an emulator.
First, the latest version of DIP says you can use it to start PPP,
and you can, BUT it only starts the PPP daemon - no flags,
nothing. So if you want to use DIP to start PPP, be sure to put
all of your startup info in the /etc/ppp/options file, or it won't
work.
Speaking of the options file, one of the things that MUST be in
there no matter how you start pppd is this:
'192.0.2.1:XXX.XXX.XX.XX'. What this is is
'localIPaddress:remoteIPaddress'. You need it there because
normally pppd can fill in the blank itself, but fails when
connecting to an emulator.
Be sure to get the latest and greatest pppd package. It seems
there were a few versions recently that had a bit of trouble.
Lastly, unless you have a good reason to use PPP, or just want to
learn how it works, you really don't need it. I have tried them
both, and didn't notice any performance difference with the
standard set of clients. Of course, Your Mileage May Vary. :)
_________________________________________________________________
* 3.0 Now what?
Hey, if all went well, you are now connected to the Net! Try a
'telnet remotehostname' (remember that abbreviation in your hosts
file?). You should get the remotes telnet login prompt. Go on, try
it! You can now telnet/FTP/etc. anywhere on the Net from your
local machine. How? Your machine is using the remote as a
nameserver to resolve addresses (resolv.conf). Experiment, find
out what works and what doesn't.
You will not be able to use services that are not provided already
on your remote host! For example, if your server doesn't allow
telnets, chances are you can't do it either. Why? Because the
emulator is only re-directing what is already available.
* 3.1 Mail
The obvious text based solution is Pine, you can get it from The
University of Washington.
My pick for 'Best Mail Reader, X Based' has to go to XFmail. This
has now gotten out of beta, and rocks. Easy to install; requires
no local mail system be installed (but will work with local
spools) because it has POP built in - no more popclient/fetchpop!
Easy to use; totally customizable from the GUI. Also supports
MIME. Get it from The XFmail Homesite.
* 3.2 News
The text based News Reader SLRN is fairly simple to install and
use. It is a true NNTP newsreader, which means _no local news
transport is required_ to make it work (you don't have install
Cnews or INN). It does require that you have access to an
NNTPserver, naturally, but most ISPs have this. It is text based,
but has color and mouse support, and runs fine in an rxvt window.
The X based News Reader KNews is almost perfect. As with SLRN
above, no local transport is required, but an NNTP server is. It's
at least worth a look.
* 3.3 Mosaic/Netscape
Obviously, you will need to have X running for this to work, but
it's a simple matter of FTPing the binary, unpacking it, and
installing it.
_________________________________________________________________
* 4.0 Misc.
If I've left anything out, or you still have questions, I read my
mail daily. This information gets updated fairly regularly, so
keep checking back every so often (I'll change the version
numbers). Naturally, the more you contribute, the more info will
be included here, so don't hesitate to tell me about whatever you
have to offer.
If you would like some help, or are having trouble with your
setup, I'll help _but you must send me the following info:_ 1. A
copy of your three /etc files. 2. A copy of your script output,
run with the -v flag (_please_ remove your password from this!)
Even if you don't have anything to contribute, but used this info
sucsessfully, PLEASE MAIL ME. I want to know how useful this
really is.
* 4.1 References
Sunsite is the FTP site sunsite.unc.edu, a veritable plethora of
everything Linux, including almost every FAQ, HOWTO, and README
written.
Marketplace.com is the home of TIA, the only place it is
available. I am Irish, irish@eskimo.com, available for comment on
Linux almost everyday, when I'm not petting my cat or hugging my
kid.
This HOWTO is available in the following places:
+ http://www.eskimo.com/~irish
+ ftp://ftp.eskimo.com/u/i/irish
+ ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/mini/TIA