|
|||||||||||||||||||
Linux作PPP接入服务器
一、关于本文
与通常的Linux ppp相关文档(如Linux ppp Howto等)不同的是,本章的目的是让你能够从自己实际的应用需求出发,以尽量短的时间来完成系统方案的预算,拟定并尽快实施。由于本章尽量通过雅俗共赏的语句,并采用了详尽的"实例操作日记方式"成文,因此,无论您是一个发烧的玩家,小IT部门主管或企业级ITO,通过阅读本章,都应该能让你的ppp 服务器跑起来。但请注意,如果您需关注更多的ppp相关细节。请浏览“资源”一节内提供的文章链接。
另外,因为市面上的硬件及通信环境的不同,所以文中的一些数据虽然是我在测试中的真实数据,但或许并不与您的实际相符。 鉴于当前IT通信手段的不断变迁,虽然在作者编撰本文时尽力介绍当时最流行的硬件与软件解决方案,但或许它会很快过时或已经过时了。同时,作者也不能保证本章中不留有任何错误,因此,如果你有更好的解决方案或发现了其中的任一错误,都请不吝赐教于作者本人,以使能在下一版本中更新与排错。谢谢!
二、我在什么时候需要ppp?为什么选择Linux下的ppp?
感谢这世上有个LINUX,它与UNIX相比倒也没有什么特别之长处。使用它仅是因为它是免费的,于是能用省下来的钱(可以省好几万RMB/每份UNIX授权费用)用来购置好一点的服务器,这真是我等福音。同时实践也证明,用LINUX在有自身技术支持下,尽可放心一用。 有这等好事,你又何乐而不为呢?
PPP(点对点协议)是在直接连接的串行链路上(例如空调制解调器电缆)上创建和运行IP(网际网协议)和其他网络协议的一个方案。一个直接连接的串行链路,包括通过telnet建立的链路或者是一个用调制解调器和电话线路(当然也包括诸如ISDN之类的数字线路)链路。 (以上取自宫敏博士的译文) 通过实例操作与实践应用,我们可以这样来理解PPP: ppp是一种协议,它是基于流的计算机联网工具,它确定一端到另一端之间(能且只能控制两端)数据的传送与控制的规则。它提供在串行线上传送和接收IP数据包的功能,由此可使TCP/IP网络应用程序(如rlogin和telnet)在串行线上的使用。一般来说,PPP常用于将家中或小型办公室的PC连到另一工作地点的计算机或连到提供Internet服务的(ISP)计算机以便进行文件传输,远程注册,访问WWW及其它的TCP/IP或Internet功能。
使用PPP的原因是因为本地主机和远程主机之间无法实现以太连接或令牌环连接,但可以采用串行线连接。这两端之间可以用调制解调器(专线或拔号方式)或直接线性相连。这样的连接方式决定了他的优点与劣根,优点是原理简单,连接方便且能满足部分应用需求,但是先天不足之处,正是它的非广播性与蜗牛般(相对而言)的速度。同时,PPP仅支持异步通信。
当然,除了PPP以外,SLIP也可用于串行线通信。在此并不想讨论PPP与SLIP之间的差别。
上面提到的一些术语:
连线(line):指串行线,即数据传输所经过的物理介质。
链接(link):指PPP链接,即数据传输所经过的两台主机之间的虚拟连接。
接口(interface):指PPP接口,即IP驱动程序由数据报所经过的抽象实体。
1.无多端口卡
如果你不打算同时使用超过2条的ppp连接线路,那就相当简单,你只要准备一至二个调制解调器以及他们各自的与电脑的连接线即可,若需通过公用电话交换网,则还需再加上一至两条能拔通ISP或对方pppserver的电话线(包括ISDN等),如果两个pppserver之间距离较近(实践证明此数值应短于5OM),那么,你还需要另外的一些连线。
连线?连线!救救我,我糊涂了。
是的,在此有必要说说那些连线。
我们在购置modem时,包装盒内会有一条必要的与计算机之间的连线(如果是内置式的则没有).虽然现在厂家的服务工作已经为你想的比较周到了,(如现在普遍用一端是双接头线9孔和25孔的串行端头,另一端则是固定的连接modem的9孔或25孔的串行端头),但不幸的是,你的那条较老的连接线并不适用于你现在的实际情况,(顺便提及:现在市面上有一些淘汰下来的,当初都卖151美元的旧式14.4kbps的外置调制解调器,经我试验,效果不错,但他们都没有提供那条线。),这时你作为一个标准的DIY,拿起焊枪,自己焊一条吧。
具体的modem与pc之间的端口连线焊接图见下所示:
| PC机9针串口 | 1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
| MODEM25孔接口 | 8 |
3 |
2 |
20 |
7 |
6 |
4 |
5 |
22 |
| PC机25针串口 | 2 |
3 |
4 |
5 |
6 |
7 |
8 |
20 |
22 |
| MODEM25孔接口 | 2 |
3 |
4 |
5 |
6 |
7 |
8 |
20 |
22 |
注:在LINUX下,2、3、7、8、20针是必须的。也可以用市场上现成的平行联结线,即1-25针各各相联。
而pc与pc串口间的直接连线焊接图示意如下:
| PC机9针串口 |
|
2 |
3 |
4 |
5 |
6 |
7 |
8 |
|
| PC机9针串口 |
|
3 |
2 |
6 |
5 |
4 |
8 |
7 |
|
| PC机9针串口 |
|
2 |
3 |
4 |
5 |
6 |
7 |
8 |
|
| PC机25针串口 |
|
2 |
3 |
6 |
7 |
20 |
5 |
4 |
|
| PC机25针串口 |
|
2 |
3 |
4 |
5 |
6 |
7 |
20 |
|
| PC机25针串口 |
|
3 |
2 |
5 |
4 |
20 |
7 |
6 |
|
顺便提及: 并口与并口之间的直接连线焊接图示意如下
| PC机25针并口 | 2 |
3 |
4 |
5 |
6 |
10 |
11 |
12 |
13 |
15 |
25 |
| PC机25针并口 | 15 |
13 |
12 |
10 |
11 |
5 |
6 |
4 |
3 |
2 |
25 |
再顺便提及:如何接连DDN线路中的路由器与交换机、交换机到网卡(以10M网为例)的连线:
有时需要自已动手做这样的连线,图示意如下
| 路由器(RJ45) | 1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
|||
| 交换机(RJ45) | 3 |
6 |
1 |
4 |
5 |
2 |
7 |
8 |
注:路由器到交换机、交换机到网卡的连线是相同的。
小资料:LINUX下如何配置MODEM |
| 可以使用Linux图形界面下的相应工具(如minicom等)来测试modem并将其设置为你所想要的状态。 如果你实在厌倦了在网上东找西找这样那样的程序时,有一个几乎在所有的UNIX或LINUX中都被包含的指令,那就是cu,用它来配置modem是再简单不过了,键入以下的字符: cu -l /dev/cua1 dir (用你的实际的moden端口号代替其中的cua1) 当屏幕出现“Connected”后通常可以用如下的指令,一般的回应为‘OK’,除非你屏蔽了其本地回应功能。以“~.”退出设置:
|
2.使用多端口卡(multi-port serial cards)
如果你需要二个以上的串口来设置你的pppserver,一种经济的办法是添置多用户卡(通常的称谓)。此类型卡通常每片支持8个端口或16个端口,依其是否带有独立CPU又可分为智能卡与非智能卡两类。在国内的大多行业中几乎都使用我国宝岛台*生产的“瑞旺”多用户卡,在本文就以“瑞旺”的"PE-518E"型号为实例参照。(每片120元,9600bps通信速率、ISA总线、全长型、非智能型8端口卡)。说实话,这种卡如今是仅能供教学之用了,如果你有其他更适宜的适配器资料,请别介意告诉我。
要安装和使用此卡,首先是打开你的非超薄超小型机箱,找到一个ISA插槽,取下后档板,垂直均匀用力插好,上好螺钉,盖上机箱......(一个标准DIYER应一气呵成的标准 )。如果你的实际情况不符合其中的任一款,我推荐你使用另一款多用户卡,xxx,PCI总线,手掌般大小,带一个80386CPU的智能型32端口用户卡),将modem架上的各种连线接至各个端口后,硬件连线算是完成了。
然后在主板BIOS中屏敞掉原先的IBM标准串口com1和com2.
启动你的Linux核心(单用户模式)。
喔,说明书上只提供SCO lINUX下的配置方法,而那些命令(mkdev等)你又无法在Linux下找到和使用, 这时你得这样
在核心中加入该卡的支持。(记住,对于智能卡,一定要有LINUX下的驱动)
必要时,你得手工激活各个端口,然后再重新启动后测试一下。
技巧提示:自制端口测试器 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 对于扰人的多用户卡,有时你时常分不清到底是设备故障,还是线路有问题,这时一个简单的办法是用自已焊的串行端口测试器来为其下定义。 道理其实很简单,稍对串行端口的管脚定义研究一下(由于多端口卡以25针RS232C为最常见,所以在此以其为例,读者可以举一反三,制作出更多更适合于你的测试器)
附注:
如果仅仅为了测试该端口是否有效,那多只需将一个独立的适宜插拨的25孔D型适配器的第2脚与第3脚直接相短接就可以了。 就这么简单。
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3.ISP的资料暂缺
ppp相关软件准备就绪
本节介绍了你在架设pppserver之时所必须做的前奏,包括核心配置与软件支援。软件支援包括安装pppd 配置pppd和启动pppd.
当你对手头上的硬件了如指掌之后,你将发现,以后的旅途着实轻松舒适 。通常,你只要配置一次核心就可以了。
如何知道我的核心支援PPP?
在启动时,你的 Linux 核心会印出大量的讯息.如果核心支援 PPP 的话会包含此一讯息. 要观看这些讯息的话,看看你的系统记录档或用 dmesg | less 指令将这些讯息显示在萤幕上. 如果核心支援 PPP 的话你将会看到像这样的几行
PPP Dynamic channel allocation code copyright 1995 Caldera, Inc.
PPP line discipline registered. (这是 Linux 2.0.x 系列核心的讯息).
如果你没有以上的类似信息,那么你就要编译Linux内核。当然你首先得要有Linux内核的源代码。你可以在以下的站点上找到:
http://www.freshmeat.net/ Linux软件的速递中心.
freesoft.cei.gov.cn 中国自由软件库
http://www.linuxhq.com/ Linux的大本营
(下载时选用离你最近的镜像站点,而不要仅局限于上述的这几个。)
本文截稿时止,Linux的最新内核版本是2.2.14。 Linux内核的源码一般有两种形式:全部源码和Patch。使用全部源码,一般可以直接编译,如果是使用Patch,那么要注意了:你要知道你现在的内核的版本,然后要下载现在内核到最新内核的全部Patch。举个例子,如果你的内核版本是2.2.10,要升级到2.2.14,需要依次下载2.2.11,2.2.12一直到2.2.14的所有Patch,一个都不能少!
注意:如果你下载的是Patch,要按照版本号,由低到高,依次解开Patch。
#gzip -cd patch-2.2.11.gz | patch -p0
#gzip -cd patch-2.2.12.gz | patch -p0
#gzip -cd patch-2.2.13.gz | patch -p0
#gzip -cd patch-2.2.14.gz | patch -p0
当然,在编译之前,你还需要准备好编译环境: MAKE,EGCS。
在将核心解压至系统默认路径前,请检查 /usr/src/下面是否有 linux 符号连接。如果有,那么移去它.再建一个新目录linux2.2.14;
并建立一个linux符号连接到你的Linux2.2.14新内核目录。
现在假设你已将核心用我们那可爱的NETANTS下载到win95分区并已在Linux中执行了
#mount /dev/hda1 /mnt/win;
#tar zxvf /mnt/win/linux2.2.14.tar.gz -C /usr/src
#cd /usr/src/linux
#make menuconfig
当然运行这个指令仅是因为我喜欢这种折衷的界面显示方式。固然,你若喜欢纯字符界面方式可以选用make comfig,(不过当心,此命令方式无go back功能,一旦选错了得ctr-c后重来) 若你已配置好x-windows,那么你可以在x的shell中运行make xconfig 来配置核心。
在ppp(point-to-point)support(CONFIG-PPP)中选择Y或M.
如果你使用了模块,那么还需要生成和安装模块——虽然这是可选的,但是为了减少内核的存储空间,通常人们会使用模块。
其实你在配置核心级的ppp支持时你应该想得更多。 若你要把ppp server 兼做网关时还需IP forwarding的支持,同时还需考虑网络的安全得加入IP firewalls的支持。 若你明确的知道你的modem所支持的协议和另一些附加的功能(但或许并有通用),你可能还有必要添加一些额外的支持来优化整个系统。前提是你清楚的知道你正在做的是什么!
当你觉得所有必要的功能被添加或按需做成模块后,可以试着运行如下指令:
#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后以新核心重启你的计算机。
技巧提示:保留旧的核心 |
你在未能证实新核心可以稳定运行之前保留旧的核心是个好主意。推荐的做法是:
推荐您使用英文原版的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 \r\n OK\n' -D -x 3 ttyS0 vt100
s1:345:respawn:/sbin/mgetty -a -m '"" ATS0=1 \r\n OK\n' -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地址,则可以采用此类型。
动态输出型链接,手工起动。 如果本地主机通过动态获得的串行线发起与远程主机的PPP链接,且远程主机能够分配链接内本地主机和远程主机两者或两者之一的IP地址,则可以采用此类型。
|
五、PPP DIYER
本节假设你已经阅读了前面的章节,并想对号入痤,架设一个自己的PPP服务器或启动相应的PPP应用。
并且,本节亦假设你没有出于以下的考虑:
实例一:HOME LINUX PC 普通电话线拨号上网
见图:

