BBS水木清华站∶精华区

发信人: MZY (mouse), 信区: Linux        
标  题: 在RedHat Linux 5.1下配置PPP/POP拨号服务器 
发信站: BBS 水木清华站 (Mon Feb  1 14:18:05 1999) 
 
             在RedHat Linux 5.1下配置PPP/POP拨号服务器 
                 作者: Hassan Ali   hassan@glcom.com 
                 译者: MZY        zdm@163.net 
                 原文: http://www.linuxgazette.com/issue36/ali.html 
                 译文: ftp://nihao.dlut.edu.cn/pub/Linux/ppp_setup.doc 
 
说明:  本方法在我的机器上经过了验证, 你的环境可能有所不同 
目的:  在RedHat Linux 5.1上为拨号上网用户安装PPP和POP/IMAP服务 
工具:  RedHat Linux 5.1 CD 
假定:  你已经在PC上安装了RedHat Linux51., 其内核支持IP forwarding 
 
步骤1: 从RedHat Linux 5.1 CD安装"mgetty"(如果没有安装的话) 
1. 以root用户登录, 在光驱中插入RedHat Linux 5.1 CD, 用下面的命令将其mount成一 
个目录: 
#  mount -t iso9660 /dev/hdb  /mnt/cdrom 
(假设你的光驱设备是/dev/hdb, 如果不是可做相应的改动) 
2. 进入RPMS目录: 
#  cd /mnt/cdrom/RedHat/RPMS 
3. 安装"mgetty" rpm 文件: 
#  rpm -Uvh mgetty* 
   这一步将安装mgetty和其所有的附件, 但谁会管它呢! 如果你讨厌扩展名的方式, 你 
可以用"mgetty-1.1.14-2.i386.rpm" 代替"mgetty" 
4. 在/etc/mgetty+sendfax/mgetty.config文件的末尾为连接modem的每个串行口添加以 
下三行. 这里是一个应用于/dev/ttyS1和/dev/ttyC15的例子 
   # For US Robotics Sportster 28.8 with speaker off 
   port ttyS1 
   init-chat "" ATZ OK AT&F1M0E1Q0S0=0 OK 
   answer-chat "" ATA CONNECT \c \r 
 
   # For Practical Peripheral 14.4 with fax disabled and prolonged 
   # carrier wait time (90 sec) 
   port ttyC15 
   init-chat "" ATZ OK AT&F1M0E1Q0S0=0S7=90+FCLASS=0 OK 
   answer-chat "" ATA CONNECT \c \r 
  注意: 
1. AT&F1为大多数的modem设置硬件流控制模式. 对于其它的modem要在init-chat行采用 
适当的初始化设置. 
2. 你可能奇怪我为何用ttyC15端口做例子, 因为如果你使用一块多串口卡的话, 你会有 
这样一个端口. 如果你的确需要这样一块卡, 我建议你采用 Cyclades卡 
5. 在/etc/mgetty+sendfax/loging.config文件中, 查找以/AutoPPP/.开头的行. 确认这 
行没有被注释掉(在行开始处没有"#"符号), 并做以下的修改: 
     /AutoPPP/  -       a_ppp   /etc/ppp/ppplogin 
   如果你想在/var/run/utmp和/var/log/wtmp日志文件中写入用户的登录名(而不是 
"a_ppp")的话, 这一行应该改成: 
     /AutoPPP/  -       -       /etc/ppp/ppplogin 
6. 在/etc/inittab文件中, 查找运行 "getty"的段, 并且在此段的末尾为每个modem端口 
添加类似于下面例子的一行. 下面的例子是针对ttyS1和ttyC15的: 
         7:2345:respawn:/sbin/mgetty -x 3 ttyS1 
         8:2345:respawn:/sbin/mgetty -x 3 ttyC15 
  (第一个数字(7,8)可以是任意的(实际上我见过其它的"s1","s2"等). 反正只是给每个 
端口不同的数字即可. 为何不用连续的数字呢, 个人意见而已) 
7. 将modem连接到串口上, 打开modem的开关, 用下面的命令进行初始化 
#  init q 
  注意: 如果你将mgetty赋给一个没有modem连接的端口, 或者modem没有打开, 在  
