• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

在Linux上配置ISDN

发布: 2007-6-21 12:06 | 作者: powerforce  | 来源: 戴尔中文  | 查看: 17次 | 进入软件测试论坛讨论

领测软件测试网

   
  ISDN在国内的应用越来越多,它比电话线拨号上网的带宽增大,中小型企业通过它共享上网非常合适。Linux在共享上网方面的优势是Windows无法相比的,它的IP改装技术尽管还处于开发测试阶段,但其效率远远高于普通的Proxy软件。

本文介绍怎样通过一台Linux机器,配置ISDN,利用Linux的IP改装技术,使得所有局域网用户共享上网。 
ISDN上网的必要设备 
现在国内用在ISDN上网的设备有很多种,没有任何厂商声明支持Linux,但是Linux已经可以支持大多数ISDN设备。这里介绍S0卡+网络终结器(NT1)这种配置,因为这是国内电信部门的推荐配置,而且他们可以提供Windows平台的技术支持。 NT1设备可以请电信部门帮助调试好并接通线路,S0卡最好选用西门子芯片的产品,我的S0卡为“Teles 16.3c/pnp"。把这块卡直接插入Linux机器的ISA槽中,接好与NT1的线路。以下介绍如何使Linux识别这块卡,并使之拨号上网。 
基本原理 
ISDN 上网与我们常用的Modem拨号上网类似。在Linux下甚至可以把S0卡模拟成Modem设备,所不同的是ISDN可以使用同步PPP(synchronous PPP),而Modem拨号一般使用异步PPP(anonymous PPP)。对于这两种拨号方式,邮局或ISP采用不同的接入设备。 尽管ISDN可以模拟成Modem进行异步模式的拨号,但一般只是用来测试S0卡是否运行正常,真正在上网时通常要用同步PPP拨号模式。 
所需软件包
● Linux2.0.36 
Linux使用的内核版本必须是2.0.36,这是到目前为止2.0版中最新的内核版本。它在ISDN的支持上作了很大改进。在Linux的开发版2.1.x中,也有这些对ISDN的支持,但我不能保证2.1.x版的稳定性。2.0.36内核的源码可以在 http://ftp.cdrom.com//Linux/sunsite/kernel/中下载,如何编译安装请参照Linux-Howto中的Kernel Howto。 
● Isdn4linux 
这是一个为Linux开发的ISDN各种应用的合集,它的最新版本的文档是德文写的,可以在 http://ftp.murphy.nl/put/isdn4linux/中下载它的最新版本。 
● ISAPNP tools 
由于我使用的S0卡(teles 16.3c/pnp)是即插即用的,而Linux对即插即用的内核支持在2.1.x中才能实现,因此必须去 http://www.roestock.demon.co.uk/isapnptools/下载ISAPNP软件包,以便在Linux上识别这块卡。如果你使用的S0卡并非即插即用,那么可以不管这个软件包。 
ISDN的Linux内核配置 
Linux2.0.36的内核需要重新配置,步骤如下: 
#cd/usr/src/linux 
#make menuconfig 
〈*〉ISDN support 
[*] Support synchronous PPP 
〈M〉 Hisax SiemensChipSet driver support 
[*] Hisax Support for EURO/DSS1 
[*] Hisax Support for teles 16.3c 
# make dep 
# make clean 
# make zImage 
(wait for some minutes ....) 
# cp/vmlinuz/vmlinuz.bak (备份内核) 
# cp/usr/src/linux/arch/i396 /boot/zImage/vmlinuz 
# lilo 
# reboot 
使用Hisax配置S0卡 
1. 非即插即用类 
Teles 16.3 ISDN卡一般使用如下缺省参数: 
* I/O address: 0x180 * IRQ: 15,9,10,11,12 * Mem address: 0(不必考虑) 
使用如下命令识别这块卡的参数: 
# modeprobe hisax io=0x180 irq=10 type=3 protocol=2 id=isdn0 
其中IRQ直接由hisax驱动程序配置,不必象配网卡那样跑到Dos/Win下去看它的IRQ。I/O地址要查看说明书,如果不是0x180,可以到卡上跳线。 
2. 即插即用类 
这类卡不需要跳线或开关,所有参数要先通过ISAPNP配置。如果你正确地编译安装ISAPNP软件后,应该存在pnpdump和isapnp这两个命令,首先,执行: 
# pnpdump 〉/etc/isdn.conf 
这样会把所有pnp卡的合适参数写入到isdn.conf中。但是合适参数可能不止一组,所以它们都被加上了注释,需要你手工去掉一组参数的注释,表示选择了这组参数作为这块卡的配置。具体的做法就是编辑/etc/isdn.conf文件,改成类似如下的形式: 
(CONFIGURE TAG261012101108041(LD 0 (IO 0(SIZE 2) (BASE 0x680)) (INT 0(IRQ 10(MODE +E))) (NAME ″TAG2610/2101108041[0]{TELES.S0/16.3c Plug&Play}″) (ACT Y) )) (WAITFORKEY) 
然后执行: 
# isapnp/etc/isdn.conf 
最后执行: 
# modprobe hisax irq=10 io=0x680 type=14 protocol=2 id=isdn0 
识别S0卡成功的标志 
如果Hisax成功识别S0卡,在/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(***.***.***.***) 

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网