589 lines
27 KiB
Plaintext
589 lines
27 KiB
Plaintext
SLIP/PPP Emulator mini-HOWTO
|
||
|
||
Irish
|
||
|
||
irish@eskimo.com
|
||
|
||
Glen Reesor - Converted document from HTML to DocBook v4.1 (SGML)
|
||
|
||
2001-02-21
|
||
Revision History
|
||
Revision 3.1 21 February 2001 Revised by: GCR
|
||
Revision 3.0 7 August 1997 Revised 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!
|
||
|
||
-----------------------------------------------------------------------------
|
||
Table of Contents
|
||
1. Introduction
|
||
1.1. Copyright Information
|
||
1.2. Disclaimer
|
||
1.3. New Versions
|
||
1.4. Feedback
|
||
|
||
|
||
2. How Does an Emulator Work?
|
||
2.1. What is TIA?
|
||
2.2. What is SLiRP?
|
||
2.3. What about Term?
|
||
2.4. What about real SLIP/PPP?
|
||
|
||
|
||
3. Prerequisites
|
||
4. Preparing your Linux Machine
|
||
4.1. Compiling your Kernel
|
||
4.2. Edit some files in /etc
|
||
4.3. DIP
|
||
4.4. PPP
|
||
|
||
|
||
5. Now What?
|
||
5.1. Mail
|
||
5.2. News
|
||
5.3. Mosaic/Netscape
|
||
|
||
|
||
6. Miscellaneous
|
||
6.1. References
|
||
|
||
|
||
|
||
-----------------------------------------------------------------------------
|
||
1. Introduction
|
||
|
||
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.linuxdoc.org] http://www.linuxdoc.org
|
||
|
||
* [ftp://ftp.eskimo.com/u/i/irish] ftp://ftp.eskimo.com/u/i/irish
|
||
|
||
* [ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/mini/TIA] ftp://
|
||
sunsite.unc.edu/pub/Linux/docs/HOWTO/mini/SLIP-PPP-Emulator
|
||
|
||
|
||
-----------------------------------------------------------------------------
|
||
1.1. Copyright Information
|
||
|
||
This document is copyrighted (c) 2001 Irish and is distributed under the
|
||
terms of the Linux Documentation Project (LDP) license, stated below.
|
||
|
||
Unless otherwise stated, Linux HOWTO documents are copyrighted by their
|
||
respective authors. Linux HOWTO documents may be reproduced and distributed
|
||
in whole or in part, in any medium physical or electronic, as long as this
|
||
copyright notice is retained on all copies. Commercial redistribution is
|
||
allowed and encouraged; however, the author would like to be notified of any
|
||
such distributions.
|
||
|
||
All translations, derivative works, or aggregate works incorporating any
|
||
Linux HOWTO documents must be covered under this copyright notice. That is,
|
||
you may not produce a derivative work from a HOWTO and impose additional
|
||
restrictions on its distribution. Exceptions to these rules may be granted
|
||
under certain conditions; please contact the Linux HOWTO coordinator at the
|
||
address given below.
|
||
|
||
In short, we wish to promote dissemination of this information through as
|
||
many channels as possible. However, we do wish to retain copyright on the
|
||
HOWTO documents, and would like to be notified of any plans to redistribute
|
||
the HOWTOs.
|
||
|
||
If you have any questions, please contact <irish@eskimo.com>
|
||
-----------------------------------------------------------------------------
|
||
|
||
1.2. Disclaimer
|
||
|
||
No liability for the contents of this documents can be accepted. Use the
|
||
concepts, examples and other content at your own risk. As this is a new
|
||
edition of this document, there may be errors and inaccuracies, that may of
|
||
course be damaging to your system. Proceed with caution, and although this is
|
||
highly unlikely, the author(s) do not take any responsibility for that.
|
||
|
||
All copyrights are held by their by their respective owners, unless
|
||
specifically noted otherwise. Use of a term in this document should not be
|
||
regarded as affecting the validity of any trademark or service mark.
|
||
|
||
Naming of particular products or brands should not be seen as endorsements.
|
||
|
||
You are strongly recommended to take a backup of your system before major
|
||
installation and backups at regular intervals.
|
||
-----------------------------------------------------------------------------
|
||
|
||
1.3. New Versions
|
||
|
||
The latest version number of this document can be found at:
|
||
|
||
* [http://www.linuxdoc.org] http://www.linuxdoc.org
|
||
|
||
* [ftp://ftp.eskimo.com/u/i/irish] ftp://ftp.eskimo.com/u/i/irish
|
||
|
||
* [ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/mini/TIA] ftp://
|
||
sunsite.unc.edu/pub/Linux/docs/HOWTO/mini/SLIP-PPP-Emulator
|
||
|
||
|
||
-----------------------------------------------------------------------------
|
||
1.4. Feedback
|
||
|
||
Feedback is most certainly welcome for this document. Without your
|
||
submissions and input, this document wouldn't exist. Please send your
|
||
additions, comments and criticisms to the following email address : <
|
||
irish@eskimo.com>.
|
||
-----------------------------------------------------------------------------
|
||
|
||
2. 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.
|
||
-----------------------------------------------------------------------------
|
||
|
||
2.1. What is TIA?
|
||
|
||
[http://www.marketplace.com/tia/tiahome.html] 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, marketplace.com have gone out of business.
|
||
|
||
-----------------------------------------------------------------------------
|
||
2.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.
|
||
-----------------------------------------------------------------------------
|
||
|
||
2.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.
|
||
-----------------------------------------------------------------------------
|
||
|
||
2.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.
|
||
-----------------------------------------------------------------------------
|
||
|
||
3. Prerequisites
|
||
|
||
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".
|
||
-----------------------------------------------------------------------------
|
||
|
||
4. 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 [ftp://sunsite.unc.edu/pub/Linux/
|
||
index.html] Sunsite and other fine Linux FTP sites. All of the relevant info
|
||
for TIA is available at [http://marketplace.com/tiahome/tia.html] TIAs home
|
||
site.
|
||
|
||
That's it! Let's get started.
|
||
-----------------------------------------------------------------------------
|
||
|
||
4.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,
|
||
-----------------------------------------------------------------------------
|
||
|
||
4.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"
|
||
|
||
|
||
|
||
-----------------------------------------------------------------------------
|
||
4.3. 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 [ftp://
|
||
sunsite.unc.edu/pub/Linux/index.html] 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).
|
||
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
|
||
|
||
|
||
-----------------------------------------------------------------------------
|
||
|
||
4.3.1. 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_error
|
||
(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, 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.
|
||
-----------------------------------------------------------------------------
|
||
|
||
4.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. :)
|
||
-----------------------------------------------------------------------------
|
||
|
||
5. 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.
|
||
-----------------------------------------------------------------------------
|
||
|
||
5.1. Mail
|
||
|
||
The obvious text based solution is Pine, you can get it from [ftp://
|
||
ftp.cac.washington.edu] 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 [http://burka.netvision.net.il/xfmail/
|
||
xfmail.html] The XFmail Homesite.
|
||
-----------------------------------------------------------------------------
|
||
|
||
5.2. News
|
||
|
||
The text based News Reader [ftp://space.mit.edu/pub/davis/slrn] 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 [http://www.matematik.su.se/~kjj/] 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.
|
||
-----------------------------------------------------------------------------
|
||
|
||
5.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.
|
||
-----------------------------------------------------------------------------
|
||
|
||
6. Miscellaneous
|
||
|
||
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.
|
||
-----------------------------------------------------------------------------
|
||
|
||
6.1. References
|
||
|
||
Sunsite is the FTP site [ftp://sunsite.unc.edu/pub/Linux/index.html]
|
||
sunsite.unc.edu, a veritable plethora of everything Linux, including almost
|
||
every FAQ, HOWTO, and README written.
|
||
|
||
[http://marketplace.com/] Marketplace.com is the home of TIA, the only place
|
||
it is available.
|
||
|
||
|
||
Note: Marketplace.com appears to be out of business.
|
||
|
||
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.linuxdoc.org] http://www.linuxdoc.org
|
||
|
||
* [ftp://ftp.eskimo.com/u/i/irish] ftp://ftp.eskimo.com/u/i/irish
|
||
|
||
* [ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/mini/TIA] ftp://
|
||
sunsite.unc.edu/pub/Linux/docs/HOWTO/mini/SLIP-PPP-Emulator
|
||
|
||
|