配置你的拨入服务器
By Hassan Ali 翻译: salty_fish
声明:
以下对我适用,你的可能有很大差别!
目的:
在Red Hat Linux 5.1 服务器为拨号用户建立PPP 和POP/IMAP服务。
工具:
Red Hat Linux 5.1 CDs
假设:
你已经拥有一台PC并安装好支持IP的核心的Red Hat Linux 5.1。
--------------------------------------------------------------------------------
第一步:从Red Hat 5.1光盘上安装\"mgetty\"(如果没有的话) 。
~~~~~~~~~~~~~~~
以\"root\"身份登录,插入光驱 Red Hat 5.1 光盘第一张,并使用以下命令mount它:
# mount -t iso9660 /dev/hdb /mnt/cdrom
(假设你的光驱设备是/dev/hdb,如果不是,作相应更改)。
转到RPMS目录:
# cd /mnt/cdrom/RedHat/RPMS
安装\"mgetty\" rpm 文件:
# rpm -Uvh mgetty*
这将安装mgetty和它的所有一切,谁又关心这些呢!!如果你厌恶其他东西,你可以用\"mgetty-1.1.14-2.i386.rpm\"代替\"mgetty*\"。
在/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
注意:
AT&F1 在许多MODEM上设置硬件流控制模式。一些其他的MODEMS在init-chat行使用适当的初始化符。
在这你可能对我使用ttyC15端口举例有疑问;好吧,你可能有一个端口如果你有多口串行卡。如果你需要,我建议使用Cyclades卡。
在/etc/mgetty+sendfax/login.config 文件中,寻找带有/AutoPPP/的行。确信它不是注释(i.e.行前没有#),把它改成:
/AutoPPP/ - a_ppp /etc/ppp/ppplogin
如果你想使用登录名(而不是\"a_ppp\")在/var/run/utmp和 /var/log/wtmp 的日志文件中出现,那么必须改成:
/AutoPPP/ - - /etc/ppp/ppplogin
在文件/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\", etc,代替的。).只须给每个端口以不同的数字。至于为什么有顺序,我也想知道!]
连接MODEM到串口,打开开关到ON,用命令初始化\"mgetty\":
# init q
注意: 如果在\"mgetty\" 串口上没有MODEM,或MODEM没有打开,你将在\"/var/log/messages\"得到一大段出错信息,或者在其他\"mgetty\"(/ var/log/log_mg.ttyXX\")日志文件中.实际上这些出错信息经常出现在你的屏幕上。迅速分析,避免麻烦,没有连接串口的MODEM在文件/etc/inttab 和/etc/mgetty+sendfax/mgetty.config相应行中必须注释掉。
--------------------------------------------------------------------------------
第二步:从Red Hat 5.1 CD #1安装PPP(如果没有安装的话)。
~~~~~~~~~~~~~~~
如果 Red Hat CD #1 可能还未moundt(见第一步), 使用下列命令安装PPP:
# rpm -Uvh /mnt/cdrom/RedHat/RPMS/ppp*
编辑文件/etc/ppp/options 就象下面一样:
-detach
crtscts
netmask 255.255.255.0
asyncmap 0
modem
proxyarp
注意:
使用自己网络的属性。它不会是 255.255.255.0,实际上我用的是255.255.255.224
阅读\"pppd\"的帮助文理解上面的选项。
编辑文件/etc/ppp/ppplogin(如果不存在那么就建一个)就象下面一样:
mesg n
tty -echo
/usr/sbin/pppd silent auth -chap +pap login
切记执行下列命令:
# chmod +x /etc/ppp/ppplogin
注意: 我们将使用PAP验证而不是普通的/etc/passwd口令文件。这就是\"+pap login\"的意思。
为每个连接到MODEM的串口,创建一个相应的/etc/ppp/options.ttyXX文件,这儿的XX是ttyS1端口的\"S1\",ttyS2端口的\"S2\",ttyC15端口的\"C15\",等等。在这些文件中放入以下行:
myhost:ppp01
\"myhost\"是PPP服务器的主机名-改成你相应的Linux实际主机名。如果你很健忘你可以记起它,使用\"hostame\"命令提醒你的服务器的主机名。
# hostname
上面使用的\"ppp01\"对于虚拟主机连接PPP拨入线响应的IP地址在/etc/hosts文件中的定义是任意选择的。(梢后讨论)。在另一个/etc/ppp/options.ttyXX文件,你可以键入如下:
myhost:ppp02
在这,你定义了一个不同的PPP主机名,\"ppp02\"。在每个串口使用用不同的主机名。你可以选择任何你想的到的名字!而不必是 ppp01, ppp02, ppp03, etc.他们可以是\"junkie\", \"newbie\", \"noname\", 无论什么。
编辑文件/etc/ppp/pap-secrets 增加file 象以下and add one line as shown below for each IP address that is to be dynamically assigned to PPP dial-in users. This, of course, assumes that you have a pool of IP addresses that you can assign to your dial-in clients:
# Secrets for authentication using PAP
# client server secret IP addresses
* * \"\" 10.0.0.3
* * \"\" 10.0.0.4
这是说: 没有PAP口令设置对于全世界的任何客户是可视IP地址。我们不需要PAP口令可以使用/etc/passwd替代。如果你很固执,你可以设置世界任何地方的IP号。我们使用/etc/passwd的话就不需要使用PAP验证,如果你真的不固执,你可以仅输入下面一行服务全部IP地址(你的和你邻居家的!):
# Secrets for authentication using PAP
# client server secret IP addresses
* * \"\" *
使/usr/sbin/pppd program可执行:
# chmod u+s /usr/sbin/pppd
编辑文件/etc/hosts分配IP地址到在STEP 2.4中你所使用的PPP主机名。使用STEP 2.5中所有使用的IP地址:
10.0.0.3 ppp01 ppp01.mydomain.com
10.0.0.4 ppp02 ppp02.mydomain.com
注意:用你的实际PPP服务器名字代替\"mydomain.com\"。如果你的服务器是\"myhost.mydomain.com\",仅此时你可以拒绝。
--------------------------------------------------------------------------------
第三步:从Red Hat 5.1中安装POP/IMAP服务器(如果没装的话)
~~~~~~~~~~~~~~~~~~
装载Red Hat CD #1,使用下列命令安装POP和IMAP:
# rpm -Uvh /mnt/cdrom/RedHat/RPMS/imap*
检查/etc/inetd.conf文件,看看\"pop-2\",\"pop-3\"和\"imap\"服务是否都没有注释。如果没有,去掉他们的注释(如:去掉前导).如果你仅想支持POP3客户,那就只去掉\"pop-3\"那一行。如果POP2和POP3文件不在\"imap*\"RPM文件中,试用\"imap*\"RPM文件代替试一下。
用以下命令执行新的服务:
# kill -HUP `cat /var/run/inetd.pid`
--------------------------------------------------------------------------------
第四步:先使IP有效
~~~~~~
如果你使用RedHat 5.1附带的已编译的核心,它通常就支持IP。如果你自己编译核心,牢记选择\"IP:forwarding/gatewaying\"网络选项,对于RFC(请求评论Request for Comments),默认启动过程并不启动IP。修改/etc/sysconfig/network文件中的IP设置为\YES\",如下:
FORWARD_IPV4=yes
用以下命令使IP转发生效:
# echo \"1\" > /proc/net/ip_forward
或重新启动计算机.
--------------------------------------------------------------------------------
第5步:测试服务器
~~~~
首先建立用户(如果没有的话)。你可以给定他们\"/home/username\"主目录和\"/bin/bash\"登录脚本,当然如果你想给他们\"PPP\"和SHELL存取权限的话也可以。如果你仅想给他们PPP使用权,而不是SHELL存取权,你可以给他们\"/home/username\"主目录和\"etc/ppp/ppplogin\"登录程序。当然使用\"usercfg\"工具建立新用户最好。典型的/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使用权有疑问的话,答案在/AutoPPP/配置文件的\"mgetty\"几行中--这真的很神奇。许多用户将拨入使用PPP,而mgetty将给他或她/etc/ppp/ppplogin程序
所以,如果John Doe拨入使用Windows 95拨号建立PPP连接,mgetty将给John Doe PPP存取。如果他用其他通讯软件如HyperTerminal, (没有PPP)他将得到普通登录脚本。对于Jane Doe这不会发生,她将一直使用/etc/ppp/ppplogin程序登录。
实际上\"mgetty\"允许你在同一个modem上使用多个协议。比如说,你的UUCP客户端可以使用同一个modem线作为你的PPP客户端!当然,你不得不给你的UUCP客户端以/var/spool/uucppublic\"目录和\"usr/sbin/uucico\"程序。
假设你已经建立了一个(Apache)服务器(建立Apache是小菜一叠),在远端有一只modem连接着电话和一台PC,它用一个浏览器,一个POP邮件客户端程序(e.g Eudora),建立了与PPP服务器的IP地址相应的拨号连接,使用正确的DNS IP地址,指定服务器将自动分配IP地址。在POP客户端如(e.gEudora),设置PPP/POP服务器的SMTP和POP地址。
好了,等待连接。试着浏览一下,接收和发送POP邮件。如果它不工作。。。一定是什么地方错了:-)
--------------------------------------------------------------------------------
参考:
1. PPP-HOWTO 2. NET-3-HOWTO 3. \"Using Linux\", Bill Ball, published by Que (around US$30 - highly recommended) 4. mgetty documentation
发布人:netbull 来自:Linux公报