怎样在Linux中使用ADSL?
发布网友
发布时间:2022-10-26 07:16
我来回答
共2个回答
热心网友
时间:2023-09-14 00:07
[转载]
ADSL 拨接上网方式
好了,终于提到最热门的 ADSL 拨接制的上网方式啰!嗯!来谈一谈怎么在 Linux 上拨接上网吧!在 Linux 系统中,要以 ADSL 连上 Internet 是一件很简单的事情,使用 rp-pppoe ( http://www.roaringpenguin.com/pppoe/ ) 软件就可以进行拨接了!安装也很方便喔!再来要注意的是,在目前的 Linux 版本当中,由于强调桌上型计算机的便利性,所以很多版本的 Linux 都取消了文字接口下的 ADSL 拨接指令,例如 Red Hat 新版的 Linux 。所以在预设的状态下,我们仅能以图形接口启动 ADSL ,这真的很讨厌,因为我们的主机就是不想要启用 X Window 的啊!怎么办?没关系,我们可以透过重新安装 rp-pppoe 就行啦!我们提过在 Linux 的安装方式主要有 RPM 与 Tarball 两种方式,目前鸟哥已经成功的在 Red Hat 7.2 上面安装 rp-pppoe-2.6-5.src.rpm 这个版本的 rp-pppoe 啰!然而由于很多时候 RPM 有相依属性的问题,因此我们也尝试以 Tarball 来安装一下 rp-pppoe 吧!( 注:如果依旧无法以 RPM 安装 rp-pppoe 时,请直接以 Tarball 来安装吧! )
此外,需要特别留意的是,原本 Linux 主机上面就会有 eth0 这个网络卡接口,不过在使用 rp-pppoe 拨接之后,会多产生了一个对外的接口,称为 ppp0 的这个网络联机接口,因此,您将具有三个网络接口喔!分别是:
1. 内部循环测试用的lo接口;
2. 网络卡 eth0 这个接口;
3. 拨接之后产生的经由 ISP 对外连接的 ppp0 接口。
而由于这三个接口的 IP 网段都不相同,因此,请『特别留意通讯闸的设定!』一般而言,在 ADSL 拨接的状态下,前面提到的几个档案的设定内容中,『都不要设定GATEWAY及GATEWAYDEV这两个参数』,因为 rp-pppoe 会自动由 ISP 取得这方面的数据,如果您设定了GATEWAY,反而会造成系统无法联机出去的状态喔!
因为拨接之后会产生两个实体接口,分别为 eth0 与 ppp0 ,所以底下我们将针对两个接口进行设定。在 eth0 的设定中,我们选择 192.168.1.0/255.255.255.0 并且 IP 为 192.168.1.2 ,至于 ppp0 则完全由 rp-pppoe 所产生。
设定与安装的步骤简单说明如下:
1. 重新设定网络参数档案;
2. 查看是否安装了 rp-pppoe,移除 rp-pppoe;
3. 安装 rp-pppoe :
o 用 rpm 安装;
o 用 Tarball 安装;
4. 设定 rp-pppoe :
5. ADSL 拨接连线
好了!开始一步一步来进行安装与设定及联机的步骤吧!
1. 重新设定网络参数档案:
由于我们是使用拨接的方式来连上 Internet 的,所以 default gateway 是由 rp-pppoe 拨接之后 ISP 直接传送数据到我们 Linux 主机上的,因此,在您的 Linux 系统当中,千万不要设定 GATEWAY 或者是 GATEWAYDEV 喔!( 这个情况我们会在 Linux Router 的设定当中说明 )!
1. 取消预设通讯闸
[root@test root]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes <==若您需要 eth0 帮您建立内部私有网域时,这里可以写成 yes
但若不需要内部网络时,这一行请直接写成 no ,反正拨接
之后网络卡会自动被启动!
BOOTPROTO=static
IPADDR=192.168.1.2
NETMASK=255.255.255.0
NETWORK=192.168.1.0
BROADCAST=192.168.1.255
[root@test root]# /etc/rc.d/init.d/network restart
2. 移除原本的 rp-pppoe 套件:
如同前面说的,新版的 rp-pppoe 很多都仅支持图形接口的拨接程序,所以我们这里直接将 rp-pppoe 移除 (或者根本不要使用预设的 rp-pppoe 套件),然后再重新安装官方网站的 rp-pppoe 套件说:
[root@test root]# rpm -qa | grep rp-pppoe
rp-pppoe-3.5-2 <==看来是已经安装了!只好移除啰!
[root@test root]# rpm -e rp-pppoe
3. 安装 rp-pppoe :
安装 rp-pppoe 的方式有两种,可以使用 rpm 与 tarball 的方式来分别安装,不过,只要选择一种来安装就可以啦!
o RPM 安装 rp-pppoe:
如果您下载的是 SRPM 的档案的话,那么就需要先经过编译才行。详细的编译及安装步骤如下表所示:( 请注意,编译的过程也需要 gcc 之类的 compiler ,如果没有在 Install 的时候选择时,在编译个过程中可能会有出现错误,请自行由 Linux 原版光盘安装吧! )
1. 下载 rp-pppoe :
rp-pppoe 的下载网站在:『http://www.roaringpenguin.com/pppoe/#download』,底下我是以rp-pppoe-3.5-1.src.rpm 这个档案进行介绍的。如果您的主机尚未开放任何的服务时,您可以使用软盘来下载 rp-pppoe ,因为 rp-pppoe 的档案很小啦!还不到 200 KB 呢!所以软盘就可以啰!如何使用软盘呢?
+ 先使用软盘将下载下来的 rp-pppoe copy 到软盘上;
+ 将软盘放置于 Linux 主机的软盘槽中;
+ 在 Linux 底下使用 df 这个指令,看看有没有类似底下的这一行:
/dev/fd0 1423 0 1423 0% /mnt/floppy
+ 如果有的话,请使用『 umount /mnt/floppy 』,如果无,则跳到下一步; 使用『 ls -l /mnt 』看看有没有 floppy 这个目录:
+ 如果有则下一步,若无则『 mkdir /mnt/floppy 』; 使用『 mount -t vfat /dev/fd0 /mnt/floppy 』将软盘挂上去!
+ 使用『 cp /mnt/floppy/rp* /root 』将档案 copy 到 /root 这个目录下;
+ 使用『 cd /root 』将目录转到 root 底下。
2. 编译及安装 rp-pppoe :
1. 编译 SRPM:
[root@test root]# rpm --rebuild rp-pppoe-3.5-1.src.rpm
[root@test root]# rpmbuild --rebuild rp-pppoe-3.5-1.src.rpm
# 注:在 Red Hat 7.3 以前, rpm 的指令使用 rpm ,但是在 Red Hat 8
# 以后, SRPM 的重制指令已经独立至 rpmbuild 啰!所以请选择
# 适合您的 Linux 版本喔!
.........
Wrote: /usr/src/redhat/RPMS/i386/rp-pppoe-3.5-1.i386.rpm
.........
在编译时,最后的结果(如果没有错误)会显示上面那个样子!
也就是说,您的编译完成的档案就放在上面啰!
2. 安装 rp-pppoe :
[root@test root]# cd /usr/src/redhat/RPMS/i386
[root@test i386]# rpm -ivh rp-pppoe-3.5-1.i386.rpm
Preparing... ########################################### [100%]
1:rp-pppoe ########################################### [100%]
[root@test i386]# rpm -q rp-pppoe
rp-pppoe-3.5-1
这样就安装完毕了!简单吧!如果不相信,可以查询看看!
安装完毕之后,会在 /usr/sbin 当中多了 adsl-start, adsl-stop, adsl-setup, adsl-status 等档案,至于设定档则在 /etc/ppp 当中!如果您要详细的看每一个指令的用法,可以使用 man adsl-setup ....等指令名称来观察!我们这里仅提供设定的方法及执行的方法!
Tarball 安装 rp-pppoe :
o
嗯!由于 RPM 可能会有相依属性的问题!因此,如果您的系统上面无法安装 rp-pppoe 的话,那么就直接以 Tarball 的方式来安装 rp-pppoe 吧!目前 (2003/08/18) 最新的 rp-pppoe 套件为 rp-pppoe-3.5.tar.gz 这个档案:
1. 解压缩!
[root@test root]# mv rp-pppoe-3.5.tar.gz /usr/local/src
[root@test root]# cd /usr/local/src
[root@test src]# tar -zxvf rp-pppoe-3.5.tar.gz
2. 侦测系统与编译执行文件:
[root@test src]# cd rp-pppoe-3.5/src
[root@test src]# ./configure --prefix=/usr/local
[root@test src]# make; make install
安装方面很简易吧!这样就妥当啰!准备来给他设定一下吧!
设定 rp-pppoe :
4.
rp-pppoe 的设定非常简单,只要透过 /usr/sbin/adsl-setup ( 若为 Tarball 安装的话,那么就在 /usr/local/sbin /adsl-setup 啰 ) 这个程序来设定就 OK 了!
[root@test root]# /usr/sbin/adsl-setup
>>> Enter your PPPoE user name (default bxxxnxnx@sympatico.ca): T0123456
这个时候请输入您在 ADSL 的账号,不同的 ISP 有不同的设定方式呦!请特别注意!
a. 如果是 seednet 的话,应该有点像这样==> T0123456
b. 如果是 Hinet 的话,应该有点像这样====> yourname@hinet.com.tw(连同 host 也要写)
>>> Enter the Ethernet interface connected to the ADSL modem
For Solaris, this is likely to be something like /dev/hme0.
For Linux, it will be ethn, where 'n' is a number.
(default eth0): eth0
因为我们使用 eth0 联机的呀!
>>> Enter the demand value (default no): <=按下 Enter 即可
这里按 enter 不用设定就好了!
>>> Enter the DNS information here: 168.95.1.1
>>> Enter the secondary DNS server address here: 139.175.10.20
这里要您输入惯用的 DNS 主机:
若使用 hinet 的话,可以打入 168.95.1.1
若使用 seednet 的时候,可以打入 139.175.10.20
>>> Please enter your PPPoE password: <==输入您的密码
>>> Please re-enter your PPPoE password: <==再输入一次
这里就输入您的 ADSL 密码啦,要输入两次喔!
The firewall choices are:
0 - NONE: This script will not set any firewall rules. You are responsible
for ensuring the security of your machine. You are STRONGLY
recommended to use some kind of firewall rules.
1 - STANDALONE: Appropriate for a basic stand-alone web-surfing workstation
2 - MASQUERADE: Appropriate for a machine acting as an Internet gateway
for a LAN
>>> Choose a type of firewall (0-2): 0
这里要您选择防火墙的形式,通常我是不设火墙的,
所以直接选 0 就对了! 注意:选了防火墙有的时候反而会造成无法联机成功!
反正未来我们会手动设定防火墙,所以这里不设定没有关系!
Start this connection at boot time
Do you want to start this connection at boot time?
Please enter no or yes.
yes
如果想要一开机就自动启动 ADSL 联机的话,这里可以填入 yes啦!
Ethernet Interface: eth0
User name: T0123456
Activate-on-demand: No
Primary DNS: 168.95.1.1
Secondary DNS: 139.175.10.20
Firewalling: NONE
>>> Accept these settings and adjust configuration files (y/n)?y
接下来将您的设定作一个整合结果输出,如果没有问题的话,
输入 y 之后就完成设定啦!
基本上,设定完成之后以下的档案会被自动改变,
有影响的是 resolv.conf 这个档案,您可以手动改变这个档案喔!
Adjusting /etc/ppp/pppoe.conf
Adjusting /etc/resolv.conf
(But first backing it up to /etc/resolv.conf-bak)
Adjusting /etc/ppp/pap-secrets and /etc/ppp/chap-secrets
(But first backing it up to /etc/ppp/pap-secrets-bak)
(But first backing it up to /etc/ppp/chap-secrets-bak)
哈哈!这样设定就成功啦!很简单吧!唯一需要注意的是在上面的 username 那个地方,千万注意,因为 hinet 与 seednet 的设定是不一样的!千万小心呢!否则会无法连上线呦!此外,由于我们在未来还会有 firewall 的建置,所以这里不太需要使用到防火墙啦!就先关闭他吧 ( 选 0 ) !否则也可能无法连上 Internet 呦!(注:上面那个 T0123567 以及密码都是向 ISP 申请的,不是自己随便设定的喔!不要搞错了!)另外,注意一下,我们上面使用 adsl-setup 的设定,其实最主要是修改两个档案,分别是 /etc/ppp/pppoe.conf 这个主要设定档,以及 /etc/ppp/chap-secrets 这个密码储存文件!仔细去察看一下 chap-secrets 这个档案的内容,您就可以知道您的密码是否输入错误了! ^_^
5. 连上 Internet 啦!
怎么拨接呢?简单的很,直接下达 adsl-start 即可!
[root@test root]# adsl-start
....Connect!
这样就是显示连上 Internet 啦!通常比较容易出问题的地方在于硬件的联机情况,请先确认所有的硬件联机没有问题喔!通常,如果您使用小乌龟 ( ATU-R ) 时,请使用跳线连接网络卡与 ATU-R。另外一个容易出错的地方在于输入的账号与密码,账号与密码都是您的 ISP 给您的,并且注意大小写(可以到 /etc/ppp/chap-secrets 察看一下是否设定错误?)。
6. 查看您的 IP 啦!
那如何知道您的 IP 呢?呵呵!就使用 ifconfig 呀!
[root@test root]# ifconfig ppp0
ppp0 Link encap:Point-to-Point Protocol
inet addr:211.74.249.38 P-t-P:172.16.11.8 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1
RX packets:8356088 errors:0 dropped:0 overruns:0 frame:0
TX packets:8532063 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:10
在上表中显示,ppp0 ( 就是 ADSL 的 ISP 给您的公共 IP ) 的网址是 211.74.249.38。
7. 自动侦测 ppp0 的拨接状态:
基本上,目前的 rp-pppoe 已经都设定好了断线后会自动拨接的模式了,因此我们大可不用太担心,不过,如果您还是很担心会断线后无法自动拨接出去,那么可以在 /etc/crontab 加入这一行:
[root@test root]# vi /etc/crontab
.......
01-59/3 * * * * root /usr/sbin/adsl-start > /dev/null 2>&1
在上面的式子当中,如果您看不懂的话,那就表示『您需要再将 BASH Shell 学一学了』! ^_^
拨接程序 rp-pppoe 讯息错误处理
或许您会发现使用 rp-pppoe 拨接之后,您的 /var/log/messages 老是出现这样的讯息:
[root@test root]# more /var/log/messages
May 10 18:02:22 testing pppoe[8527]: Bogus PPPoE length field (50)
这是什么问题啊?在 RP-PPPOE 的官方讨论区上面提过,这个问题是由于 ISP 提供的讯息长度超过 rp-pppoe 预设的检查长度才会发生的一个警告讯息,事实上这个讯息并不重要,不用理会他也没有关系,不会影响到 Internet 的运作。但是,这样的讯息在 /var/log/messages 里面每一分钟就出现一次,实在很讨厌!怎么办,可以将他拿掉吗?!当然可以!您可以下载新的 Tarball 来重新编译过!步骤是这样的:
1. 到下面的网站去下载新的 Tarball (我这里以 3.5 为例!)
2. http://www.roaringpenguin.com/pppoe/#download 在 /usr/local/src底下解开该档案,则会造成 /usr/local/src/rp-pppoe-3.5 这个目录
3. 到 /usr/local/src/rp-pppoe-3.5/src 底下去,修改这四个档案:
o discovery.c
o pppoe.c
o pppoe-server.c
o relay.c
找到这四个档案的内容如下代码:
/* Check length */
if (ntohs(packet.length) + HDR_SIZE > len) {
syslog(LOG_ERR, "Bogus PPPoE length field (%u)",
(unsigned int) ntohs(packet.length));
return;
}
将他修改成为:
/* Check length */
if (ntohs(packet.length) + HDR_SIZE > len) {
/* syslog(LOG_ERR, "Bogus PPPoE length field (%u)",
(unsigned int) ntohs(packet.length)); */
return;
}
请注意,上面每个档案都有多个同样的字符串,请依序一个一个都修改掉才行!还没完喔!再到 pppoe.c 找到底下的字眼:
if (plen + HDR_SIZE > len) {
syslog(LOG_ERR, "Bogus length field in session packet %d (%d)",
(int) plen, (int) len);
return;
}
请将他改成:
if (plen + HDR_SIZE > len) {
/* syslog(LOG_ERR, "Bogus length field in session packet %d (%d)",
(int) plen, (int) len); */
return;
}
4. 然后就可以开始这样做啰:
cd /usr/local/src/rp-pppoe-3.5/src
./configure
make
make install
5. 如果一切都可以成功的进行,那么就可以:
adsl-stop
adsl-start
这个简单的步骤应该可以将您的问题讯息克服了吧! ^_^
参考资料:http://linux-vbird.bluedata.org/linux_server/0130internet_connect.htm#connect_adsl
热心网友
时间:2023-09-14 00:07
和XP中应该一样,建立一个宽带连接就可以了吧!