使用红帽企业版Linux如何配置一个点对点(PPP)拨号服务器

由于Internet宽带连接的使用,拨号调制解调器变地过时,但是仍然有一些情况需要拨号访问. 在办公室的一个PPP服务器可以提供在用户外出出差时提供访问email和Internet的另一种方法. 在服务器或者网络出现问题时,拨号调制解调器也为系统管理员提供了一种紧急的连接. 下面介绍的配置一个PPP服务器的步骤允许系统管理员在使用红帽企业版Linux,Microsoft Windows, OS X或者其他支持PPP拨号的操作系统时获得远程访问.在远程客户端的拨号软件上,只需要输入调制解调器的电话号码,用户名和密码。在客户端,对于红帽企业版Linux和其它的操作系统,不再需要其他额外的配置.

使用下面的步骤来配置你的PPP服务器:

1. 在/etc/mgetty+sendfax/login.config文件中去掉'AutoPPP'所在行的注释:

/AutoPPP/ - a_ppp /usr/sbin/pppd auth -chap +pap login debug

2. 在/etc/mgetty+sendfax/mgetty.config文件中调节端口的速度,来匹配调制解调器的参数.

speed 57600

3. 在/etc/inittab文件中加入下面的行:

ppp0:345:respawn:/sbin/mgetty -x 3 ttyS0

改变ttyS0(ttyS0 是第一个串口)为连接调制解调器的端口.每个调制解调器需要一行.如果使用多个调制解调器,每一个调制解调器需要一个唯一的终端名(ppp0 在这里是名字),同时需要改变ttyS0为一个合适的串行端口.如果你不确定调制解调器连接到哪个端口,使用下面的端口查询命令:

wvdialconf /tmp/wvdialtest.conf

这个命令的输出将会显示调制解调器连接哪个端口.显示类似于:

"Found a modem on /dev/ttyS0, using link /dev/modem in config"

4. 把下面的内容加入到 /etc/ppp/options文件 file. 不要忘记删除在这个文件中的任何存在的选项和把真实的DNS服务器加入到ms-dns所在行:

# Don't fork to become a background process (otherwise pppd will do so
# if a serial device is specified).
-detach

# async character map -- 32-bit hex; each bit is a character
# that needs to be escaped for pppd to receive it.  0x00000001
# represents '\x01', and 0x80000000 represents '\x1f'.
asyncmap 0

# Set the interface netmask to , a 32 bit netmask in "decimal dot"
# notation (e.g. 255.255.255.0).
netmask 255.255.255.0

# Add an entry to this system's ARP [Address Resolution Protocol]
# table with the IP address of the peer and the Ethernet address of this
# system.
proxyarp

# Specifies that pppd should use a UUCP-style lock on the serial device
# to ensure exclusive access to the device.
lock

# Use hardware flow control (i.e. RTS/CTS) to control the flow of data
# on the serial port.
crtscts

# Use the modem control lines.  On Ultrix, this option implies hardware
# flow control, as for the crtscts option.  (This option is not fully
# implemented.)
modem

# This machine does not authenticate callers
noauth

# Set DNS servers. Replace aa.bb.cc.dd and ee.ff.gg.hh with the actual
# DNS servers for your environment.
ms-dns  aa.bb.cc.dd
ms-dns  ee.ff.gg.hh

5. 创建一个/etc/ppp/options.ttySX文件,其中ttySX 是调制解调器连接的串口(类似于ttyS0 或者 ttyS1).在这个文件中,加入被配置成PPP服务器的IP地址,分号的后面是分配给调制解调器的IP地址.这个文件看起来类似于:

#Server_IP_address:Client_IP_address
192.168.1.68:192.168.1.107

这个设定了网关(PPP服务器的IP)和远程机器的IP地址.为每个调制解调器创建一个文件.每个PPP服务器的IP地址可能会相同但是每个调制解调器需要自己的唯一的IP地址.

6. 为pppd程序设置root访问的suid位:

chmod u+s /usr/sbin/pppd

这将使pppd以root身份来运行.

7. 使用init q命令来重新读取/etc/inittab文件

8. 激活IP转发,这样路由服务器外的客户请求:

echo 1 > /proc/sys/net/ipv4/ip_forward

如果你希望这个设置在重新启动和永久生效,可以编辑 /etc/sysctl.conf文件加入下面的行:

net.ipv4.ip_forward = 1

9.在登录时用户帐号需要改变,来自动运行/usr/sbin/pppd程序.如果这个没有被设置,用户需要在登录后在一个终端窗口手动执行pppd. 尽管一个通用的'pppuser'帐户可以被任何人使用,但是由于安全原因,我们强烈推荐你创建一个单独的帐户. 为ppp创建帐户,可以使用useradd命令来创建帐户.使用passwd为这个用户设置密码后,修改/etc/passwd文件,把这个帐户的登录shell改变为/usr/sbin/pppd. 在/etc/passwd 中的行类似于:

bob:x:500:500:bob:/home/bob:/usr/sbin/pppd

10. 红帽企业版Linux即支持PAP验证也支持CHAP验证, 对于CHAP在客户端和服务器端需要定制化的脚本,在这里我们使用简单的PAP验证方法.PAP 通过在/etc/mgetty+sendfax/login.config文件中AutoPPP所在行指定-chap +pap参数来指定.为了允许用户验证,编辑/etc/ppp/pap-secrets文件,包含用户名和密码.这些用户名和密码与你从本地终端登录入系统的用户名的密码相同.例如,如果我们想授权PPP访问一个用户为"bob",密码为"mypassword"的用户,这个文件看起来如下:

#User                Server                Secret                IP Address
bob                *                mypassword      *

在The asterisks under the Server and IP address 端下的*号,允许这个用户从任何IP地址登录到这个服务器.

故障检修当用户拨入时,调制解调器没有自动回答,确认调制解调器上的DIP开关没有配置为强制自动回答.调制解调器不需要在默认设置下再重新配置,就可以使PPP工作.

如果调制解调器回答了,但是用户不能登录,使用tail -f命令来监视/var/log/messages和/var/log/mgetty.log.ttySX(X是你串口的号码)来获取错误信息.

确认用户的登录密码和etc/ppp/pap-secrets中的密码相同,同时匹配在拨号软件中输入的密码.

如果错误类似于init chat failed, exiting...:Invalid argument 出现在 /var/log/mgetty.log.ttySX文件中,调制解调器的初始化字符串可能不对. 为了修改这个错误,把下面的行加入/etc/ppp/mgetty.config 文件中:

init-chat "" ATZ OK AT&F1 OK

把AT&F1替换成你的调制解调器相应的初始化字符串. AT&F1应该适合于US Robotics调制解调器,因为它加载出厂的默认配置.

注:在shi在使用Linux系统最为远程客户端时,/var/log/mgetty.log.ttySX文件的 'user' 区域将显示实际试图登录的用户名.如果 Windows 是远程客户端的操作系统, 'user' 区域将显示 '/AutoPPP/'.这是正常的.