歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> Linux文化

在Linux上配置ISDN


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內核的源碼可以在Ftp://ftp.cdrom.com//Linux/sunsite/kernel/中下載,如何編譯安裝請參照Linux-Howto中的Kernel Howto。

● Isdn4linux

這是一個為Linux開發的ISDN各種應用的合集,它的最新版本的文檔是德文寫的,可以在ftp://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(xxx.xxx.xxx.xxx)


——摘自:http://support.turbolinux.com.cn


Copyright © Linux教程網 All Rights Reserved