|
大连网通 ADSL 使用 Linux 上网实例 ( ZTE 850 -- ZXDSL852 )
我家使用的是大连网通的 512K ADSL,以前由于硬盘小没有安装Linux系统,前不久添加硬盘所以自己在老硬盘上安装了 Linux From Scratch 6.2 ,然后又安装 SVN 的 BLFS 部分软件,参考网上别人的成功经验,终于摸索着成功进行了拨号上网。下面是一点实践经验。
1。MODERM 驱动
我家是租用的 ADSL MORDEM,牌子是 ZTE 852 ( ZXDSL852 )。这个型号的猫使用内核驱动是 cxacru.ko 。较新的 内核 已经支持这个猫,如果不支持的内核想要自己编译驱动程序,清参考这个网页<accessrunner.sourceforge.net>。
当驱动加载成功以后就会认出 MORDEM 来,并且会从 /lib/firmware/去找 cxacru-fw.bin ,传送给 MORDEM ,让 MORDEM 运行起来。你可以看到类似下面的信息,并且 MORDEM 上的 LED 点闪一阵后,就常亮了,这说明 MORDEM 已经正常工作起来了,并且建立了物理连接:
cxacru-fw.bin 是 MORDEM 的 firmware ,也就是让 MORDEM 运行起来的 软件,这个文件 也能够在 网上 download 到。
#dmesg
ATM dev 0: ADSL line: attempting to activate
ATM dev 0: ADSL line: channel analysis
ATM dev 0: ADSL line: up (512 kb/s down | 640 kb/s up)
ATM dev 0: ADSL line: training
ATM dev 0: ADSL line: channel analysis
ATM dev 0: ADSL line: up (512 kb/s down | 448 kb/s up)
2。桥接驱动
大连网通使用 PPPoE 协议,因此需要将 cxacru 这个 ATM 设备 进行一下桥接,在它上面桥接出一个虚拟网卡出来,完成这个工作需要2个步骤,一个是内核驱动,另外一个是针对这个驱动的工具。
内核驱动的名字叫做:br2684.ko
工具的名字叫做 br2684ctl,但是需要先安装一个依赖包:Linux ATM ,请参考<linux-atm.sourceforge.net>。
编译的指令是:#gcc -o br2684ctl br2648ctl.c -latm
将编译成的可执行文件 拷贝到 /usr/sbin 去,以方便以后使用。
使用 br2648ctl 创建 桥接的虚拟网卡,命令行如下:
# br2684ctl -b -c 0 -a 0.8.35
注意 0.8.35 中的 8 是 VPI, 35 是 VCI ,这根据 ISP 的不一样可能不一样,你可以参考 Windows 下的设置。
接下来创建 网络设备:
# ip link set up nas0 ( 我猜这和 #ifconfig nas0 up 的功能是一样的 )
当 虚拟网卡 创建成功以后,可以通过 #ifconfig 看到:
nas0 Link encap:Ethernet HWaddr 00:D0:D0:77:A1:9B
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:10935 errors:0 dropped:0 overruns:0 frame:0
TX packets:11129 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1848715 (1.7 Mb) TX bytes:1723923 (1.6 Mb)
3。PPPoE 方式拨号上网
到这里为止,差不多就只剩下拨号上网了,硬件相关的工作都已经完成了。大连网通使用的是 PPPoE 拨号方式,并且使用 PAP 认证方式。
需要安装的软件是 PPP 和 RP-PPPoE,你可以在<http://www.linuxfromscratch.org/blfs/view/svn/connect/dialup.html#ppp>和<http://www.linuxfromscratch.org/blfs/view/svn/connect/other.html#pppoe>找到它们。
安装完 这两个软件以后,就需要配置你的拨号配置文件了。通常需要修改3个文件。
A。/etc/ppp/chap-secrets
这里放的是 chap 认证方式的用户名和密码,这是一个例子:
# client server secret IP addresses
"dl88888888@163" * "88888888"
B。/etc/ppp/pap-secrets
这里放的是 pap 认证方式的用户名和密码,这是一个例子:
# client server secret IP addresses
"dl88888888@163" * "88888888"
注意 这两个文件都是用 TAB 进行分割,而不是 空格。
C。/etc/ppp/peers/pppoe-zxdsl
你也可以取为其他名字,比如 MY-PPPOE-ZTE-852。
这个文件内容大致如下:
# example configuration for the kernel space PPP over Ethernet driver
#
# See the manual page pppd( for information on all the options.
# MUST CHANGE: Uncomment the following line, replacing the [email protected]
# by the DSL user name given to your by your DSL provider.
# There should be a matching entry with the password in /etc/ppp/pap-secrets
# and/or /etc/ppp/chap-secrets.
user "dl88888848@163"
# Load the PPPoE plugin. Change the ethernet interface name if needed.
plugin rp-pppoe.so
nas0
# Assumes that your IP address is allocated dynamically by the ISP.
noipdefault
# Try to get the name server addresses from the ISP.
usepeerdns
# Use this connection as the default route.
# Comment out if you already have the correct default route installed.
defaultroute
# Makes pppd "dial again" when the connection is lost.
persist
# Do not ask the remote to authenticate.
noauth
# RFC 2516, paragraph 7 mandates that the following options MUST NOT be
# requested and MUST be rejected if requested by the peer:
# Address-and-Control-Field-Compression (ACFC)
noaccomp
# Asynchronous-Control-Character-Map (ACCM)
default-asyncmap
# Do not try to negotiate compression.
nopcomp
noccp
novj
需要注意的地方有两个,第一是用户名 user "dl88888888@163" ,这需要和 pap-secrets ,chap-secrets 里面的用户名一致,否则拨号无法通过身份认证;第二是 PPPoE 使用的网卡,我们使用的 虚拟网卡nas0,我想如果不是使用的 ATM 设备而是真实网卡的话,就应该填写 ethX。
拨号的方法是: #pppd call pppoe-zxdsl 或者 #pppd call MY-PPPOE-ZTE-852。
如果拨号成功,就能够在 /var/log/sys.log 中看到相关信息:
Aug 30 19:41:48 lfs pppd[1872]: Plugin rp-pppoe.so loaded.
Aug 30 19:41:48 lfs pppd[1872]: RP-PPPoE plugin version 3.3 compiled against pppd 2.4.4
Aug 30 19:41:48 lfs pppd[1873]: pppd 2.4.4 started by root, uid 0
Aug 30 19:41:48 lfs pppd[1873]: PPP session is 4086
Aug 30 19:41:48 lfs pppd[1873]: Using interface ppp0
Aug 30 19:41:48 lfs pppd[1873]: Connect: ppp0 <--> nas0
Aug 30 19:41:48 lfs kernel: NET: Registered protocol family 24
Aug 30 19:41:48 lfs pppd[1873]: PAP authentication succeeded
Aug 30 19:41:48 lfs pppd[1873]: peer from calling number 00:30:88:00:66:88 authorized
Aug 30 19:41:48 lfs pppd[1873]: local IP address 221.201.51.32
Aug 30 19:41:48 lfs pppd[1873]: remote IP address 221.201.48.1
Aug 30 19:41:48 lfs pppd[1873]: primary DNS address 202.96.69.38
Aug 30 19:41:48 lfs pppd[1873]: secondary DNS address 202.96.64.68
通过 #ifconfig 也能够看到相关信息:
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:32 errors:0 dropped:0 overruns:0 frame:0
TX packets:32 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1600 (1.5 Kb) TX bytes:1600 (1.5 Kb)
nas0 Link encap:Ethernet HWaddr 00:D0:D0:77:A1:9B
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:11486 errors:0 dropped:0 overruns:0 frame:0
TX packets:11708 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2040019 (1.9 Mb) TX bytes:1773183 (1.6 Mb)
ppp0 Link encapoint-to-Point Protocol
inet addr:60.20.52.69 P-t-P:60.20.52.1 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1
RX packets:868 errors:0 dropped:0 overruns:0 frame:0
TX packets:938 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:215934 (210.8 Kb) TX bytes:59756 (58.3 Kb)
由于 pppd 会自动更新你的 /etc/resolv.conf ,因此就不需要自己手动添加 DNS 记录了,否则需要改写 /etc/resolv.conf:
nameserver 202.96.69.38
到此为止, 上网也就成功了。希望这篇文章能够给你带来帮助。 |
|