我们大多数人在工作场所使用互联网。然而,我们经常需要在家里或工作场所以外的地方上网。在家工作可能比在公司大楼工作更便宜。我认为最好的解决方案是在 Linux 服务器上安装回拨软件。回拨使得以公司成本重新呼叫索引号成为可能。我将尝试介绍它是如何工作的。首次在 Linux 服务器中对呼叫调制解调器的授权人员进行验证。然后在用户端,打开“挂断调制解调器”。与此同时,Linux 呼叫用户。再次验证用户。我们建立了连接,费用由服务器承担。用户仅支付连接的启动费用。双重验证和回拨程序中的额外选项使不合适的人员无法为我们的账单收费。我们可以将连接访问限制为仅公司网络或互联网。回拨非常灵活。下面,我将尝试介绍在 Linux 系统上配置回拨服务器,并向您展示如何设置您的计算机以重新呼叫连接。我不描述 ISDN 回拨的配置,因为我在连接到互联网时没有使用 ISDN。如果您在 ISDN 上设置了回拨,请将您的配置发送给我。当我将内核从 2.2.x 更改为 2.4.x 时遇到了一些问题。我将描述新内核的新选项。请记住,如果您将内核更改为更高版本,您也必须更改 pppd。我没有为内核 2.4.x 中的新可能性创建新章节,而是在旧章节中编写了新配置。对于那些询问我关于新内核选项的人们,我想表示歉意。我没有时间编写新版本的 HOW-TO。我换了工作和居住地。抱歉。
管理员更喜欢不同的调制解调器,但在购买调制解调器时,我们应该记住某些准则
当我们拥有合适的调制解调器时,我们必须在我们的系统中设置它。我们必须检查我们的调制解调器在哪个 com 口。然后我们必须为此硬件和 /dev/modem 创建一个符号链接。例如,如果我们的调制解调器用于第 2 个 com 口,我们写
ln -s /dev/cua1 /dev/modem
我们检查它
lrwxrwxrwx 1 root uucp 9 Sep 19 19:10 /dev/modem -> /dev/cua1
如果我们的调制解调器在不同的 com 口,我们必须记住
/dev/cua0 is com1 /dev/cua1 is com2 /dev/cua2 is com3 /dev/cua3 is com4
对于新内核
/dev/ttyS0 is com1 /dev/ttyS1 is com2 /dev/ttyS2 is com3 /dev/ttyS3 is com4
现在,我们使用程序 minicom 检查我们的配置。
使 Linux 上的回拨可访问的第一步是在内核中设置合适的参数。然后我们检查我们的内核是否服务于协议 ppp。如果您的内核或模块中没有 ppp,您将必须编译您的内核并添加 ppp。您将在 Kernel-HOWTO 中找到更多信息。在 2.4.x 系列内核中,您必须标记以下选项
CONFIG_PPP=m # CONFIG_PPP_MULTILINK 未设置 CONFIG_PPP_ASYNC=m CONFIG_PPP_SYNC_TTY=m CONFIG_PPP_DEFLATE=m CONFIG_PPP_BSDCOMP=m
编译后,您必须为 /etc/modules.conf 添加一些行
别名 /dev/ppp ppp_generic 别名 char-major-108 ppp_generic 别名 tty-ldisc-3 ppp_async 别名 tty-ldisc-14 ppp_synctty 别名 ppp-compress-21 bsd_comp 别名 ppp-compress-24 ppp_deflate 别名 ppp-compress-26 ppp_deflate
您不能忘记您需要用于内核 2.4.x 的新 pppd 守护程序(对我来说是 ppp-2.4.0,这个 ppp 有一些错误,您必须从 ftp.samba.org 的 /pub/ppp 中获取最新的)。
好的。我们有一个好的内核。现在,我们必须为我们的系统设置软件。回拨程序是 mgetty-sendfax 和 ppp 的一部分。您将在您的发行版中找到所有这些。由于回拨系统具有双重验证,我们创建一个用户,该用户将在服务器端运行 ppp。在 /etc/passwd 中,您有新用户,并且必须更改他们的 shell。
pppuser:klkIOM89mn65H:230:PPP Dialin:/home/pppuser:/etc/ppp/ppplogin
我为内核 2.4.x 更改了上面的行,/etc/passwd 中的这一行(我使用 shadow,您看不到密码)
pppuser:x:6778:44:PPP Dialin:/etc/ppp/:/usr/sbin/pppd
我不使用特殊脚本来运行 pppd,而是在登录 pppuser 时直接运行它。
然后更改密码。我们必须在文件 /etc/ppp/pap-secrets
中添加密码信息(更多信息请参阅 man pppd)
pppuser * password_for_pppuser *
在 2.4.x 内核中,您必须在 /etc/ppp/pap-secrets
中写入
* * "" *
此用户没有常用的 shell,而是一个文件 /etc/ppp/ppplogin
。我们必须自己制作它。例如 vi /etc/ppp/ppplogin
,我们输入
#!/bin/sh exec /usr/sbin/pppd -detach 192.168.1.1:192.168.1.2
其中地址 192.168.1.1 是带有调制解调器的服务器的地址,地址 192.168.1.2 是我们分配给调制解调器的地址。我们为此文件设置可执行选项。因为我们将使用 ppp 守护程序,所以我们必须为此守护程序设置选项。我们编辑文件 /etc/ppp/options
proxyarp lock crtscts modem
如果是 2.4.x 内核,您在 /etc/ppp/options
中写入
-detach asyncmap 0 modem crtscts proxyarp lock require-pap refuse-chap ms-dns 192.168.1.1 usepeerdns
最后第三个选项非常重要。您仅使用 PAP 身份验证,require-pap。不要使用 chap 身份验证,refuse-chap。如果您有 M$ Windows 系统客户端,您可以使用 ms-dns 向他们发送有关 DNS 服务器的信息。如果您希望为 Linux/UNIX 机器发送 DNS 服务器的 IP,您可以使用 usepeerdns 选项,更多信息请参阅 man pppd。
Proxyarp 是以上选项中最重要的,因为您可以通过服务器中的调制解调器访问互联网。其余选项用于控制您的调制解调器。如果您删除 proxyarp 选项,您只能在服务器上工作。您必须查看 PPP-HOWTO 和 man pppd 以获取更多信息。我们现在将设置我们的调制解调器。我们的服务器必须在启动后准备好接收连接。我们编辑文件 /etc/inittab
,并将其添加到第 2 个 com 口上的调制解调器。
s1:2345:respawn:/sbin/mgetty ttyS1 -D /dev/ttyS1 vt100或
s1:2345:respawn:/sbin/mgetty ttyS1 -s 115200 -D /dev/ttyS1
对于第 1 个 com 口,该行如下所示
s0:2345:respawn:/sbin/mgetty ttyS1 -D /dev/ttyS1 vt100或
s0:2345:respawn:/sbin/mgetty ttyS0 -s 115200 -D /dev/ttyS0我们执行
init q
。如果我们在日志中没有关于任何错误的信息,我们将进入下一步。我们回到目录 /etc/ppp
并创建 options.ttyS1
(对于调制解调器 com1 为 options.ttyS0
)
IP_local: IP_remote
对于我们的网络,它将是
192.168.1.1:192.168.1.2
到目前为止,我们已经做了很多工作。现在,我们检查文件 /etc/mgetty+sendfax/login.config
。最重要的一行是
/AutoPPP/ - a_ppp /usr/sbin/pppd auth -chap +pap login detach 7 debug
如果您有 2.4.x 内核,您必须在此文件中写入
/AutoPPP/ - a_ppp /usr/sbin/pppd file /etc/ppp/options其余行可以标记为
#
。
我们必须为 ppp 守护程序设置 suid,因为 pppuser 必须运行 pppd 并使接口工作。我插入了 Bill Staehle 的观点:“注意:某些发行版认为他们比您更了解,并且当使用他们的“管理”工具(SuSE 中的 yast,许多其他发行版中的 linuxconf)时,会删除此权限。请阅读“工具”的文档,了解如何阻止这种胡说八道。”
chmod u+s /usr/sbin/pppd
其效果是
-rwsr-xr-x 1 root root 106892 Jan 11 1999 /usr/sbin/pppd
我认为将其添加到 cron 是一个好主意,因为在重新启动我的服务器后,pppd 更改了首选项。这是正常情况。我添加了 Bill Staehle 的观点:“评论:这就是我所指的。在 Red Hat 中,查看 /usr/lib/linuxconf/redhat/perm/ppp(删除或重命名该文件)。”
我们的服务器将充当路由器。我们必须启用 IP 转发,并将此行添加到文件 /etc/rc.d/rc.local
echo "1" > /proc/sys/net/ipv4/ip_forward
如果您是 RedHat 用户,您可以在 /etc/sysconfig/network
中将 FORWARD_IPV4=false
更改为 FORWARD_IPV4=true
。
为了验证,我们呼叫 Linux。我们使用脚本来实现。如果我们在 MS Windows 中执行此操作,我们标记选项 "连接后呼出终端"
。我们以 pppuser 及其密码登录。我希望一切都正常。
我们已经可以呼叫我们的 Linux。现在是 Linux 呼叫我们的时候了。这不是很困难。我们只需要编辑两个文件。我们创建一个文件 /etc/mgetty+sendfax/callback.conf
,并将其留空。
然后我们必须向我们的用户询问他们的电话号码。现在是时候写入我们之前连接的号码了。为了做到这一点,我们编辑 /etc/mgetty+sendfax/login.config
并添加行
call - - /usr/sbin/callback -S 123456
其中 call 是启动连接所需的伪用户。/etc/mgetty+sendfax/login.config
中的行启动程序,调用给定的号码(在本例中为 123456)。相同的程序可以应用于其他用户。我将尝试解释它是如何工作的。当我们呼叫服务器时。它要求我们提供验证。我们以伪用户身份登录,在本例中它调用。我们计算机中的脚本挂断调制解调器。我们等待,连接被切断。回拨程序开始工作并重新呼叫我们。我们再次以 pppuser 和密码验证自己。我们结合连接和接口 ppp。就这样。工作站的配置非常简单。当您有 MS Windows 时,您必须为您的号码安装拨号网络。在调制解调器属性中,我们找到“属性--->高级---> 额外选项”,我们在其中写入。
&c0s0=1
我们关闭窗口并呼叫。我们根据上面给出的描述登录。如果我们想使用 Linux,我们必须参考脚本。很难只给出一个适用于我们 Linux 的好脚本。系统中 ppp 的良好配置至关重要。(您可以首先通过脚本将其称为 pppuser)。下面的脚本由 A. Gozdz 编写。我建议将所有内容放入目录。这只是我的建议,您不必在此处启动脚本。有关在 Linux 上编写脚本的详细信息,请参阅 PPP-HOWTO。
守护程序 ppp 的配置文件(com2 上调制解调器的示例)这些脚本在 LINUX RED HAT 6.x 上运行良好
lock defaultroute noipdefault modem 115200 crtscts debug passive asyncmap 0
TIMEOUT 5 ABORT 'ERROR' ABORT 'BUSY' ABORT 'NO ANSWER' ABORT 'NO DIALTONE' ABORT '\nVOICE\r' ABORT '\nRINGING\r\n\r\nRINGING\r' '' AT&FH0 'OK-+++\c-OK' 'AT&C0S0=1' TIMEOUT 40 OK ATDT5376443 CONNECT '' ogin:-ogin: ppp-pseudo-user '\nNO CARRIER\r' '' TIMEOUT 180 '\nRING\r' AT&C1A CONNECT '' TIMEOUT 20 ogin:-ogin: pppuser sword:-sword password_for_ppuser
#!/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
如果您有 M$ Windows,您可以使用此脚本进行连接。我没有测试它(我使用终端),您可以向 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
回拨的配置并不复杂。最重要的是在 Linux 上正确安排 ppp 服务器。我不知道有更好的访问服务器设置方式。上面介绍的配置是多次尝试的结果,可以用不同的方式完成。这就是我建议阅读所有关于该问题的文件 man pppd、NET-HOWTO、PPP-HOWTO、ISP-Setup-RedHat-HOWTO、Modem-HOWTO 的原因。特别感谢 Bill Staehle。