/var/log/messages 和其它mgetty("/var/log/log_mg.ttyXX")日志文件中会产生大量的 
错误信息. 实际上还会有错误信息不断的显示在屏幕上, 非常讨厌. 要避免这种干扰,  
应在/etc/inittab和/etc/mgetty+sendfax/mgetty.config文件中将那些对应无modem连接 
的行注释掉. 
 
步骤2: 从RedHat Linux 5.1 CD安装PPP(如果没有安装的话) 
 
1. 如果RedHat Linux CD已经正确的mount(见步骤1), 用下面的命令安装PPP: 
  # rpm -Uvh /mnt/cdrom/RedHat/RPMS/ppp* 
2. 编辑/etc/ppp/options文件: 
      -detach 
      crtscts 
      netmask 255.255.255.0 
      asyncmap 0 
      modem 
      proxyarp 
   注意:  
  1. 用合适的子网掩码, 不一定必须是255.255.255.0, 实际上我用的是 
255.255.255.224 
    2. 阅读pppd帮助理解以上参数的意义. 
3. 编辑/etc/ppp/ppplogin文件(如果不存在就创建它) 
        mesg n 
        tty -echo 
        /usr/sbin/pppd silent auth -chap +pap login 
   使ppplogin成为可执行的文件 
       # chmod +x /etc/ppp/ppplogin 
   注意: 我们将使用PAP口令验证而不是用以前的/etc/passwd口令文件. 这是参数 
"+pap login"的含义. 
4. 对于每个连接modem的端口, 创建一个相应的/etc/ppp/options.ttyXX文件, 这里"XX" 
代替每个端口名, "S1"代表ttyS1端口, "S2"代表ttyS2端口, "C15"代表ttyC15端口. 在 
这些文件中加入下面的一行: 
myhost:ppp01 
这里"myhost"是PPP服务器的域名, 把它改成你Linux服务器的真实域名. 如果你忘记了,  
你可以用"hostname"命令来查询: 
# hostname 
   "ppp01"是任意选取的虚拟域名, 是和/etc/hosts文件中的PPP拨号上网的主机IP地址 
对应的(后面将说明). 在另一个/etc/ppp/options.ttyXX文件中, 你可以这样写 : 
myhost:ppp02 
这里你定义了另外一个PPP域名"ppp02". 对每一个串口要定义一个不同的域名. 你可以选 
择任何喜欢的名字. 不一定必须是ppp01, ppp02,ppp03. 你可以用'junkie", "newbie",  
"noname" 等等. 
 
5. 编辑/etc/ppp/pap-secrets文件并且为每个为拨号用户动态分配的IP地址添加如下的 
一行. 当然假定你有足够的IP地址空间分配给你的拨号上网的用户: 
         # Secrets for authentication using PAP 
         # client   server          secret          IP addresses 
         *          *               ""              10.0.0.3 
         *          *               ""              10.0.0.4 
   这表明: 对于有如上IP地址的从任何地方登录的任何用户不使用PAP口令加密. 这是说 
如果我们用/etc/passwd的话就不需要用PAP口令加密. 如果你真的不太固执的话, 你甚至 
可以为任何IP地址的用户提供服务. 
         # Secrets for authentication using PAP 
         # client   server          secret          IP addresses 
         *          *               ""              *      
6. 用以下命令, 确信/usr/sbin/pppd成为Setuid命令: 
         # chmod u+s /usr/sbin/pppd 
7. 编辑/etc/hosts文件定义IP地址给所有在步骤2.4中定义的PPP域名. 用步骤2.5中的IP 
地址空间: 
         10.0.0.3   ppp01   ppp01.mydomain.com 
         10.0.0.4   ppp02   ppp02.mydomain.com 
  注意: 用你的真实域名替换"mydomain.com". 这里我假设你的域名是myhost.mydomain. 
com. 
 
步骤3: 从RedHat Linux 5.1 CD安装POP/IMAP(如果没有安装的话) 
1. 如果RedHat Linux CD已经正确的mount(见步骤1), 用下面的命令安装POP和IMAP: 
      # rpm -Uvh /mnt/cdrom/RedHat/RPMS/imap* 