毫无疑问,首先了解PPP客户端的设置对于了解PPP的整个流程是很有帮助的。很难想象你仅会设置服务端而对客户端竟一无所知。 更何况,这其中包括了一些基本知识,本章中的所有实例是按照从易到难的顺序排列的。 FOLLOWING ME,看看青菜虫是怎样羽化成蝶的。
现在假设:
先确认你的硬件连接无误,并且引导了一个已支持PPP的LINUX核心,另外,操作系统也已正确识别出了你的串行端口。那么只需简单地进行如下操作,我保证,5分钟后你将畅游在INTERNET的海洋中。
1.用MODEMTOOL为MODEM的具体端口创建一个/dev/modem的符号连接。 这一步也可以不做。只是你在选择端口时用具体的来代替。如/dev/cua0-->COM1;/dev/cau1-->COM2.
2。此时可以用2个工具来配置你的拨号连接。一是利用KPPP应用程序(现在你应该可以跑XWINDOWS吧),另一就是利用netcfg来配置。
首先以最简单、直观的KPPP(有的发行版本中为PPPTOOL)程序为例做详细解答说明,现假设你正以ROOT身份使用KDE,那么你可以这样:
新建拨号连接
启动PPPtool后,双击“新建拨号网络图标”

即出现新建拨号向导窗口

