545 lines
14 KiB
Plaintext
545 lines
14 KiB
Plaintext
call-back mini HOWTO
|
||
by Pawel Skonecki, stona@kft.umcs.lublin.pl
|
||
v2.1a, 2001-10-06
|
||
|
||
This document describes how to set up call-back by using the Linux
|
||
system and modem. I would like to thank Anna for her patience.
|
||
______________________________________________________________________
|
||
|
||
Table of Contents
|
||
|
||
|
||
1. Introduction
|
||
|
||
1.1 OPINION
|
||
1.2 PUBLISHING
|
||
|
||
2. Procedure
|
||
|
||
2.1 PART I: Net at home ?
|
||
2.2 PART II: The first steps with modem.
|
||
2.3 PART III Call Linux
|
||
2.4 PART IV Linux calls us
|
||
2.5 PART V Summary
|
||
|
||
|
||
______________________________________________________________________
|
||
|
||
1. Introduction
|
||
|
||
1.1. OPINION
|
||
|
||
I will be waiting for all opinions about this document. I have tried
|
||
to gather information as complete as possible. Tell me when your find
|
||
any mistakes. I'll be grateful to people who will send me any
|
||
suggestions or corrections. Their contributions will make this
|
||
document better. I don't mind answering your questions but I'd rather
|
||
you read the whole article first.
|
||
|
||
1.2. PUBLISHING
|
||
|
||
This document can by published under the conditions of Linux
|
||
Documentation Project. Get in touch with the author if you can't get
|
||
this license. This document is free.
|
||
|
||
|
||
2. Procedure
|
||
|
||
2.1. PART I: Net at home ?
|
||
|
||
Most of us use the Internet in a place of work. However we offen need
|
||
the net at home or outside the place of work. It may be possible that
|
||
the work from home is cheaper then from a company building. I think
|
||
that the best solution is to install call-back software on the Linux
|
||
server. Call-back makes it possible to re-call index number at the
|
||
cost of the company. I'll try to present how it works. An entitled
|
||
person who calls the modem is varied for the first time in Linux
|
||
server. Then on the user's side the "hang up modem" is switched on.
|
||
At the same time Linux calls the user. User is verified again. We have
|
||
connection and the server is charged. The user pays only for the
|
||
initiation of the connection. The double verification and extra
|
||
options in the call-back program unable the unsuitable persons to
|
||
charge our bill. We can restrict the access to the connection only to
|
||
corporation network or the Internet. Call-back is very flexible.
|
||
Below, I'll try to present the configuration of a call-back server on
|
||
Linux system and I'll show you how to set up your computer for re-
|
||
calling the connection. I don't describe configuration of ISDN call-
|
||
back because I don't use ISDN in my connection to the Internet. If
|
||
you set call-back on ISDN send me your configuration. I had some
|
||
problem when I changed my kernel from 2.2.x to 2.4.x. I will describe
|
||
new option for a new kernel. Remember that if you change your kernel
|
||
for high version you will have to change pppd, too. I don't create a
|
||
new section for description of new possibility in kernels 2.4.x but I
|
||
write a new configurations in old section. I would like to apologise
|
||
to people who asked me about options for new kernels. I didn't have
|
||
time to write a new version of HOW-TO. I have changed my job and place
|
||
of liveing. Sorry.
|
||
|
||
|
||
2.2. PART II: The first steps with modem.
|
||
|
||
The administrators prefer different modem but while buying a modem we
|
||
should remember certain guidelines:
|
||
|
||
|
||
<20> If you have USR WinModems see Linmodem-HOWTO.
|
||
|
||
<20> The externale modem is moust flexible you have more place inste
|
||
your computer.
|
||
|
||
<20> The internal modem with ISA slot is better then the are with PCI
|
||
slot (you can use your PCI slot for something different )
|
||
|
||
<20> Don't use Plug modem see Plag-and-Play-HOWTO.
|
||
|
||
|
||
When we have the suitable modem we have to set it up in our system.
|
||
We have to check on which com our modem is. Then we have to make a
|
||
symbolic link to this hardware and /dev/modem. For example, if we have
|
||
the modem for the 2nd com we write:
|
||
|
||
ln -s /dev/cua1 /dev/modem
|
||
|
||
|
||
|
||
We check it
|
||
|
||
|
||
lrwxrwxrwx 1 root uucp 9 Sep 19 19:10 /dev/modem -> /dev/cua1
|
||
|
||
|
||
|
||
If we have the modem on different com we have to remember that
|
||
|
||
|
||
/dev/cua0 is com1
|
||
|
||
/dev/cua1 is com2
|
||
|
||
/dev/cua2 is com3
|
||
|
||
/dev/cua3 is com4
|
||
|
||
|
||
|
||
For new kernels:
|
||
|
||
|
||
|
||
/dev/ttyS0 is com1
|
||
|
||
/dev/ttyS1 is com2
|
||
|
||
/dev/ttyS2 is com3
|
||
|
||
/dev/ttyS3 is com4
|
||
|
||
|
||
|
||
Now, we check our configuration using the program minicom.
|
||
|
||
2.3. PART III Call Linux
|
||
|
||
The first step to make the call-back on Linux accessible is to set up
|
||
a suitable parameters in kernel. Then we check whether our kernel
|
||
serves the protocol ppp. If you don't have ppp in your kernel or in
|
||
module you will have to compile your kernel and add ppp. You will find
|
||
more information in Kernel-HOWTO.In the kernels 2.4.x series you have
|
||
to mark follow options:
|
||
|
||
CONFIG_PPP=m # CONFIG_PPP_MULTILINK is not set CONFIG_PPP_ASYNC=m
|
||
CONFIG_PPP_SYNC_TTY=m CONFIG_PPP_DEFLATE=m CONFIG_PPP_BSDCOMP=m
|
||
|
||
After compilation you have to add some lines for /etc/modules.conf
|
||
|
||
|
||
alias /dev/ppp ppp_generic alias char-major-108
|
||
ppp_generic alias tty-ldisc-3 ppp_async alias tty-ldisc-14
|
||
ppp_synctty alias ppp-compress-21 bsd_comp alias ppp-compress-24
|
||
ppp_deflate alias ppp-compress-26 ppp_deflate
|
||
|
||
You can't forget that you need new pppd demon for kernels 2.4.x (for
|
||
me it was ppp-2.4.0 this ppp has some mistake you have to get latest
|
||
from ftp.samba.org in /pub/ppp ).
|
||
|
||
|
||
OK. We have a good kernel. Now, we have to set up the software to our
|
||
system. The call-back program is a part of mgetty-sendfax and ppp.
|
||
You will find it all in your distribution. Because the call-back
|
||
system has double verification we create a user who will be running
|
||
ppp on the side of server. In /etc/passwd you have new user and you
|
||
have to change their shall.
|
||
|
||
|
||
|
||
pppuser:klkIOM89mn65H:230:PPP Dialin:/home/pppuser:/etc/ppp/ppplogin
|
||
|
||
|
||
|
||
I changed the above line for kernel 2.4.x this line in /etc/passwd (I
|
||
use shadow and you don't see password)
|
||
|
||
|
||
pppuser:x:6778:44:PPP Dialin:/etc/ppp/:/usr/sbin/pppd
|
||
|
||
|
||
|
||
I don't use a special script for the running of pppd but I run it
|
||
directly while login pppuser.
|
||
|
||
Then change the password. We have to add information abut password in
|
||
the file /etc/ppp/pap-secrets (more in man pppd)
|
||
|
||
|
||
|
||
pppuser * password_for_pppuser *
|
||
|
||
|
||
|
||
In the 2.4.x kernels you have to write in /etc/ppp/pap-secrets
|
||
|
||
|
||
|
||
* * "" *
|
||
|
||
|
||
|
||
This user doesn't have a usual shell but a file /etc/ppp/ppplogin. We
|
||
have to make it ourselves. For example vi /etc/ppp/ppplogin and we
|
||
type:
|
||
|
||
|
||
#!/bin/sh
|
||
|
||
exec /usr/sbin/pppd -detach 192.168.1.1:192.168.1.2
|
||
|
||
|
||
|
||
where the address 192.168.1.1 is the address of server with modem and
|
||
the address 192.168.1.2 is the address which we assigned to our modem.
|
||
We set up executable options for this file. Because we will use the
|
||
ppp demon we have to set up the options for this demon. We edit file
|
||
/etc/ppp/options:
|
||
|
||
|
||
|
||
proxyarp
|
||
|
||
lock
|
||
|
||
crtscts
|
||
|
||
modem
|
||
|
||
|
||
|
||
If it's 2.4.x kernel you write in /etc/ppp/options
|
||
|
||
|
||
-detach
|
||
asyncmap 0
|
||
modem
|
||
crtscts
|
||
proxyarp
|
||
lock
|
||
require-pap
|
||
refuse-chap
|
||
ms-dns 192.168.1.1
|
||
usepeerdns
|
||
|
||
|
||
|
||
The last 3rd option is very important. You use only PAP
|
||
authentication ,require-pap. Don't use chap authentication, refuse-
|
||
chap. You can use ms-dns, If you have M$ Windows system clients you
|
||
can send them information about DNS server. If you wont to send IP of
|
||
DNS server for Linux/UNIX machine you use usepeerdns option, more in
|
||
man pppd.
|
||
|
||
Proxyarp is the most important from the above options, because you can
|
||
go to Internet by the modem in the server. The remaining options are
|
||
used to control your modem. You can only work on the server if you
|
||
remove proxyarp option. You have to see PPP-HOWTO and man pppd for
|
||
more information. We will set up our modem now. Our server must be
|
||
ready to receive a connection after start. We edit file /etc/inittab
|
||
and we add it's to modem on the 2en com.
|
||
|
||
|
||
s1:2345:respawn:/sbin/mgetty ttyS1 -D /dev/ttyS1 vt100
|
||
|
||
|
||
or
|
||
|
||
s1:2345:respawn:/sbin/mgetty ttyS1 -s 115200 -D /dev/ttyS1
|
||
|
||
|
||
|
||
For the 1st com line looks as follows:
|
||
|
||
|
||
s0:2345:respawn:/sbin/mgetty ttyS1 -D /dev/ttyS1 vt100
|
||
|
||
|
||
or
|
||
|
||
s0:2345:respawn:/sbin/mgetty ttyS0 -s 115200 -D /dev/ttyS0
|
||
|
||
|
||
We make init q. If we don't have information about any mistakes in
|
||
logs we go to the next step. We come back to directory /etc/ppp and
|
||
create options.ttyS1 (for modem com1 options.ttyS0)
|
||
|
||
|
||
IP_local: IP_remote
|
||
|
||
|
||
|
||
for our net it will be
|
||
|
||
|
||
192.168.1.1:192.168.1.2
|
||
|
||
|
||
|
||
We have done a lot work so far. Now, we check the file
|
||
/etc/mgetty+sendfax/login.config. The most important line is:
|
||
|
||
|
||
/AutoPPP/ - a_ppp /usr/sbin/pppd auth -chap +pap login detach 7 debug
|
||
|
||
|
||
|
||
If you have 2.4.x kernel you have write in this file:
|
||
|
||
/AutoPPP/ - a_ppp /usr/sbin/pppd file /etc/ppp/options
|
||
|
||
|
||
|
||
The remaining lines can be marked #.
|
||
|
||
|
||
We have to set up suid for ppp demon, because pppuser has to run pppd
|
||
and make interface work. I insert have to insert opinion of Bill
|
||
Staehle "NOTE: Some distributions think they know better than you, and
|
||
delete this permission when their 'admin' tool (yast in SuSE,
|
||
linuxconf in many others) is used. Read the documentation of the
|
||
"tool" to see how to stop this crap."
|
||
|
||
|
||
chmod u+s /usr/sbin/pppd
|
||
|
||
|
||
|
||
and its effect is:
|
||
|
||
|
||
-rwsr-xr-x 1 root root 106892 Jan 11 1999 /usr/sbin/pppd
|
||
|
||
|
||
|
||
I think that it is a good idea is to add it to cron becouse I had a
|
||
problem after restart of my server pppd changed preference. It's
|
||
normal situation in. I add opinion of Bill Staehle "COMMENT: This is
|
||
what I was referring to. In Red Hat, look at
|
||
/usr/lib/linuxconf/redhat/perm/ppp (delete or rename the file)."
|
||
|
||
Our server will work as router. We have to enable IP forwarding and we
|
||
add this line for the file /etc/rc.d/rc.local :
|
||
|
||
|
||
echo "1" > /proc/sys/net/ipv4/ip_forward
|
||
|
||
|
||
|
||
If you are RedHat user you can change in /etc/sysconfig/network from
|
||
FORWARD_IPV4=false to FORWARD_IPV4=true.
|
||
|
||
|
||
For verification we call to Linux. We use scripts for it. If we do
|
||
this in MS Windows we mark options "call out a terminal after
|
||
connection". We login as pppuser with its password. I hope that all
|
||
is OK.
|
||
|
||
|
||
2.4. PART IV Linux calls us
|
||
|
||
We can already call our Linux. Now it's time Linux called us. It's not
|
||
very diffucalt. We have to edit only two files. We create a file
|
||
/etc/mgetty+sendfax/callback.conf and we leave it empty.
|
||
|
||
|
||
Then we have to ask our users for their phone number. It's time to
|
||
write the numbers we have connected earlier. In order to do it we edit
|
||
/etc/mgetty+sendfax/login.conf and add line:
|
||
|
||
|
||
call - - /usr/sbin/callback -S 123456
|
||
|
||
|
||
|
||
where call is a pseudo-user needed to initiate the connection. The
|
||
line in the /etc/mgetty+sendfax/login.conf puts in motion the program
|
||
calling the given number (in this case it's 123456). The same
|
||
procedures can be applied to other users. I'll try to explain how it
|
||
works. When we call a server. It asks us to give verification. We
|
||
login as pseudo-user, in this case it calls. The script in our
|
||
computer hangs up the modem. We wait and the connection is cut off.
|
||
The program call-back starts working and recalls us. We verify
|
||
ourselves again as pppuser with password. We combine the connection
|
||
and interface ppp. That's all. The configuration of work-stations is
|
||
very simple. When you have MS Windows, you have to install dial-up for
|
||
your number. In the modem propriety we find "
|
||
propriety--->extended---> extra options" where we write.
|
||
|
||
|
||
&c0s0=1
|
||
|
||
|
||
|
||
We close the window and call. We log in according to the description
|
||
given above. If we want to use Linux, we must refer to the script.
|
||
It's difficult to give only one good script for our Linux. A good
|
||
configuration of ppp in the system is of primary importance. (You can
|
||
call it as pppuser through the scripts first).The scripts below were
|
||
whiten by A. Gozdz. I suggest putting everything to catalogue. It is
|
||
only my suggestion & you don't have to start the scripts here.
|
||
Detailed information cocernig writing scripts on Linux can found in
|
||
PPP-HOWTO.
|
||
|
||
|
||
The configuration file of daemon ppp (an example for modem on com2)
|
||
THESE SCRIPTS WORK GOOD WITH LINUX RED HAT 6.x
|
||
|
||
|
||
<20> /etc/ppp/options
|
||
|
||
|
||
lock
|
||
|
||
defaultroute
|
||
|
||
noipdefault
|
||
|
||
modem
|
||
|
||
115200
|
||
|
||
crtscts
|
||
|
||
debug
|
||
|
||
passive
|
||
|
||
asyncmap 0
|
||
|
||
|
||
|
||
<20> /etc/ppp/pppcallback
|
||
|
||
|
||
|
||
TIMEOUT 5
|
||
|
||
ABORT 'ERROR'
|
||
|
||
ABORT 'BUSY'
|
||
|
||
ABORT 'NO ANSWER'
|
||
|
||
ABORT 'NO DIALTONE'
|
||
|
||
ABORT '\nVOICE\r'
|
||
|
||
ABORT '\nRINGING\r\n\r\nRINGING\r'
|
||
|
||
<20>
|
||
TIMEOUT 40
|
||
|
||
OK ATDT5376443 CONNECT ''
|
||
|
||
ogin:-ogin: ppp-pseudo-user
|
||
|
||
|
||
TIMEOUT 180
|
||
|
||
|
||
CONNECT ''
|
||
|
||
TIMEOUT 20
|
||
|
||
ogin:-ogin: pppuser
|
||
|
||
sword:-sword password_for_ppuser
|
||
|
||
|
||
|
||
<20> /usr/bin/ppp-call
|
||
|
||
|
||
#!/bin/bash
|
||
|
||
teksta="Connection failed"
|
||
|
||
tekstb="Probably, You will be connect"
|
||
|
||
# /sbin/setserial /dev/ttyS1 spd_vhi
|
||
|
||
killall -INT pppd 2>/dev/null
|
||
|
||
rm -f /var/lock/LCK* /var/run/ppp*.pid
|
||
|
||
(/usr/sbin/pppd -detach call ppp_call &) || \
|
||
|
||
(echo $teksta; ls marsss >/dev/null; exit 1)
|
||
|
||
echo $tekstb
|
||
|
||
exit 0
|
||
|
||
|
||
|
||
<20> You can run ppp-call, now. :)
|
||
|
||
|
||
If you have M$ Windows you can use this script for conection. I don't
|
||
test it (I use terminal) you can ask some more Adrian Debkowski
|
||
(adrian@cr-media.pl).
|
||
proc main
|
||
|
||
delay 1
|
||
|
||
waitfor "ogin:"
|
||
|
||
transmit "call^M"
|
||
|
||
waitfor "RING"
|
||
|
||
transmit "ATA^M"
|
||
|
||
waitfor "CONNECT"
|
||
|
||
waitfor "ogin:"
|
||
|
||
transmit "pppuser^M"
|
||
|
||
waitfor "word:"
|
||
|
||
transmit "ppp^M"
|
||
|
||
endproc
|
||
|
||
|
||
|
||
2.5. PART V Summary
|
||
|
||
The Configuration of call-back is not complicated. The most important
|
||
thing is a proper arrangement of ppp server on Linux. I don't know a
|
||
better way of setting up an access - server. The configuration
|
||
presented above is a result of numerous attempts and it can be done in
|
||
a different way. That's way I suggest reading all the documents
|
||
concerning the issue man pppd, NET-HOWTO, PPP-HOWTO,ISP-Setup-RedHat-
|
||
HOWTO,Modem-HOWTO . A special thanks for Bill Staehle.
|
||
|
||
|
||
|