Linux作PPP接入服务器(2)
时间:2007-02-17 来源:PHP爱好者
当你觉得所有必要的功能被添加或按需做成模块后,可以试着运行如下指令:
#make dev;make clean;make zlmage;
若系统最后提示新的内核存在于/usr/src/linux/arch/i386/boot中则表示编译内核成功
若是提示“内核太大了”等内容时,可以接着键入
#make bzlmage 以生成一个压缩的核,通常这样做就行了。
随后就是安装模组了
make modules
make modules_install
#depmod -a (为模块建立正确的依赖关系 )
通过察看/etc/lilo.conf 来知道你的Linux用哪个目录的那个文件作为image目录。
例如: image = /boot/vmlinuz
将 /usr/src/linux/System.map 复制到 /boot 目录中。
将 /usr/src/linux/arch/i386/boot/zImage(或bzImage)新核心制到 /boot 目录中,
执行Lilo后以新核心重启你的计算机。
技巧提示:保留旧的核心
你在未能证实新核心可以稳定运行之前保留旧的核心是个好主意。推荐的做法是:
在解压新核心之前将/usr/src下的linux 更名。(如改为linux.old),然后创建一新空目录,
如linux2.2.14
然后用ln -s linux2.2.14 linux为其创建一个linux的符号链接。
之后再解压原始代码包,这样做的好处是在你以后的核心更新中,只要简单地更新符号链接就可以了,并且永远是有效的/usr/src/linux目录名。
在将新核心复制到/boot之前为其取一个代表性的可记忆的新核心名,如取成vmlinuz.ppp.2.2.14
然后编辑 /etc/lilo.conf,修改后的 lilo.conf 如下:
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt timeout=50
default=linux
image=/boot/vmlinuz
label=linux
root=/dev/hda1 read-only
image=/boot/vmlinuz-2.2.14
label=linux214
root=/dev/hda1 read-only
other=/dev/hda2
label=dos
table=/dev/hda
别忘了执行#lilo ,然后系统提示以下信息:
Added linux * Added linux214 Added dos
#reboot
当执行lilo命令时,系统将加入另一个新的可引导的核心,若你在系统引导(即出现lilo时)忘了新核心的名字,可以用按tab键来显示所有可启动的项,由Label定义.
ok,现在你就已经多了一种选择了,这样当新核心不能引导或不正常时可以随时用旧核心。
推荐您使用英文原版的Rad Hat6.2发行套件,因为用它来敲敲打打我的核心很是得力。但相对来说,那些标榜xx核心汉化技术,世界第一的所谓中文linux套件,在重编译核心时都会或多或少的遇上麻烦。对于它们,我只取其可取之处,如独立的中文处理包。
(关于核心的更多信息可以参见第6节中的相关文档)
安装、配置和启动pppd软件包
通常现行的linux发行版中都包含了pppd软件包,如果你没有这些包或你想用另一类的pppd工具包,推荐你下载和使用mgetty软件包,该软件支持数据和传真功能。而Linux自带的getty不支持传真功能。它可以在freesoft.cei.gov.cn 上取得,现以mgetty为例,作具体说明。
注意:对于不同的PPP软件包,其具体配置存在着一些差异,通常的做法是,查看相应的手册页或Readme文档。
验证mgetty软件包:
如果你在相应目录下找不到文件如/sbin/mgetty, /etc/mgetty+sendfax/login.config,则你需要安装 mgetty RPM包。
配置mgetty软件包:
现假设你用COM1与COM2来接收外来的拔号,其上各外挂一只Acer 56 Surf Modem。对Modem的配置可以参见“小资料:LINUX下如何配置MODEM”。同样假设现已将其设为自动驳接外线呼叫。
1、在/etc/inittab文件中加入以下二行:
s0:345:respawn:/sbin/mgetty -a -m "" ATS0=1 OK -D -x 3 ttyS0 vt100
s1:345:respawn:/sbin/mgetty -a -m "" ATS0=1 OK -D -x 3 ttyS1 vt100
参数说明:
id:runlevel:action:/sbin/mgetty [options] line [speed [term [lined]]] .
上句中各种参数以‘:'来分隔。各参数的具体意义为:
345:指明它是在哪一个runlevel下调用该行,一般23足够了,也可以写成2345.
runlevel 2 : 不带NFS支持的多用户模式
runlevel 3 : 普通的多用户模式
选项 -a: 波特率自动适配.
-m: 传送给串口设备/dev/ttyS0的初始化字符串,这里的是AT命令,设置modem在震铃一次后,接通. mgetty等待设备/dev/ttyS0返回的OK字符串,进入下一步处理.
ttyS0: linux中对串口定义的设备文件名:/dev/ttyS0 对应COM1; /dev/ttyS1 对应COM2;
vt100设置终端的类型
然后,运行 /sbin/init q 让改动生效。
2、配置mgetty的配置文件:
在/etc/mgetty+sendfax/login.config文件中,去掉含有AutoPPP的一行的行头的注释. /AutoPPP/ - a_ppp /etc/ppp/ppplogin
其中: /AutoPPP/是登录与/dev/ttyS0相连的mgetty生成终端的用户的终端名, a_ppp 是基于/dev/ttyS0的物理连接上的PPP连接的连接名.
3、修改/etc/ppp/ppplogin 文件:
/etc/ppp/ppplogin 是登录以后自动运行的脚本(script)文件,例如:
#!/bin/sh
if [-f /etc/ppp/options.$TTY];
then exec /usr/sbin/pppd
else
exec /usr/sbin/ppd -detach
fi
或者只需简单的添加以下的行到/etc/ppp/ppplogin中:
#!/bin/sh
/usr/sbin/pppd auth -chap +pap login
注:参数login表示用/etc/passwd中的用户名和密码进行PAP认证.
而如果你不需要在拨入后做用户名和密码验证,只要去掉参数auth即可。
然后保存文件,且给它执行权限 :
chmod +x /etc/ppp/ppplogin
4、现在改动/etc/ppp/options 文件,象下面:
-detach
modem
lock
crtscts
asyncmap 0
netmask 255.255.255.0
proxyarp
mtu 296
mru 296
ms-dns 192.168.10.25
注:192.168.10.25 是我的LAN上的一台DNS服务器,192.168是通常的LAN设置,至于采用10.25而非0.1则是因为10.25是我的生日,这样对我来说好记些且有自已的个性标志。如你没有可不设,你可以给拨入用户自动分配DNS。
附注:mtu/mru 两行设定建立PPP连接后,传输的包的尺寸,这里用296(256+40),也可以设为552(512+40),40代表空的没有任何数据的包的大小,设为比较小的值是为了假如一个PPPD进程建立后要传输很大的文件,可降低每个包的尺寸,以防其它的进程速度变慢,尽管减少了传输的每个包的尺寸,但不影响总体传输的速度。你也可以不设这两行。
5、创建另外两个文件/etc/ppp/options.ttyS0 和 /etc/ppp/options.ttyS1
(后缀与相应的串口对应,为每一个串口定义不同的PPP连接参数):
刚开始可以在每个文件中各自加入以下的行, 其它的都注释掉.等调试通过后,再根据需要加入相应的参数.
# more options.ttyS0
192.168.10.3:192.168.10.242
# more options.ttyS1
192.168.10.3:192.168.10.243
注:192.168.10.3是我这台Linux 服务器的IP地址,
而192.168.10.242和192.168.10.243是我指定给拨入用户的两个PPP地址。
现提供一个仅供参考的配置文件:
# more options.ttyS0
asyncmap 0 netmask 255.255.255.0 #Local IP : Remote IP 192.168.1.100:192.168.1.101 lock noauth crtscts modem -detach debug proxyarp
6、至于/etc/ppp/pap-secrets,你可以加入下面的行:
* * "" 192.168.10.242 * * "" 192.168.10.243
到此为止, 设置完成。
溅了这么多的口沫,听起来似乎很烦,其实在实际操作中,只要三下五除二,一下子就搞定了。
呵呵,祝你好运。
启动pppd软件包
只要您成功地安装与设置了PPP包后,要启动PPPD只要在任意时刻键入pppd就行了。我通常是在机器启动时就启动它。
现以TurboLinux中文版4.0为例做个简单说明:
#turboservice
只要选中pppd一项,你就可以让机器在下次启动时自动运行pppd服务了。
对于RH及与其兼容的发行版本来说,这个命令就是使用setup,然后选用“系统服务”一项。
我不知道为什么会使用不同的命令名! :-(
小结:
在mgetty中的一些重要的相关文件:
/sbin/mgetty
/etc/mgetty+sendfax/login.config
/etc/inittab
/etc/ppp/ppplogin
/etc/ppp/options
/etc/ppp/options.$TTY(其中,$TTY的值为你所用的串行接连端口号)
/etc/ppp/pap-secrets
用户拨入成功建立PPP连接后,如果你需要访问LAN上其它服务器,那么你必须打开该PPP服务器的IP转发功能,echo 1 /proc/sys/net/ipv4/ip_forward .
如你需要在空闲一段时间后自动解除连接,如20分钟,那么加入idle 1200到/etc/ppp/options。
高屋建领:PPP链接配置的类型与特点
链接配置有四种类型:
专用型链接。
动态输入型链接。
动态输出型链接,透明起动。
动态输出型链接,手工起动。
各种链接各有不同的特点和其最宜的应用环境,系统中PPP的链接配置的数目和内容取决于系统预期的PPP通信类型。这些文件可手工编辑,也可以利用相应的工具来完成设置。
专用型链接的特点。
此配置要求用一条专用串行线链接一台远程主机,包括两个建筑物之间的租用线和链接两台PC间的串行电缆等。
要求将一条串行线专门用于一个PPP链接。
允许本地或远程主机发起链接。
必须由本机指定本地及远程主机的IP地址,远程主机必须接受这些地址。
注意:
如果远程主机必须分配IP地址,则需使用动态类型的链接配置。
对专用型链接要使用非modem控制的串行线。
动态输入型链接。
当需要在动态获得的串行线上接受远程主机的链接请求时,可以采取此类型。
要求动态获得串行线,串行线可共享。
要求由远程主机通过注册程序发起链接。
用于识别本地及远程主机的IP地址可任由本地主机或远程主机指定。
动态输出型链接,透明起动。
如果本地主机通过动态获得的串行线发起与远程主机的PPP链接,且本地主机能够分配链接内本地主机和远程主机的IP地址,则可以采用此类型。
要求动态获得串行线,串行线可共享。
要求由本地主机发起链接。当出现传往远程主机IP地址的IP包时,此链接将自动启动。
要求本地及远程主机的IP地址必须由本地主机指定,由远程主机接受。
动态输出型链接,手工起动。
如果本地主机通过动态获得的串行线发起与远程主机的PPP链接,且远程主机能够分配链接内本地主机和远程主机两者或两者之一的IP地址,则可以采用此类型。
要求动态获得串行线,串行线可共享。
要求由本地主机发起链接。只有手工执行相应指令后,此链接才被启动。
识别本地及远程主机的IP地址可任由本地主机或远程主机指定。
php爱好者站 http://www.phpfans.net Linux|Apache|IIS.
#make dev;make clean;make zlmage;
若系统最后提示新的内核存在于/usr/src/linux/arch/i386/boot中则表示编译内核成功
若是提示“内核太大了”等内容时,可以接着键入
#make bzlmage 以生成一个压缩的核,通常这样做就行了。
随后就是安装模组了
make modules
make modules_install
#depmod -a (为模块建立正确的依赖关系 )
通过察看/etc/lilo.conf 来知道你的Linux用哪个目录的那个文件作为image目录。
例如: image = /boot/vmlinuz
将 /usr/src/linux/System.map 复制到 /boot 目录中。
将 /usr/src/linux/arch/i386/boot/zImage(或bzImage)新核心制到 /boot 目录中,
执行Lilo后以新核心重启你的计算机。
技巧提示:保留旧的核心
你在未能证实新核心可以稳定运行之前保留旧的核心是个好主意。推荐的做法是:
在解压新核心之前将/usr/src下的linux 更名。(如改为linux.old),然后创建一新空目录,
如linux2.2.14
然后用ln -s linux2.2.14 linux为其创建一个linux的符号链接。
之后再解压原始代码包,这样做的好处是在你以后的核心更新中,只要简单地更新符号链接就可以了,并且永远是有效的/usr/src/linux目录名。
在将新核心复制到/boot之前为其取一个代表性的可记忆的新核心名,如取成vmlinuz.ppp.2.2.14
然后编辑 /etc/lilo.conf,修改后的 lilo.conf 如下:
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt timeout=50
default=linux
image=/boot/vmlinuz
label=linux
root=/dev/hda1 read-only
image=/boot/vmlinuz-2.2.14
label=linux214
root=/dev/hda1 read-only
other=/dev/hda2
label=dos
table=/dev/hda
别忘了执行#lilo ,然后系统提示以下信息:
Added linux * Added linux214 Added dos
#reboot
当执行lilo命令时,系统将加入另一个新的可引导的核心,若你在系统引导(即出现lilo时)忘了新核心的名字,可以用按tab键来显示所有可启动的项,由Label定义.
ok,现在你就已经多了一种选择了,这样当新核心不能引导或不正常时可以随时用旧核心。
推荐您使用英文原版的Rad Hat6.2发行套件,因为用它来敲敲打打我的核心很是得力。但相对来说,那些标榜xx核心汉化技术,世界第一的所谓中文linux套件,在重编译核心时都会或多或少的遇上麻烦。对于它们,我只取其可取之处,如独立的中文处理包。
(关于核心的更多信息可以参见第6节中的相关文档)
安装、配置和启动pppd软件包
通常现行的linux发行版中都包含了pppd软件包,如果你没有这些包或你想用另一类的pppd工具包,推荐你下载和使用mgetty软件包,该软件支持数据和传真功能。而Linux自带的getty不支持传真功能。它可以在freesoft.cei.gov.cn 上取得,现以mgetty为例,作具体说明。
注意:对于不同的PPP软件包,其具体配置存在着一些差异,通常的做法是,查看相应的手册页或Readme文档。
验证mgetty软件包:
如果你在相应目录下找不到文件如/sbin/mgetty, /etc/mgetty+sendfax/login.config,则你需要安装 mgetty RPM包。
配置mgetty软件包:
现假设你用COM1与COM2来接收外来的拔号,其上各外挂一只Acer 56 Surf Modem。对Modem的配置可以参见“小资料:LINUX下如何配置MODEM”。同样假设现已将其设为自动驳接外线呼叫。
1、在/etc/inittab文件中加入以下二行:
s0:345:respawn:/sbin/mgetty -a -m "" ATS0=1 OK -D -x 3 ttyS0 vt100
s1:345:respawn:/sbin/mgetty -a -m "" ATS0=1 OK -D -x 3 ttyS1 vt100
参数说明:
id:runlevel:action:/sbin/mgetty [options] line [speed [term [lined]]] .
上句中各种参数以‘:'来分隔。各参数的具体意义为:
345:指明它是在哪一个runlevel下调用该行,一般23足够了,也可以写成2345.
runlevel 2 : 不带NFS支持的多用户模式
runlevel 3 : 普通的多用户模式
选项 -a: 波特率自动适配.
-m: 传送给串口设备/dev/ttyS0的初始化字符串,这里的是AT命令,设置modem在震铃一次后,接通. mgetty等待设备/dev/ttyS0返回的OK字符串,进入下一步处理.
ttyS0: linux中对串口定义的设备文件名:/dev/ttyS0 对应COM1; /dev/ttyS1 对应COM2;
vt100设置终端的类型
然后,运行 /sbin/init q 让改动生效。
2、配置mgetty的配置文件:
在/etc/mgetty+sendfax/login.config文件中,去掉含有AutoPPP的一行的行头的注释. /AutoPPP/ - a_ppp /etc/ppp/ppplogin
其中: /AutoPPP/是登录与/dev/ttyS0相连的mgetty生成终端的用户的终端名, a_ppp 是基于/dev/ttyS0的物理连接上的PPP连接的连接名.
3、修改/etc/ppp/ppplogin 文件:
/etc/ppp/ppplogin 是登录以后自动运行的脚本(script)文件,例如:
#!/bin/sh
if [-f /etc/ppp/options.$TTY];
then exec /usr/sbin/pppd
else
exec /usr/sbin/ppd -detach
fi
或者只需简单的添加以下的行到/etc/ppp/ppplogin中:
#!/bin/sh
/usr/sbin/pppd auth -chap +pap login
注:参数login表示用/etc/passwd中的用户名和密码进行PAP认证.
而如果你不需要在拨入后做用户名和密码验证,只要去掉参数auth即可。
然后保存文件,且给它执行权限 :
chmod +x /etc/ppp/ppplogin
4、现在改动/etc/ppp/options 文件,象下面:
-detach
modem
lock
crtscts
asyncmap 0
netmask 255.255.255.0
proxyarp
mtu 296
mru 296
ms-dns 192.168.10.25
注:192.168.10.25 是我的LAN上的一台DNS服务器,192.168是通常的LAN设置,至于采用10.25而非0.1则是因为10.25是我的生日,这样对我来说好记些且有自已的个性标志。如你没有可不设,你可以给拨入用户自动分配DNS。
附注:mtu/mru 两行设定建立PPP连接后,传输的包的尺寸,这里用296(256+40),也可以设为552(512+40),40代表空的没有任何数据的包的大小,设为比较小的值是为了假如一个PPPD进程建立后要传输很大的文件,可降低每个包的尺寸,以防其它的进程速度变慢,尽管减少了传输的每个包的尺寸,但不影响总体传输的速度。你也可以不设这两行。
5、创建另外两个文件/etc/ppp/options.ttyS0 和 /etc/ppp/options.ttyS1
(后缀与相应的串口对应,为每一个串口定义不同的PPP连接参数):
刚开始可以在每个文件中各自加入以下的行, 其它的都注释掉.等调试通过后,再根据需要加入相应的参数.
# more options.ttyS0
192.168.10.3:192.168.10.242
# more options.ttyS1
192.168.10.3:192.168.10.243
注:192.168.10.3是我这台Linux 服务器的IP地址,
而192.168.10.242和192.168.10.243是我指定给拨入用户的两个PPP地址。
现提供一个仅供参考的配置文件:
# more options.ttyS0
asyncmap 0 netmask 255.255.255.0 #Local IP : Remote IP 192.168.1.100:192.168.1.101 lock noauth crtscts modem -detach debug proxyarp
6、至于/etc/ppp/pap-secrets,你可以加入下面的行:
* * "" 192.168.10.242 * * "" 192.168.10.243
到此为止, 设置完成。
溅了这么多的口沫,听起来似乎很烦,其实在实际操作中,只要三下五除二,一下子就搞定了。
呵呵,祝你好运。
启动pppd软件包
只要您成功地安装与设置了PPP包后,要启动PPPD只要在任意时刻键入pppd就行了。我通常是在机器启动时就启动它。
现以TurboLinux中文版4.0为例做个简单说明:
#turboservice
只要选中pppd一项,你就可以让机器在下次启动时自动运行pppd服务了。
对于RH及与其兼容的发行版本来说,这个命令就是使用setup,然后选用“系统服务”一项。
我不知道为什么会使用不同的命令名! :-(
小结:
在mgetty中的一些重要的相关文件:
/sbin/mgetty
/etc/mgetty+sendfax/login.config
/etc/inittab
/etc/ppp/ppplogin
/etc/ppp/options
/etc/ppp/options.$TTY(其中,$TTY的值为你所用的串行接连端口号)
/etc/ppp/pap-secrets
用户拨入成功建立PPP连接后,如果你需要访问LAN上其它服务器,那么你必须打开该PPP服务器的IP转发功能,echo 1 /proc/sys/net/ipv4/ip_forward .
如你需要在空闲一段时间后自动解除连接,如20分钟,那么加入idle 1200到/etc/ppp/options。
高屋建领:PPP链接配置的类型与特点
链接配置有四种类型:
专用型链接。
动态输入型链接。
动态输出型链接,透明起动。
动态输出型链接,手工起动。
各种链接各有不同的特点和其最宜的应用环境,系统中PPP的链接配置的数目和内容取决于系统预期的PPP通信类型。这些文件可手工编辑,也可以利用相应的工具来完成设置。
专用型链接的特点。
此配置要求用一条专用串行线链接一台远程主机,包括两个建筑物之间的租用线和链接两台PC间的串行电缆等。
要求将一条串行线专门用于一个PPP链接。
允许本地或远程主机发起链接。
必须由本机指定本地及远程主机的IP地址,远程主机必须接受这些地址。
注意:
如果远程主机必须分配IP地址,则需使用动态类型的链接配置。
对专用型链接要使用非modem控制的串行线。
动态输入型链接。
当需要在动态获得的串行线上接受远程主机的链接请求时,可以采取此类型。
要求动态获得串行线,串行线可共享。
要求由远程主机通过注册程序发起链接。
用于识别本地及远程主机的IP地址可任由本地主机或远程主机指定。
动态输出型链接,透明起动。
如果本地主机通过动态获得的串行线发起与远程主机的PPP链接,且本地主机能够分配链接内本地主机和远程主机的IP地址,则可以采用此类型。
要求动态获得串行线,串行线可共享。
要求由本地主机发起链接。当出现传往远程主机IP地址的IP包时,此链接将自动启动。
要求本地及远程主机的IP地址必须由本地主机指定,由远程主机接受。
动态输出型链接,手工起动。
如果本地主机通过动态获得的串行线发起与远程主机的PPP链接,且远程主机能够分配链接内本地主机和远程主机两者或两者之一的IP地址,则可以采用此类型。
要求动态获得串行线,串行线可共享。
要求由本地主机发起链接。只有手工执行相应指令后,此链接才被启动。
识别本地及远程主机的IP地址可任由本地主机或远程主机指定。
php爱好者站 http://www.phpfans.net Linux|Apache|IIS.
相关阅读 更多 +