输入一个标识名后,点“确定按钮”

选择modem 端口和最大连接速率。注意:要根据你的modem所在的串口号来选择,如modem插在COM1上,则选择/dev/cua0,COM2则选择/dev/cual,以此类推。/dev/modem是一个符号链接,除非你已建好正确链接,否则不要选。

再点击“下一步”,出现如图4所示的窗口,输入拨号服务器号码,用户名和口令,点“下一步”,再点“结束”按钮。

现在拨号网络的窗口中就出现了新建的拨号连接,如图6。

查看拨号连接属性
在新建的拨号连接图标上双击或点右键选择“查看”,出现如图7所示的窗口,这是一个tab窗口,有三个页面,分别用来设置基本参数(图7),拨号选项(图8)以及TCP/IP属性(图9)。

“基本”参数页中的选项是刚才新建连接时设定的。

“连接选项”页中的选项一般不会用到,保留缺省值即可。

“TCP/IP”页中的“域名服务器”一栏需要设置,其余一般不用改动。

拨号
在要拨号的拨号连接图标上点击右键,选择拨号,出现如图10所示的拨号状态条,同时modem应发出一阵嘈杂的声音。大约半分钟之后,出现图11所示的对话框,表示连接成功。

如果拨号失败,一般原因可能有以下几种:
(1)账号口令有错,
(2)电话线忙,
(3)对方拨号服务器忙,没有及时响应。
注意:PPPtool只能由root运行,如果你是用普通用户启动的X,请在终端窗口中su 成root再启动PPPtool。
网络连通后,你可以启动Netscape,体验一下冲浪的激情吧。
再次我们也可以用netcfg来进行PPP客户端的设置。
建议各位LINUX老手使用这种方式,因为它更强大和灵活,如稍后的进阶中就得用到它。
首先启动Red Hat(或标榜为Red Hat 100%兼容)的netcfg工具,执行如下步骤:
1、如果你还未为自己的主机指定主机名,点击Hostname:文本框,并在其中输入主机名。
2、在Domain:文本框中,输入你的ISP的域名。
3、保持Serch for hostnames in additional domain:文本框为空,并进入它下面的Name servers:文本框,在它上面输入你的ISP提供的DNS服务器的IP地址,(每行输入一个)。
4、点击窗口底部的Add按钮,此时会弹出另一个窗口,选择PPP的接口类型,并点击OK,此时接口类型的窗口将会关闭,并且弹出一个题为Creat PPP Interface的窗口,此时,你得确保没有陌生人在旁,因为在接下去的操作中你的口令是明文显示的。
5、在Phone Number中输入ISP的电话号码。
6、 过Use PAP Authentication按钮,除非你的ISP需要它。在PPP Login name 和PPP Passwd:中输入合适的信息。
7、当PPP信息输入之后,点击Creat PPP Interface底部的Customize按钮,此时将打开Edit PPP Interface。
8、确保Use hardware flow control and modem lines以及Abort connection on well-known errors同被选中。 不要选择Escape control charaction以及Allow and user to (de) activate interface选项。
9、在Line Speed :中输入MODEM的速率,一般选择115200bps。
10、在Mordem Port:中选择相应MODEM的串行端口。如/dev/ttyS1。
到此为止,硬件已经配置完成。接下去可以开始处理配置的网络特性了。
点击Edit PPP Interface窗口中的Networking按钮,根据你的实际需要,选择一些内容。
对于MRU栏可以先不去动它。
在Edit PPP Interface窗口中的最后两个选项用来指定你的IP地址和你的服务器的IP地址。如果你也是象我一样是使用动态的IP地址,现在也可以不用去管他。
小技巧:关于PPP 拔号的一些常用技巧 |
| 用脚本可以大大简化你的日常操作,你可以编辑以下的脚本: vi up-163
chmod 777 up-163 cp up-163 /usr/sbin/. 同理,你可以再编辑一个自动挂断该连接的脚本。 vi down-163
chmod 777 up-163 cp up-163 /usr/sbin/. 如果要让非ROOT用户也能使用该连接,只要相应设置权限就行了。 这也不失为一种解决多用户使用的好方法。 因为实际上,你的机器并不只你一个人在使用,你不大可能告诉他们那个宝贵的ROOT密码吧。这时除非你对你的子女或下属的上网一直进行着监督,否则你就得对PPPD进行设置以使非ROOT用户也能按需拨号。 ROOT以外的用户有两种方法可以用来建创PPP连线。 一种是setuid方式,另一种是使用sudo。据说使用sudo的方式可能会更安全,我没有去实证过。 对于setuid方式,你只需以root身份发一条指令:chmod u+s /usr/sbin/pppd; 而对于后一种, 只要使用sudo命令就可以了。 无论怎样,你也许都会面临这种情形:即你允许一部分用户启动PPP连接,而除此之外的用户你都不希望他们自做主张地启动PPP连接。 这时你得建立一个PPP的用户组(group). #vi /etc/group 将授权的信任用户加入到PPP组中去。 然后发出下面的指令: chgroup ppp /usr/sbin/up-163 chgroup ppp /usr/sbin/down-163
|
实例二:HOME LINUX PC ISDN拨号上网