2. 察看/etc/inetd.conf文件中"pop-2","pop-3",和"imap"服务是否已经去掉了注释. 如 
果没有将其注释去掉(删掉行前的"#"). 如果你只希望提供pop3服务, 你可以只去掉 
"pop-3"的注释行, 如果pop2和pop3文件不在"imap"的RPM文件中, 看看是否有"ipop*"的 
RPM文件. 
3. 用下面的命令激活新的服务: 
# kill -HUP `cat /var/run/inetd.pid` 
 
步骤4:  加入IP forwarding 
1. 如果你使用的是RedHat5.1自带的核心, 应该已经支持IP forwarding. 如果你使用的 
是自己编译的核心. 在编译时应打开"IP: forwarding/gatewaying"选项. 据RFC文档,   
启动时缺省时没有激活IP forwarding的. 在/etc/sysconfig/network文件中添加如下一 
行来激活IP forwarding: 
      FORWARD_IPV4=yes 
2. 用下面的命令激活 IP forwarding或重启动: 
     # echo "1" > /proc/net/ip_forward 
 
步骤5: 测试服务器 
 
1. 首先创建用户(如果没有的话). 你可以给它"/home/username"作为用户目录, 如果你 
希望用户同时具有PPP和shell登录的权限的话, 可以用"/bin/bash"作为用户的登录 
shell.. 如果只希望用户有PPP权限, 则要用"/etc/ppp/ppplogin"作为用户的登录程序.  
典型的/etc/passwd文件如下: 
   
         jodoe:tdgsHjBn/hkg.:509:509:John Doe:/home/jodoe:/bin/bash 
         jadoe:t8j/MonJd9kxy:510:510:Jane Doe:/home/jadoe:/etc/ppp/ppplogin 
   在这个例子中, John Doe同时具有PPP和shell登录的权限, 而Jane Doe则只有PPP的权 
限. 如果你奇怪John Doe为何具有PPP权限, 答案在"mgetty"的configure文件中的 
/AutoPPP/设置, 它保证了任何用户如果以PPP方式拨号进来, mgettty会自动执行 
/etc/ppp/ppplogin程序. 
如果John Doe用已经配置好的用来进行PPP连接的Windows95拨号适配器进行拨号, mgetty 
会给John Doe以PPP权限. 如果他用任何其它的类似于Hyper Terminal(没有PPP协商功能) 
来拨号的话, 他将会获得登录shell. 而Jane Doe则不同, 她在任何情况下只能获得PPP权 
限. 
实际上, "mgetty" 允许你用同一个modem实现不同的协议. 例如, 你的UUCP客户(如果你 
有的话) 可以用同一个modem作为PPP客户! 当然, 你必须要给你的UUCP客户 
"/var/spool/uucppublic"作为用户目录以及"/usr/sbin/uucico"作为登录程序. 
2. 假设你有一个已经设置好的web服务器(Apache)(设置Apache是非常简单的事情), 在一 
个用modem连接的远程PC上运行Web浏览器和POP客户(如Eudora). 如果你用的是 
Windows95/98 PC, 设置你的拨号适配器的网关为拨号服务器的IP地址, 设置正确的DNS地 
址, 设置远程自动配置IP.  
在POP客户程序中设置SMTP和POP的服务器地址. 
 
现在拨入服务器等待连接, 测试Web浏览器和POP邮件的收发. 如果不工作, 那一定是什么 
地方设置错误啦 :-) 
 
参考文献: 
1. PPP-HOWTO 
2. NET-3-HOWTO 
3. "Using Linux", Bill Ball, published by Que (around US$30 - highly  
recommended) 
4. mgetty document 
 
 
                           Copyright ? 1999, Hassan O. Ali  
                    Published in Issue 36 of Linux Gazette, January 1999 
  
 
-- 
※ 修改:·MZY 於 Feb  1 14:23:36 修改本文·[FROM:   202.118.68.69] 
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 202.118.68.69] 

BBS水木清华站∶精华区