有了上例的知本,现在你只需在此例中添加ISDN支持模块就可以了。
(现在比较热门,想说得详细些)
为什么选用ISDN?
ISDN要比电话线拨号上网的带宽大,因此就冲这一点,中小型企业都乐于通过它共享上网,这是非常合适的一种途径。此外,它在性能与价格方面,作了个折中的选择。因此,ISDN在国内的应用越来越多。同时,Linux在共享上网方面的优势是Windows所无法相比的,它的IP改装技术尽管还处于开发测试阶段,但其效率远远高于普通的Proxy软件。本例介绍怎样通过一台Linux机器,配置ISDN,利用Linux的IP改装技术,使得所有局域网用户共享上网。
ISDN上网的必要设备
现在国内用在ISDN上网的设备有很多种,没有任何厂商声明支持Linux,但是Linux已经可以支持大多数ISDN设备。
这里介绍外置的ISDN网络适配器。对于这种配置,一方面是因为这是电信部门的推荐配置,另一方面也是因为笔者一惯对外置的设备青眼有加。这样的选择可以少很多麻烦。(虽然,这样那样的外设在我硕大的工作台上占据了很大部分的空间)
以下介绍如何使Linux识别此设备,并使之拨号上网。
基本原理
ISDN 上网与我们常用的Modem拨号上网类似。在Linux下甚至可以把此设备模拟成Modem设备,所不同的是ISDN可以使用同步PPP(synchronous PPP),而Modem拨号一般使用异步PPP(anonymous PPP)。对于这两种拨号方式,邮局或ISP采用不同的接入设备。
尽管ISDN可以模拟成Modem进行异步模式的拨号,但一般只是用来测试S0卡是否运行正常,真正在上网时通常要用同步PPP拨号模式。
所需软件包
ISDN的Linux内核配置
内核需要重新配置:
〈*〉ISDN support [*]
Support synchronous PPP 〈M〉
Hisax SiemensChipSet driver support [*]
Hisax Support for EURO/DSS1
[*] Hisax Support for teles 16.3c
识别此设备成功的标志
如果已能成功识别,那么在/var/log/messages中会显示如下信息:
# tail /var/log/messages
......
Dec 10 10:44:45
L-server kernel:
Hisax: 2 channels added Dec 10 10:44:45 L-server kernel:
Hisax: module installed
Isdn4Linux的安装与配置
下载软件包并解包到一个目录,首先“make menuconfig“进行配置,然后执行“make; make install”。 这个软件包包含了很多为ISDN作的应用程序,在编译时很容易遇到问题(因为有的软件包要依靠一些特殊的函数库)。但是这问题不大,你只要保证isdnctrl这个程序能够顺利编译并安装就可以,遇到其他编译不过的程序,可以通过“make menuconfig”把它去掉,留待以后再编译。 要注意的是有的Linux版本不包含ISDN设备,可以用“ls/dev/ttyI*; ls/dev/ippp*”查看,若没有,要执行scripts目录下的“makedev.sh”,加入ISDN设备。
同步PPP的配置
有了上面的努力之后,就可以进行最后关键的同步PPP配置了。 现在国内的PPP都是动态分配IP,为了确保你的Linux支持动态IP,请键入:
# echo 1 〉/proc/sys/net/ipv4/ip_dynaddr 编辑一个名为isdn-on的文件,用来初始化ISDN设备,内容如下:
MYUSER=aaa # 在邮局或ISP的账号名
REMNAME=public # ISP的名字
MYIP=0.0.0.0 # 待分配的动态IP
REMIP=202.101.103.82 # 邮局的接拨服务器地址, 若不清楚,请填0.0.0.0
MYMSN=2117039 # 我的电话号码
REMMSN=163 # 邮局的拨号号码
/sbin/isdnctrl verbose 3
/sbin/isdnlog -sS -v1 -m0x17d7 -l0x3d7 -C/dev/console-D/dev/isdnctrl
/sbin/isdnctrl system on
/sbin/isdnctrl addif ippp0 # 产生ISDN网络设备
/sbin/isdnctrl eaz ippp0 $MYMSN
/sbin/isdnctrl addphone ippp0 out $REMMSN # 拨号号码
/sbin/isdnctrl huptimeout ippp0 90 # 90秒无人使用 ISDN后自动挂断
/sbin/isdnctrl l2_prot ippp0 hdlc
/sbin/isdnctrl l2_prot ippp0 trans
/sbin/isdnctrl encap ippp0 syncppp # 支持同步PPP
/sbin/isdnctrl dialmode ippp0 auto # 拨号设置成自动模式,即有IP请求就自动拨(dial-on-demand),也可以设置成manual,即手动拨号。
/sbin/ifconfig ippp0 $MYIP pointopoint $REMIP
/sbin/route add $REMIP ippp0
/sbin/ifconfig ippp0 -arp -broadcast
/sbin/ipppd user $MYUSER remotename $REMNAME
\ noipdefault
\ ipcp-accept-local
\ ipcp-accept-remote
\ name $MYUSER
\ -detach
\ mru 1500
\ mtu 1500
\ lcp-restart 1
\ defaultroute
\ /dev/ippp0 &
/sbinroute add default gw $REMIP
在/etc/ppp目录下,创建三个新文件:
1. ioption内容为空。
2. pap-secrets # 格式 账号名 * 密码 # 例子 # aaa * passwd
3. chap-secrets # 格式 账号名 * 密码 # * 账号名 "" # 例子 # aaa * passwd # * aaa ""
根据例子填入自己的账号名和密码,由于包含密码,所以要限制读写权限:
# chmod 600 pap-secrets
# chmod 600 chap-secrets
完成以上内容后,就可以尝试拨号上网了:
# sh isdn-on #/sbin/isdnctrl dial ippp0
# ifconfig
大约四秒钟就可以完成拨号,在ifconfig中可以看到拨号后的网络设备ippp0,以及它的端对端IP地址。 接着核对路由表,请注意缺省路由一定要指向端对端连接中的远端IP地址。如果没有此项,请手工加入缺省路由:
# route add default gw 202.101.103.81(xxx.xxx.xxx.xxx)
注:以上部分非本人撰写,稍后我将用自已的文字代替它。
--------------------------------------------------------------------------------
实例三:带动一个局域网上网
见图

典型应用:为一个使用WIN95对等网的营业性网吧设立一台性能稳定的LINUX PPP 代理服务器。
=========================================
1999年12月19日,19:00,是夜,天干物燥,寒气袭人。我骑上自行车,带了数套LINUX发行版,如约前往逍遥网吧,为其架设LINUX代理服务器,与老板寒喧几句后工作正式开始了:
粗粗查看了一下该机的硬件配置后,没有发现异常情况......
三下五除二,LINUX的X界面已经启动了。
按常规,我喜欢为具体的机器具体的应用配置最适宜的内核。于是顺手打入了make xconfig;
所幸的是,核心在对他的ISDN外置适配器的支持上不成问题,我窃喜我今天可以早点休息了。
(有了前几例,以下的命令应该不会陌生)
make dev;make clean;make bzImage
make modules;make modules_install;depmod -a
cp /usr/src/linux/System.map /boot/.
cp /usr/src/linux/arch/i386/boot/bzImage /boot/xiaoyao_linux2.2.14
vi /etc/lilo.conf ......
lilo
reboot
.......
login:root
passwd:notisthis
netcfg ......
呵呵,顺利连入INTERNET。试了试下载速度,嗯,12kb/s,还过得去。
在设置代理服务器之前,出于习惯,我还是敲了敲以下的字符:
ifconfig ppp0
pppstatus nslookup
>exit
nohup squid &
然后跑到(不用走的)windows客户机处,右键点击IE的图标设置连接属性,选中通过代理服务器访问INTERNET,在HTTP的代理服务器中填入LINUX机器的IP地址,端口号就是那个默认的3128吧。试试浏览,一切OK。
跑回来,索性将squid加入到启动列表中了......
reboot,重新验证无误后,老板请客吃宵夜。
小技巧:如何让LINUX PPP SERVER回拔WIN机器? |
| 有时,为了节约内部员工的费用,当LINUX PPP SERVER空闲时(如晚上的利用率很底)能回拔员工的WIN机器。 如何让Linux服务器回拨Windows PC上网? 作者: 吴阿亭 ( August 19, 1999, 05:01 PM ) 概述: 在公司局域网上有两台Linux server,一台服务器用ISDN上网(2B) 让整个局域网上用户共享。(已在另一篇中介绍过),另一台通过上网,并在这一台上连一个modem到ttyS0,向家里的windows PC回拨,以便让家中的windows PC上网。 服务器取名:一台用ISDN拨号上网的服务器取名为 isdn,局域网上另一台 Linux server取名为sh3. 所用软硬件:Redhat Linux 5.2( kernel:2.0.36-3 )(isdn) Redhat Linux 6.0/5.2 (sh3) 两个USR external 56K modem(sh3 and windows PC) (通常所说的黑猫) 实现步骤: 首先从家里的windows PC向公司sh3服务器拨号建立连接,然后 telnet to sh3 ,su as root, 运行call98断线,然后让它向windows PC回拨即可。 实现方法: A. 如何设置sh3(192.168.13.3)? 1.将默认网关指向isdn(192.168.13.5),且打开IP Forwarding功能。 你需要加下面的行到/etc/rc.d/rc.local /sbin/route del default /sbin/route add -net 0.0.0.0 gw 192.168.13.5 /sbin/modprobe bsd_comp / sbin/modprobe ppp echo 1 > /proc/sys/net/ipv4/ip_forward 注:请先确保能从sh3上能成功地ping外面的网站,如你的ISP的DNS服务器。 2.设置sh3做为PAP方式认证的PPP server. 加下面的行到/etc/inittab,然后运行 /sbin/init q 使它生效。 s0:2345:respawn:/sbin/mgetty -D -x 3 ttyS0 更改 /etc/mgetty+sendfax/login.config,改/AutoPPP/那一行象下面的 /AutoPPP/ - - /usr/sbin/pppd file /etc/ppp/options.auto 设置pppd权限位: chmod u+s /usr/sbin/pppd /etc/ppp/options.auto应该象这样: -detach auth modem lock login proxyarp crtscts asyncmap 0 192.168.13.3:192.168.13.242 ms-dns 192.168.13.1 (# 192.168.13.1为我局域网上的一台DNS服务器, 你也可设成你的ISP的DNS服务器) 3.新建一PPP 用户, useradd jephe; passwd jephe 4.设置sh3,让它能向Windows PC拨号。 cp /usr/doc/ppp*/ppp-on /usr/bin/ cp /usr/doc/ppp*/ppp-off /usr/bin/ cp /usr/doc/ppp*/ppp-on-dialer /etc/ppp chmod +x /usr/bin/ppp-on /usr/bin/ppp-off /etc/ppp/ppp-on-dialer 改/etc/ppp/ppp-on-dialer中的chat为 /usr/sbin/chat并注释掉最后两行。 #!/bin/sh exec /usr/sbin/chat -v \ TIMEOUT 3 \ ABORT '\nBUSY\r' \ ABORT '\nNO ANSWER\r' \ ABORT '\nRINGING\r\n\r\nRINGING\r' \ '' \rAT \ 'OK-+++\c-OK' ATH0 \ TIMEOUT 30 \ OK ATDT$TELEPHONE \ CONNECT '' 改/usr/bin/ppp-on象下面(回拨时windows不要求用户名和口令) TELEPHONE=12345678 # 你家中的电话号码 LOCAL_IP=192.168.13.3 REMOTE_IP=192.168.13.242 NETMASK=255.255.255.0 export TELEPHONE DIALER_SCRIPT=/etc/ppp/ppp-on-dialer exec /usr/sbin/pppd debug lock modem crtscts /dev/ttyS0 38400 \ $LOCAL_IP:$REMOTE_IP \ noipdefault netmask $NETMASK connect $DIALER_SCRIPT 5.创建一个script,取名call98。 #!/bin/sh kill `cat /var/run/ppp0.pid` nohup sleep 5; /usr/bin/ppp-on B. Windows PC 设置。 你必须在modem附加设置栏填上 &C0S0=001 。(001表示在响铃一次后应答) C. 服务器 isdn 设置。 你需要在服务器 isdn 里添加一条路由。加下面的行到 /etc/rc.d/rc.local /sbin/route add 192.168.13.242 gw 192.168.13.3 注意:1. 在/etc/ppp目录下,请删掉或换名options文件,因为options.auto 与 options不能同时存在,否则回拨后立刻断掉,很奇怪 2. 在使用过程中,发现回拨后DNS不能自动获得,你可能要到网上邻居/拨号 网络适配器中手动设置DNS值。 3. 在回拨成功后,windows PC中默认网关丢失,你必须还要在DOS窗口运行 下面的命令大约回拨10秒之后做,如有错误信息,说明回拨后PPP还未完 全建立,可再等几秒按F3再试可以把它设成批处理文件如98call.bat) route add 0.0.0.0 mask 0.0.0.0 192.168.13.242 4. 当然,你必须telnet到sh3 as root后运行call98,不能在98中断线,否则 sh3怎么知道要回拨? 5. 请接modem到ttyS0,不要接到ttyS1,在我使用过程中,ttyS1好象不能成功地回拨。 资料来源:中国Linux论坛 ========================================================================== 注:以上部分非本人撰写,稍后我将用自已的文字代替它。 |
实例四:参与架设某部门的LINUX解决方案:
请先看图

(这张图最难画了,不过还好,最终还是挤出来了): (小学里的看图说话?)
应当首先声明的是,这只是庞大网络中摘录的与PPP有关的一部分。如果你一定要问其他的相关部分,那么我建议你去forum.linuxaid.com.cn,那里的其他工程师很乐意免费为你解答。
现在假设:
你的PPP SERVER大致看起来是这个样子:
方案背景: 方案要求: 具体操作: (这部分尚示写完,最难写也最长,不知应不应该帖到网上)
(另:此方案为本省分行AS/400银行应用系统应用实例,用的虽是SCO UNIX,但移值到LINUX不会有问题,更何况,此方案对于各级层面来说堪称经典。但,说得详细了吧,又怕专家告发,说含糊吧,此章也就失去了意义,唉,内容取舍上两难全。)
实例五:架设ISP的PPP SERVER。 (未完成 ,看来我也没有这个能力写这部分的内容)
六、ppp Server架设好了以后该于些什么?
七、相关的PPP资源
*为推荐资源