|
发表于 2003-2-22 15:26:42
|
显示全部楼层
ADSL实战宽带上网
为了大家能帮助大家可以使用ADSL宽带上网,我在这里介绍我的经验和有关文章,希望大家不要再为此苦恼!!!
(一)本人上宽带的经历(在X下):
1.本人使用深圳伊泰克科技有限公司生产的TD-2018型ADSL MODEM,系统是RH8.0.内核为2.4.18-14.
2.MODEM连接:一个口用电话线接通公共线路,一个口用网线与机内的网卡接通.
3.配置帐号:顺序是,打开系统工具,互联网配置向导,xDSL连接,前进,分别输入提供者名称.帐号.密码,前进,确定退出.
4.配置网卡:顺序是,打开系统设置,网络,设备,选eth0,点编辑,勾启动时激活设备,再选静态设置的IP编号,输入编号(IP):192.168.0.1,子掩码:255.255.255.0,确定退出,在设备对话框里点应用,然后点激活,见到活跃字样就配置成功.
5.配置拨号软件:在4里选ppp0,点编辑,勾启动时激活设备,自动获取IP编号选拨号,DHCP勾自动从提供者处获取DNS信息,然后确定退出,在设备对话框里点应用,然后点激活,见到活跃字样就配置成功.
6.退出后,重启,然后点浏览器就可以上网,推荐使用Netscape7.01,本站可以下载,相对比较稳定.
补充(文字下上宽带):
使用红旗Linux 2.0桌面系统,假设你的网卡已经装好了。如果你还不确定,就用“ifconfig eth0”这个命令看看。在网络的设置里IP地址要选手动,最好不要设地址,让它空着。然后把DNS呀、路由什么的也都设置为空。
安装PPPoE软件包
先请大家下载http://www.roaringpenguin.com/pppoe...-3.4-1.i386.rpm 这个软件包。你可以在Windows下先下载好,然后用Mount命令加载到Linux下的分区就可以了,不过红旗的Linux会自动加载,只要你打开root/mnt这个目录,里面有硬盘上所有的文件,自然包括Windows下的。如果是在字符界面的话,那就请在软件包所在的目录上键入:rpm -Uvh rp-pppoe-3.2-1.i386.rpm,就可以安装了。
设置拨号程序
这个一定要在字符界面上了,请键入adsl-setup,然后按要求键入如下内容:
Enter your PPPoE user name:
输入你的宽带账号的用户名。
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 is a number.(default eth0):
这是叫你输入连接的网卡的名字,一般选择默认就可以(按一下回车)。
Enter the demand value (default no):
键入“no”。
Enter the DNS information here:
输入DNS服务器地址,这表示使用宽带服务提供商会为你自动提供的DNS服务器IP地址。
Please enter your PPPoE password:
输入宽带账号的密码。
Please confirm your pppoe password:
再次输入刚才宽带账号的密码。
Choose a type of firewall (0-2):
输入 0 ,表示不使用防火墙。
Accept these settings and adjust configuration files (y/n)?
如果你输入的信息正确,输入y ,完成配置,否则输入n重新设置。
拨号上网
在字符状态下键入:“adsl-start”,Linux就会自动拨号上网。要断开的时候键入:“adsl-stop”就可以了。
二)RH7.3上建立网通拨号上网共享
1、网卡配置
用的网卡是RTL8029和3com905,在系统中,RTL8029标记为eth0,3com905标记为eth1;RTL8029和3com905的IP地址分别是192.168.0.1、192.168.1.1(其他的地址也可),掩码均为255.255.255.0;eth0用于连接网通,eth1用于连接内网,局域网网段为192.168.0.0;注意:此处两块网卡均不能设网关.
2、 PPPoE软件的升级与安装
1) 在 http://www.roaringpenguin.com/pppoe/#download 下载
2) 安装rp-pppoe,以root身份执行
rpm –Uvh rp-pppoe-3.5-1.i386.rpm
3、 修改/etc/ sysctl.conf
将其中的
net.ipv4.ip_forward = 0
改为
net.ipv4.ip_forward = 1
4、 去除ipchains模块,只选择iptables方法如下:
1)setup
2)选择system service
3)去除ipchains
4)选中iptables
5)重启机器
5、 PPPoE客户端配置
在rp-pppoe-3.5-1.i386.rpm安装完毕后,接下来就可进行PPPoE客户端配置了。过程如下。
#/usr/sbin/adsl-setup
>>> Enter your PPPoE user name: ——此处输入拨号帐号的用户名
>>> 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
>>> Enter the demand value (default no): ——输no
>>> Enter the DNS information here: ——输210.83.130.18
>>> Please enter your PPPoE password: ——输网通用户口令
>>> Choose a type of firewall (0-2): ——输0
>>> Accept these settings and adjust configuration files (y/n)? ——输y
6、 启动拨号连接
/usr/sbin/adsl-start
成功连接后,屏幕显示Connected。
此时这台linux已可以上网浏览了.
7、 IP伪装
为了使局域网中的其他机器能通过Linux服务器共享上网,至少须执行下面的命令:
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
完成后,在192.168.0.0网段(网关为192.168.0.1)的PC机就可透过Linux上网了!
8、 开机自启动
为了使Linux服务器能够自动拨号,执行下面步骤。
1)chkconfig --add adsl
2)setup
3)选择system services
4)选中ADSL
5)OK退出
6)打开/etc/rc.d/rc.local,在该文件的末尾添上下面语句
echo "[OK]"
echo "Drop ICMP form anywhere"
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
echo "[OK]"
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
说明:前面四句用于关闭ICMP,防止别人Ping。
9、至此,一个简单的拨号建成了.重启机器后,发现linux的internet共享连接已经一切就绪了.
为了建立更安全的拨号连接,请再设置各种安全机制吧,好事多磨嘛.另外,如果网关后面的客户机无法通过linux上网,请留意一下linux的防火墙设置.
(三)在Linux下使用电信ADSL
电信的ADSL使用的是PPPOE拨号方式,因此,要在Linux下使用ADSL,必须安装PPPOE客户端软件。下面说明如何进行安装:
本文以RedHat Linux 6.2为实验平台,其它平台的Linux安装办法可以参照下面从源代码进行安装的步骤。
一、 安装的前提条件
1.确保安装了网卡并工作正常使用命令:
#ifconfig eth0
查看网卡状态。
2.在系统中不要设置默认路由(网关),让ADSL拨号后自动获得。如果已经设置了默认路由,使用以下方法删除:
在文件 /etc/sysconfig/network 中删除 GATEWAY= 这一行,然后以root执行:
#/etc/rc.d/init.d/network restart
3.已经安装了pppd软件包。
如果存在文件 /usr/sbin/pppd,则说明已经安装了pppd;
如果未安装,从RedHatLinux 6.2安装光盘上安装ppp-2.3.11-4.i386.rpm这个软件包。
二、 安装PPPOE客户端软件
Linux下的PPPOE客户端软件比较多,而且大多使用GNU License,我们推荐使用rp-pppoe 这个软件包。从http://www.roaringpenguin.com/pppoe/ 这个网站上,不仅可以下栽。RedHat 6.2平台下的rp-pppoe的二进制软件包,而且可以下栽源代码软件包。
1.二进制软件包的安装:
A.下栽二进制软件包
http://www.roaringpenguin.com/pppoe...-3.2-1.i386.rpm
B.进行安装
以root执行:
#rpm -Uvh rp-pppoe-3.2-1.i386.rpm
2.从源代码进行安装:
从源代码进行安装同样适用于其它平台的Linux,但必须在Linux系统中安装gcc编译器。
A.下栽源代码软件包
http://www.roaringpenguin.com/pppoe/rp-pppoe-3.2.tar.gz
B.解压缩
#tar xvfz rp-pppoe-3.2.tar.gz
#cd rp-pppoe-3.2
C.进行编译和安装
运行脚本
#./go
将自动进行编译和安装,最后,调用/usr/sbin/adsl-setup进行配置,具体解释见三。
三、 配置PPPOE客户端软件
安装完软件包后,必须配置pppoe的配置文件/etc/ppp/pppoe.conf,从而让ADSL拨号时使用配置文件中的用户名、密码等参数。我们不必手工改动这个文件,可以使用adsl-setup这个工具进行配置:
#/usr/sbin/adsl-setup
当出现
>>> Enter your PPPoE user name :
输入ADSL帐号的用户名
当出现
>>> 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 ,这是ADSL相连的网卡的名字。
当出现
>>> Enter the demand value (default no):
输入 no
当出现
>>> Enter the DNS information here:
输入 server ,这表示使用ADSL拨号自动获得的DNS服务器IP地址
当出现
>>> Please enter your PPPoE password:
输入ADSL帐号的密码
当出现
>>> Choose a type of firewall (0-2):
输入 0 ,不使用防火墙
当出现
>>> Accept these settings and adjust configuration files (y/n)?
如果输入的信息正确,输入 y ,完成配置,否则,输入 n 重新输入。
四、 启动PPPOE客户端软件
使用命令:
/usr/sbin/adsl-start
启动PPPOE客户端软件,进行连接,如果成功,将出现Connected;
如果不成功,请检查网线、ADSL MODEM等物理设备,并查看 /var/log/messages中的信息
/usr/sbin/adsl-stop 关闭和ISP的连接
/usr/sbin/adsl-status 查看当前连接的状态
如果想在Linux系统启动时自动启动ADSL连接,输入以下命令
#chkconfig --add adsl
将在当前的运行级下加入ADSL的自启动脚本。
五、测试
当连接成功后,使用命令:
#ifconfig -a
在输出中应该含有关于 ppp0 的一堆信息,其中还绑定了 IP 地址,说明已经从拨号中获得了IP地址。
使用命令
#netstat -nr
查看路由表信息,这时的默认路由应该是上面获得的IP地址。如果没有默认路由,我们可以手动增加:
#route add default gw 上面获得的IP地址
使用命令
#nslookup www.sina.com.cn
如果解析出新浪的IP,说明已经从拨号中正确获得了DNS服务器。
最后,使用命令ping某个域名或IP,如果有响应,表示你已经大功告成了。
六、其它说明
RedHat Linux 7.1已经集成了rp-pppoe这个软件包,只不过版本有些低,如果你不在意版本高低,可以直接进行三后面的步骤。
(四)驱动阿尔卡特ADSL Modem A1000
ADSL做为一种新生的宽带上网技术,已经越来越普及,有许多用户已经享受到了ADSL给网上冲浪带来的新乐趣,一切都变得迅速了。而对于我们Linux爱好者而言,恐怕最讨厌的是,如果让ADSL Modem在Linux使用。
下面我们就以阿尔卡特ADSL Modem A1000为例,做一简单的说明,希望能够帮助大家解决问题。
一、下载所需的软件:
首先我们需到ftp://ftp.rhapsodyk.net/pub/linux/pptp/ 下载一个专门针对A1000做过patch的pptp client软件。这个软件的文件名是: pptp-linux-1.0.2-patched.tar.gz。
另外,由于编译pptp client软件时,需要用到pppd,所以请确认,在/usr/sbin目录下有这个可执行文件。如果没有的话,请你安装一下这个软件包。
二、安装相应的软件:
1. 以root用户登录,进入/usr/local目录;
2. 执行以下命令解开软件包:
tar –xvzf pptp-linux-1.0.2-patched.tar.gz
3. 然后会生成一个新目录pptp-linux-1.02
4. 进入这个目录,执行make命令,将会编译生成一个可执行文件pptp。
5. 将编译所得到可执行文件pptp后拷贝至/usr/bin目录下。
三、设置
1. 首先编辑/etc/ppp/pap-secrets,使其包含以下内容:
username@domain * password *
2. 设置/etc/ppp/options如下:
lock
debug
name "username@domain"
remotename adslserver
defaultroute
3. 设置/etc/hosts
192.168.0.1 adslserver (这个IP地址,是电信局提供的)
4. 就用默认设置,你的Modem为192.168.0.2/255.255.255.0,不要设置默认网关,让ADSL拨号后自动获得。
5. 在/etc/resolv.conf中设置你ISP的DNS服务器IP地址。
四、使用
1. 在命令行下执行以下命令,拨号并得到PPP IP地址:
#pptp 192.168.0.1
2. 你可打开另一窗口,用#tail -f /var/log/messages监视此过程。有时不能得到IP地址,可能是线路原因,多试几次。
(五)[ISDN]深圳华为TA128在LINUX下的简单设置
现以LINUX RH7为例说明TA128在LINUX下的使用方法。
1. 启动您的X,如果还没有安装请先安装它。因为在X下不用几步就能搞定了。
2. 假定你的TA接在COM1口,选择 K/Internet/Kppp/Setup/Device,在“Modem Device”属性页中选“/dev/ttys0”或“/dev/cua0”,“/dev/cua0”或“dev/ttys0”表示串口COM1,“/dev/cua1”或“dev/ttys1”表示串口COM2,其它的依次类推;
3. 在“Accounts”属性页中选“New”;
4. 在“Dial”属性页中,“Connection Name”填连接名,“Phone Number”填入ISP的电话号码,“Authentication”填“PAP”,其它保持缺省设置,如果有DNS,在“DNS”属性页中按ISP要求填写,选“OK”确认退出;
5. 在“Modem”属性页中选“Modem Commands”,在“Initialization String”中加入“AT$P3”(PPP方式)或“AT$P4 S38=12 S49=64 S50=112”(MP方式),选“OK”退出;
6. 在“Kppp Configuration”对话框中选“OK”退出;
7. 在“Kppp”对话框中:在“Connect to:”中选择你的连接名,“Login ID:”中键入用户名;“Password:”键入口令,选“Connect”,就可以拨号上网了。
补充说明
这仅仅是把TA128当做一只外置MODEM来使用。比内置ISDN适配器要相对容易设置得多。
本文得到了华为工程师的技术支持。
(六)在Linux机器上,通过ISDN拨号上网(摘自LinuxAid)
经过尝试,我成功地做到了这一点。我的配置为:蓝点Linux 2.0,Kernel-2.2.16,isdn4linux v3.1pre1,上海贝尔生产的ISDN内置卡,型号为SBT6021。
下面介绍具体做法。介绍顺序为:内核->isdn4linux安装->拨号配置->测试。
1、 内核
上海贝尔SBT6021型ISDN内置卡,使用的芯片为Winbond W6692,这是一种与西门子HiSax驱动程序兼容的芯片,该卡是即插即用的,无需手工设定中断请求号和I/O地址。要Linux内核支持这种卡,在编译内核时,必须选中下列选项:
ISDN Support
Support synchronous PPP
(多数ISDN设备拨号上网都是使用同步PPP方式)
Hisax SiemensChipset driver support
Hisax Support for DSS1
(绝大多数ISDN设备使用的协议都是DSS1)
Hisax Support for Winbond W6692
但我不必急于编译内核,如果现有的内核已经包含这些选项了,我又何必重复一遍呢。那我怎么知道现有内核是否已经包含这些选项了呢?看内核编译配置文件/usr/src/linux/.config(注意:文件名以"."开头的文件是隐藏文件,要用ls -a才可看到。)我看到其中有下面这5行内容,对应于刚才的5个选项:
CONFIG_ISDN=m
CONFIG_ISDN_PPP=y
CONFIG_ISDN_DRV_HISAX=m
CONFIG_HISAX_EURO=y
CONFIG_HISAX_W6692=y
"=y"表示内核直接支持(代码已链入内核中),"=m"表示模块支持(代码在另外的内核中,可由内核载入)。于是这就表明,蓝点Linux 2.0的原有内核已包含这些选项了,我就不用重新编译内核啦。
2、 isdn4linux安装
欲配置ISDN,要用到isdn4linux这一套软件。isdn4linux的主要文件有isdnctrl, ipppd等。
获取isdn4linux源码的地址为:
http://isdn4linux.org
取得的文件为isdn4k-utils.v3.1pre1.tar.gz,放于/usr/src目录下。
进入/usr/src目录中,开始安装过程。
进入/usr/src:
cd /usr/src
解开压缩文件:
tar xzvf isdn4k-utils.v3.1pre1.tar.gz
命令完成后多了一个子目录isdn4k-utils,isdn4linux的源码文件就在其中。
进入该子目录:
cd isdn4k-utils
该目录中的README文件详细介绍了如何安装isdn4linux,照章行事即可。
进行配置:
make config
不做任何改变,用缺省的即可。
开始编译:
make
未能通过,失败原因是linux/autoconf.h文件或目录不存在。这个文件就是/usr/include/linux/autoconf.h文件,一查确实不存在。它是在编译内核的时候生成的,而我并未编译内核,所以当然没有了。好吧,想办法生成它吧。
到linux目录并进行配置:
cd /usr/src/linux
make menuconfig
不做任何改变,退出,保存即可。此时一看,/usr/include/linux/autoconf.h文件出来了,这就够了,不必真的去编译内核。
回到isdn4linux目录再编译:
cd /usr/src/isdn4k-utils
make
刚才的问题没有了,但还是未能通过,失败原因是capi20/capi20.c文件中下面几个符号未定义:
CAPI_GET_FLAGS
CAPI_SET_FLAGS
CAPI_CLR_FLAGS
CAPI_NCCI_GETUNIT
CAPI_NCCI_OPENCOUNT
对应的一段源代码为:
int
capi20ext_get_flags(unsigned ApplID, unsigned *flagsptr)
{
if (ioctl(applid2fd(ApplID), CAPI_GET_FLAGS, flagsptr) < 0)
return CapiMsgOSResourceErr;
return CapiNoError;
}
int
capi20ext_set_flags(unsigned ApplID, unsigned flags)
{
if (ioctl(applid2fd(ApplID), CAPI_SET_FLAGS, &flags) < 0)
return CapiMsgOSResourceErr;
return CapiNoError;
}
int
capi20ext_clr_flags(unsigned ApplID, unsigned flags)
{
if (ioctl(applid2fd(ApplID), CAPI_CLR_FLAGS, &flags) < 0)
return CapiMsgOSResourceErr;
return CapiNoError;
}
char *
capi20ext_get_tty_devname
(unsigned applid, unsigned ncci, char *buf, size_t size)
{
int unit;
unit = ioctl(applid2fd(applid), CAPI_NCCI_GETUNIT, &ncci);
if (unit < 0)
return 0;
snprintf(buf, size, "/dev/capi/%d", unit);
return buf;
}
char *
capi20ext_get_raw_devname
(unsigned applid, unsigned ncci, char *buf, size_t size)
{
int unit;
unit = ioctl(applid2fd(applid), CAPI_NCCI_GETUNIT, &ncci);
if (unit < 0)
return 0;
snprintf(buf, size, "/dev/capi/r%d", unit);
return buf;
}
int capi20ext_ncci_opencount(unsigned applid, unsigned ncci)
{
return ioctl(applid2fd(applid), CAPI_NCCI_OPENCOUNT, &ncci);
}
作者未定义它们,我也不知道这几个常量该是多少,怎么办?我从capi20/capi20.h文件中发现,这几个函数是" extentions functions (no standard functions)",扩展的非标准函数,我猜测,这几个函数即使功能不正确,也不会影响ISDN的使用,那么,我就可以把那几个未定义的符号注解起来,使编译通过。修改源码如下:
int
capi20ext_get_flags(unsigned ApplID, unsigned *flagsptr)
{
// if (ioctl(applid2fd(ApplID), CAPI_GET_FLAGS, flagsptr) < 0)
// return CapiMsgOSResourceErr;
return CapiNoError;
}
int
capi20ext_set_flags(unsigned ApplID, unsigned flags)
{
// if (ioctl(applid2fd(ApplID), CAPI_SET_FLAGS, &flags) < 0)
// return CapiMsgOSResourceErr;
return CapiNoError;
}
int
capi20ext_clr_flags(unsigned ApplID, unsigned flags)
{
// if (ioctl(applid2fd(ApplID), CAPI_CLR_FLAGS, &flags) < 0)
// return CapiMsgOSResourceErr;
return CapiNoError;
}
char *
capi20ext_get_tty_devname
(unsigned applid, unsigned ncci, char *buf, size_t size)
{
int unit;
// unit = ioctl(applid2fd(applid), CAPI_NCCI_GETUNIT, &ncci);
if (unit < 0)
return 0;
snprintf(buf, size, "/dev/capi/%d", unit);
return buf;
}
char *
capi20ext_get_raw_devname
(unsigned applid, unsigned ncci, char *buf, size_t size)
{
int unit;
// unit = ioctl(applid2fd(applid), CAPI_NCCI_GETUNIT, &ncci);
if (unit < 0)
return 0;
snprintf(buf, size, "/dev/capi/r%d", unit);
return buf;
}
int capi20ext_ncci_opencount(unsigned applid, unsigned ncci)
{
// return ioctl(applid2fd(applid), CAPI_NCCI_OPENCOUNT, &ncci);
return 0;
}
再次编译:
make
通过了,接着安装:
make install
命令完成后,isdnctrl和ipppd被拷到/sbin目录下。
3、 拨号配置
我看了一些别人写的介绍文章,取用他们写好的例子,修改其中的电话号码,用户名等必须修改的相关内容,然后运行。不幸的是,通常都不能成功。因为这些例子都比较完善而复杂,因此难免和我的配置情况不符合而出错。我决定从简单入手,只进行最基本最必要的配置,先不写成shell文件,而是一条命令一条命令地输入执行,仔细理解其意义,查看其执行结果。等全部试验成功后,再写成shell文件。现在看来,这种做法非常有效,我会同样来处理类似的问题。
echo 1 > /proc/sys/net/ipv4/ip_dynaddr
拨号上网大部分都是使用动态IP地址,比如我上163网,只知道拨打163号码,并不知道远程服务器(即中国电信机房内的163拨号服务器)的IP地址是多少,也不知道它会给我的机器分配什么IP地址。往/proc/sys/net/ipv4/ip_dynaddr中写入"1",就是告诉内核要使用动态IP地址。
modprobe hisax type=36 protocol=2
装入ISDN卡的驱动程序。前面已经说过,上海贝尔SBT6021型ISDN内置卡中使用的芯片W6692是由HiSax驱动程序驱动的,type=36指明了是使用W6692芯片,protocol=2指明了ISDN协议是用DSS1,详细内容可看/usr/src/linux/Documentation/isdn/README.HiSax文件。
isdnctrl addif ippp0
ISDN通过同步PPP方式上网,其对应的Interface会是/dev/ippp0, /dev/ippp1, ...等。这条命令告诉内核,加入ippp0这个Interface,换句话说,告诉内核我有个ISDN设备,准备通过同步PPP方式上网。从此以后,ippp0就代表了我的ISDN设备。
isdnctrl addphone ippp0 out 163
指明拨出的电话号码,我拨出的是163,在中国大陆,通过中国电信上网的大部分也都是163。
isdnctrl eaz ippp0 3382460
指明我自己这台ISDN的电话号码为3382460。
isdnctrl l2_prot ippp0 hdlc
第2层协议用的是hdlc。
isdnctrl l3_prot ippp0 trans
第3层协议用的是trans。
isdnctrl encap ippp0 syncppp
用同步PPP方式包装。
isdnctrl dialmode ippp0 manual
手工拨号方式,在此方式下,要拨号时下isdnctrl dial ippp0命令,要挂断时下
isdnctrl hangup ippp0命令。另外还有auto自动方式,不过,还是先用手工方式比较直观稳妥一点吧。
isdnctrl dialmax ippp0 3
1次拨号有可能连不通,不要紧,程序会自动重拨的,这里规定了最多重拨3次。
isdnctrl huptimeout ippp0 600
线路空闲一段时间后,会自动挂断,缺省是空闲10秒后挂断,太短了,我改为600秒。
ISDN特定的基本配置就这么多了,下面转到普通的网络配置上来。Linux的普通网络配置主要有两个方面:(1)对各Interface本身的配置。Interface指以太网卡,Modem,ISDN等设备,配置信息包括网络地址,网络掩码,网关等,相应的配置工具为ifconfig程序。(2)对路由表的配置。路由表规定了到各个目的地的数据包应走哪个网关,使用哪个Interface等,相应的配置工具为route程序。
在进行配置之前,先看一下我目前的配置情况是什么样的。我这台Linux机器在一个局域网上,局域网的域名为thalia.com,地址为210.96.100.0,这台机器的主机名为gate,地址为210.96.100.10。
看Interface配置:
ifconfig
得到类似下面的信息:
eth0 Link encap:Ethernet HWaddr 00:20:AF:F1:0A:4A
inet addr:210.96.100.10 Bcast:210.96.100.255 Mask:255.255.255.0
inet6 addr: fe80::220:afff:fef1:a4a/10 Scope ink
inet6 addr: fe80::20:aff1:a4a/10 Scope ink
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:14 errors:0 dropped:0 overruns:0 frame:0
TX packets:34 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:10 Base address:0x6000
lo Link encap ocal Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:3924 Metric:1
RX packets:38 errors:0 dropped:0 overruns:0 frame:0
TX packets:38 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
有2个Interface,eth0代表了以太网卡,lo是个“虚”的loopback设备。
看路由表配置:
route
得到类似下面的信息:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
gate.thalia.com * 255.255.255.255 UH 0 0 0 eth0
210.96.100.0 * 255.255.255.0 U 0 0 0 eth0
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
有3条路由信息。
要用上ISDN(ippp0),必须用ifconfig对ippp0进行配置,并用route增加1条使用它的路由。
配置ippp0:
ifconfig ippp0 0.0.0.0 pointopoint 0.0.0.0 netmask 0.0.0.0
指明使用PPP(pointopoint)协议,pointopoint前面是本机地址,后面是远程服务器地址,这里全是0.0.0.0,行吗?行,因为前面已经作了配置echo 1 > /proc/sys/net/ipv4/ip_dynaddr,告诉内核将使用动态IP地址,因此在这里用0.0.0.0并无所谓,当这个PPP连接建立起来后,它会自动用真正的IP地址代替这些0.0.0.0的。
这时候再用ifconfig看一下情况如何:
ifconfig
得到类似下面的信息:
eth0 Link encap:Ethernet HWaddr 00:20:AF:F1:0A:4A
inet addr:210.96.100.10 Bcast:210.96.100.255 Mask:255.255.255.0
inet6 addr: fe80::220:afff:fef1:a4a/10 Scope ink
inet6 addr: fe80::20:aff1:a4a/10 Scope ink
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:64 errors:0 dropped:0 overruns:0 frame:0
TX packets:38 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:10 Base address:0x6000
ippp0 Link encap oint-to-Point Protocol
UP POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:30
lo Link encap ocal Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:3924 Metric:1
RX packets:44 errors:0 dropped:0 overruns:0 frame:0
TX packets:44 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
多了1个ippp0 Interface,但由于未曾建立真正的连接,它的本机地址和远程服务器地址都未给出。
增加1条使用ippp0的路由:
route add default ippp0
这里指定缺省(default)的数据包都经过ippp0传送。缺省的数据包?什么意思?刚才我用route看时有3条路由信息,这些信息指定了发往3个目的地(Destination)的数据包该怎么走,其它没有指定怎么走的数据包(在这里,就是除了哪3种数据包之外的所有数据包),即为缺省数据包,比如要到168.160.224.103(新浪网sina.com.cn)的数据包,就属于缺省数据包。于是这条命令就做到了这一点:如果我要上新浪网看新闻,就得经过ippp0(ISDN),这正是我所希望的。
这时候再用route看一下情况如何:
route
得到类似下面的信息:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
gate.thalia.com * 255.255.255.255 UH 0 0 0 eth0
210.96.100.0 * 255.255.255.0 U 0 0 0 eth0
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
default * 0.0.0.0 U 0 0 0 ippp0
多了1条default路由信息。注意其对应的gateway是"*"。
需要有一个后台服务程序ipppd来为ISDN PPP服务:
ipppd user zzh noipdefault ipcp-accept-local
ipcp-accept-remote defaultroute mru 1500 mtu 1500 /dev/ippp0 &
前面的user zzh指定了用户名为zzh,口令呢?多数163拨号上网使用的认证方法都是PAP认证,用户名,口令信息放在/etc/ppp/pap-secrets文件中,我的用户名为zzh,口令为51888(“我要发发发”,信不信由你,哈),于是修改/etc/ppp/pap-secrets文件如下:
# Secrets for authentication using PAP
# client server secret IP addresses
zzh * 51888
后面的noipdefault ipcp-accept-local ipcp-accept-remote指明了接受远程拨号服务器分配的本机地址和远程服务器地址,这正是动态IP地址的含义。defaultroute指明了当连接建立起来后,增加default路由条目,这是很关键的。mru 1500 mtu 1500指定了最大发送单元和最大接收单元均为1500字节。这个程序为/dev/ippp0提供服务。
4、 测试
好啦,都准备好啦,试一下吧。
拨号:
isdnctrl dial ippp0
看看发生了什么情况:
ifconfig
得到类似下面的信息:
eth0 Link encap:Ethernet HWaddr 00:20:AF:F1:0A:4A
inet addr:210.96.100.10 Bcast:210.96.100.255 Mask:255.255.255.0
inet6 addr: fe80::220:afff:fef1:a4a/10 Scope ink
inet6 addr: fe80::20:aff1:a4a/10 Scope ink
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:29 errors:0 dropped:0 overruns:0 frame:0
TX packets:36 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
Interrupt:10 Base address:0x6000
ippp0 Link encap oint-to-Point Protocol
inet addr:61.142.84.71 P-t-P:202.105.161.206 Mask:255.0.0.0
UP POINTOPOINT RUNNING NOARP MTU:1500 Metric:1
RX packets:22 errors:0 dropped:0 overruns:0 frame:0
TX packets:21 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:30
lo Link encap ocal Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:3924 Metric:1
RX packets:43 errors:0 dropped:0 overruns:0 frame:0
TX packets:43 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
ippp0中的本机地址(inet addr)是61.142.84.71,PPP远程服务器地址(P-t-P)是202.105.161.206,代替了原来指定的0.0.0.0,说明动态IP地址是起作用的。
route
得到类似下面的信息:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
gate.thalia.com * 255.255.255.255 UH 0 0 0 eth0
210.96.100.0 * 255.255.255.0 U 0 0 0 eth0
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
202.0.0.0 * 255.0.0.0 U 0 0 0 ippp0
default 202.105.161.206 0.0.0.0 UG 0 0 0 ippp0
default对应的gateway是202.105.161.206,代替了原来的"*",再看清楚点,它正好是ippp0的远程服务器地址。
怎么知道ISDN的状态呢?
imontty
得到类似下面的信息:
ISDN channel status:
Channel Usage Type Number
---------------------------------------
HiSax Out Net 163
HiSax Off
HiSax1是连出去了(Out),拨打号码是163。
看到归看到,还得实际上去一把才知道行不行。
ping 168.160.224.103 (新浪网sina.com.cn)
通的。
ping sina.com.cn
不行了。域名解析的问题,找到/etc/resolv.conf文件,修改如下:
nameserver 127.0.0.1
指明域名服务器为127.0.0.1(“虚”的loopback),实际上经由路由表中的default条目,转发到远程服务器上,暗渡陈仓了。
再ping sina.com.cn,唔,OK了。
要挂断,下命令:
isdnctrl hangup ippp0
如果想要干净地恢复原状,继续下面的动作,和刚才的拨号配置正好一一相反。
kill ipppd
停止ipppd服务。(看别人写的,我试的时候却杀不掉,不知是不是因为ipppd是在后台运行的缘故。)
route del default
去掉路由表中增加的条目。
ifconfig ippp0 down
isdnctrl delif ippp0
关停并删除ippp0 Interface。
modprobe -r hisax
卸出驱动程序。(我试的时候,有时也卸不掉。)
5、 形成shell文件
逐行命令操作全部通过啦,下面把它们写成shell文件。
/etc/ppp/isdn-start文件内容如下:
# Dyna address
echo 1 > /proc/sys/net/ipv4/ip_dynaddr
# Load module
modprobe hisax type=36 protocol=2
# Add and config ISDN interface
isdnctrl addif ippp0
isdnctrl addphone ippp0 out 163
isdnctrl eaz ippp0 3382460
isdnctrl l2_prot ippp0 hdlc
isdnctrl l3_prot ippp0 trans
isdnctrl encap ippp0 syncppp
isdnctrl dialmode ippp0 manual
isdnctrl dialmax ippp0 3
isdnctrl huptimeout ippp0 600
ifconfig ippp0 0.0.0.0 pointopoint 0.0.0.0 netmask 0.0.0.0
# Add to routing table
route add default ippp0
# Run ipppd
ipppd user zzh
noipdefault
ipcp-accept-local
ipcp-accept-remote
defaultroute
mru 1500
mtu 1500
/dev/ippp0 &
# Dial
isdnctrl dial ippp0
/etc/ppp/isdn-stop文件内容如下:
# Hangup
isdnctrl hangup ippp0
# Stop ipppd
kill ipppd
# Remove from routing table
route del default
# Del ISDN interface
ifconfig ippp0 down
isdnctrl delif ippp0
# Unload module
modprobe -r hisax
让它们成为可执行文件:
chmod a+x /etc/ppp/isdn-start
chomd a+x /etc/ppp/isdn-stop
以后事情就简单了。要拨号上网,下命令/etc/ppp/isdn-start;要下线挂断,下命令/etc/ppp/isdn-stop。
6、 下一步:共享ISDN上网
我这台Linux机器是在一个局域网上的,现在这台机器可以上网了,怎么让局域网内的其它Win98, Win2000机器通过这台机器也能上网呢?其中一个简单的方案就是使用IP Masquerade(IP伪装)技术。我也做到了,操作过程写在我的另一篇文章《用Linux+IPChains代替Windows+WinGate》中。
参考资料:
Matt Welsh, Matthias Kalle Dalheimer, Lar Kaufman著,Linux权威指南,洪峰 译,中国电力出版社,2000
http://zzh-cn.com
七.ISDN常见故障及排除
1、用ISDN拨号后显示的速率仅为10几K,如果是byte,那么您就是已经在用128K拨号上网了,56K, 64K 128K指的都是 BitS/S,换算成浏览器或Ftp之类软件显示的Bytes/S时,应当除8,无论ISDN还是Modem都是如此。
2、 ISDN比普通拨号快多少?
如果您访问国内站点,ISDN将比MODEM快较多,但以不能保证64K/128K的速率,具体应视当时的网络拥挤程度而言。有的ISDN用户用128K速率在省内下载软件可以达到10K以上,而一旦出省下载就大幅度下降就是这个道理。看国外站点,ISDN比MODEM快的有限,主要是因为出口带宽的原因。
3.同时用Modem和ISDN拨号上263,访问相同的站点,为什么ISDN比Modem还慢?(反应在任务栏里的电脑图标灯闪烁频率不一样)
那么解释上述现象的原因是:Modem是模拟连接,在浏览器下脚的连接速率显示总是有字节传送,看起来一直在传输数据,感觉比较快;而ISDN是数字连接,实际有数据传输的时候,在浏览器下脚的连接速率才显示,没数据传送的时候,看起来和死掉了差不多,感觉很慢。实际上,ISDN即使不比Modem传输数据快多少,也不会比Modem慢,这点可以通过同时在同一站点下载同一文件,看看实际使用时间,作个比较。
4、怎样从NT1上判断电话线是否连上了?
所以用上海贝电的为例说明一下.首先看电源灯,通过电话局远端供电时为红色,本地交流适配器供电为绿色.STATUS灯指示工作状态.快闪(8次/秒)表示U口正在连接中,慢闪(1次/秒)表示S/T接口与终端设备正在连接中.如果长亮,表示连接成功.
5、 打电话的时候经常有杂音
一般来讲,换做ISDN后电话音质会比原来强一些,如果有杂音请检查接线部分,看看是否有接线不好的地方,如果正常则拨打112测线,看看外线有没有问题。
6、 从NT1+到终端的最大距离是多少?
上海贝尔的产品可以支持1000米。
7、 ISDN到底能不能达到64K/128K?为什么有时感觉ISDN没有MODEM快?
ISDN的一个B信道肯定是64K,两个B也就是128K,这一点不用担心,因为他是数字的传输形式,所以不会象模拟那样受到线路的影响而传输速率不稳定。并不是ISDN本身的问题,而是ISP为ISDN分配了多少带宽的问题,打个比方,ISP为ISDN分配的带宽为64K,而为MODEM分配的带宽是2M,那么有十个用户使用ISDN上网,当然没有十个用户使用MODEM快了。
8、 LINUX能不能用ISDN上网?
linux当然可以,问题是你需要找到相应的驱动。据我了解,linux下以有人写了一些ISDN卡的驱动,不过应该是北美的产品好找些,ecion可能有戏,你先到网上找驱动吧,有驱动的,再看国内有没有相应的硬件买。辽阳的用户大部分都是上海贝尔的产品,建议到上海贝尔的网站找一找ISDN for LINUX的驱动程序。
9、 话机拿起却无拨号音,看一下NT1+的第三个灯有没有亮,如果没亮,把话机放下过一会再拿起,或者拔掉电话线和电源线,重新插好。(先插电话线,后插电源线)
10、按照以上的方法电话拿起仍旧无拨号音,并且往该电话拨号也不好使。检查是否进户线直接接到NT1+上,外线是否有分机,有防盗器。如果有分机应当从NT1+的PHONE接出。应当保证进户线直接接到NT1+,中间尽量没有任何附加设备,各自情况各不相同,有的电话可以在NT1+加载分机,请用户自行调测。
11 、可以打电话却不能上网
检查电源是否插上,上海贝尔支持程控交换机远端供电,不插电源也可打电话,但如果上网的话程控交换机就不行了,需要您把电源插上方可上网。另:停电的时候不能用话机的免提功能。
12、可以上网却不能打电话,包括电话进出。
我在安装调试ISDN时也碰到过这种情况,具体为什么也说不太清楚。但绝对不是设备和机房的毛病,我曾经换过一部新的NT1+过了一段时间又不好使了,换成前一个怀疑坏的NT1+又可以正常工作了。后来我总结出来,如果出现这种情况可以先把外线(插在NT1+的ISDN口)和电源线(插在NT1+上的)拔掉,过一会再插上,问题就可以解决了。
13、 驱动程序升级后ISDN却不能用了
目前我们电信局安装的ISDN驱动程序都是2。0版本的,如果您将1。0版本的驱动程序升级为2。0则有可能设备不能正常工作,那么就需要重新安装系统了,其实1。0和2。0并没有什么区别,只是装在win95中时1。0需要95源盘,而2.0包含了95/98/NT的驱动。
14、有时ISDN的PC卡会和花王,yamaha牌子的声卡有冲突,表现为PC卡装完后在系统里有惊叹号,而在中断里没有冲突。这时应先把声卡拔下来,重新安装ISDN的PC卡,然后再装声卡。有的主板里有可以让PCI卡共用一个中断的选项,如果有请打开它,一起安装声卡和PC卡。如果还不可以的话,请考虑换个牌子的声卡.
15、关于网通卡不能上ISDN的解决方案
正确安装ISDN后桌面上会有一个上海贝尔的图标,双击后里面有VCOMM INSTALLTION选项,双击安装fax程序,并在ISDN连接中附加设备中选中shanghai beier softmodem v3.4+f则网通卡也可以使用了.
八.在SuSe Linux下安装 ADSL
在SuSe Linux 6.4上如何通过ADSL上网,选择它的原因是它对硬件的支持很丰富而且配置方便。
1、Packege
SuSe 6.4已含pppoed-0.46-7。
2、设置网卡和网关
# ifconfig eth0 mtu 1492 (不要为eth0设任何IP地址)并确保你的default gateway 为空。
3、将用户名和密码加入到/etc/ppp/pap-secrets和/etc/ppp/chap-secrets.
应象这样: "szmycom@163.gd" * "mypassword"
4、编辑/etc/resolve.conf
nameserver 202.96.134.133
nameserver 202.96.128.68
5、在/etc/modules.conf中加入下面一行:
alias char-major-144 pppox
6、修改文件 /etc/ppp/options.
# general options
idle 600
# this is a must user
szmycom@163.gd
sync
local
nocrtscts
noauth
usepeerdns
mru 1490
mtu 1490
# this is recommended
defaultroute
hide-password
nodetach
#
# switch off all compressions
# this is a must
noaccomp
nopcomp
# this is recommended
novj
novjccomp
nobsdcomp
nodeflate
noccp
注意:登录名应用你自己的。
7、运行 /usr/sbin/pppoed开始连接。
注意:只有root 用户可以启动连接。
如果你使用的网络设备名不是eth0, 你需要以这样的方式来启动
/usr/sbin/pppoed -I ethX, X是网卡的编号。
8、检验
测试连接用tail -f /var/log/messages可跟踪并诊断ADSL的连接状态,用ifconfig可以查看你的ppp0设备被分配的IP地址,如果地址分配成功,就说明已建立连接。用route命令可查看拔入服务器为你指定的网关地址。用pingwww.163.com 应该可以ping通,如果不通,有可能是你的DNS设置问题。
9、代理局域网上网再安装一个网卡,
设置IP地址为192.168.1.1; 加入一条IP转发的规则:
/sbin/ipchains -A forward -j MASQ -s 192.168.1.0/24 -d 0.0.0.0/0
局域网内client将192.168.1.1设为缺省网关,就可通过这台LINUX电脑上网。
在Redhat上,您可参阅:http://www.roaringpenguin.com/pppoe.html
, 只要/etc/ppp/options的内容与Suse中设置一样,就应该可以成功。您不妨试一下。
九.在LINUX (Mandrake 7.0)下安装ADSL
环境
系统:Linux Mandrake release 7.1 (helium) Kernel 2.2.15-4mdk on an i686
ADSL客户端设备:ANT:Alcatel A1000 10/100baseT 接口的网桥;
NIC:TP-Link 8139B 10/100M网卡。
ANT与NIC用一对一五类双绞线连接。
没有固定IP地址,有局端动态分配。
所需软件包:pppoed-0.48b1.tgz,可在http://www.davin.ottawa.on.ca/pppoe/ 得到。
一、网卡设置
先安装一块网卡,并配置好网卡的参数(相关配置手册)。如我的网卡IP为192.168.0.8。
二、安装PPPOED软件包
在安装好系统后,系统会缺省安装PPP软件,并在/usr/sbin下生成pppd,pppstats等文件,故不用安装PPP软件包了。
将下载的软件包pppoed-0.48b1.tgz解压到/usr/src/pppoed-0.48b1目录下:
# tar –zxvf pppoed-0.48b1.tgz
进入该目录,并运行命令:
#Install_pppoed
出现以下提示,根据提示进行安装如下:
Linux source directory[where kernel headers are found] [/usr/src/linux]:
(原码路径)(按回车)
Module install dir [/lib/modules/2.2.15-4mdk/net]:
(模块安装路径)(按回车)
RH-like init directory [/etc/rc.d/init.d]: 初始化路径)(按回车)
compiler for modules. If you have RH7.0, select kgcc instead of gcc
[gcc]:(编译时所需的
C环境,Mandrake 7.0下,是用gcc)(按回车)
Kernel source: /usr/src/linux
init_dir: /etc/rc.d/init.d
module install directory: /lib/modules/2.2.15-4mdk/net
Compiler for modules : gcc
is this correct?(answer y/n only)
[y]:(询问以上设置是否正确,如果正确就按y)
然后就进行编译过程。编译完后出现以下提示:
Do you want me to setup PPP for you?(answer y/n only)
[y]:(是否要设置PPP)(按回车)
Please enter your Username for your ISP [ ]: (输入用户名)(如 abc)
Please enter your Password for your ISP [ ]:(输入你的密码)
Please enter your domain name
This is often trailing the @ in your email address
If your email was John@Doe.com, then most often, your
domain name would be: Doe.com
domain name : [ ]: (输入你的域)(如我的是163.gd)
collected information
User Name : szourweb
passWord: ourweb
domainName: 163.gd
is this correct?(answer y/n only) [y]:
(确认你的信息是否正确,如果正确就按回车)
setting ppp-options ....
Setting /etc/ppp/pap-secrets* perms to 600
Do you want me to setup DNS for you?(answer y/n only)
[y]:(是否设置DNS,按y)
Please enter your Primary DNS server
It should be in the form ###.###.###.###
Where the "#" is either a number or blank space
Primary DNS server: [ ]:
(输入数据局提供的DNS服务起IP,如:202.96.134.133)
If you have a Secondary DNS server please enter it
If none, just press enter
Secondary DNS server: []: (如果有辅助DNS,则在此输入,如:202.96.128.68)
collected information
nameServer1 Name : 202.96.134.133
second nameserver: 202.96.128.68
is this correct?(answer y/n only) [y]:(再次确认信息是否正确,正确则按y)
would you like to start pppoed?(answer y/n only) [y]:(提示是否启动pppoed)
到此pppoed安装完成,在结束时,如果提示:
Starting pppoed: Warning: modutils is reading from /etc/modules.conf and
ignoring /etc/conf.modules. The use of /etc/conf.modules is
depreciated,
please remove /etc/conf.modules as soon as possible. Command
rm /etc/conf.modules
则请删除/etc/conf.modules.模块配置文件改用modules.conf。
三、配置相关文件
pppoe安装后,在modules.conf中加入:
alias char-major-144 pppox
并将配置信息写入/etc/sysconfig/network-scripts/ifcfg-ppp0中
更改ifcfg-ppp0中的这一句:
MODEMPORT="/dev/ppp0"
为:MODEMPORT="/dev/pppox0"
在安装完pppoed后,/etc/ppp/目录下的两个文件应该如下:
-------------------------------------options-------------------------------------
lock
local
nocrtscts
noauth
#be careful with mtu/mru if you are masquerading.
# look at Kal Lin's page at http://www.cs.toronto.edu/~kal/hse/resource.html
mru 1490
mtu 1490
#please make sure you have noaccomp for now
noaccomp
#the construct below is needed by sympatico
name "szourweb@163.gd"
#you might want to change defaultroute if you have more
#than one pppoe session
defaultroute
hide-password
sync
#it might be a good idea to uncoment the debug below
#debug
#kdebug 7
#if you use the -R option to make it persistent
#then uncomment the next two lines below
#lcp-echo-interval 240
#lcp-echo-failure 3
#nodetach
----------------------------------end
options---------------------------------
-------------------------------------
pap-secrets------------------------------
# Secrets for authentication using PAP
# client server secret IP addresses
abc@163.gd * 123456
---------------------------------end
secrets----------------------------------
根据自己的实际情况更改相关项目。
至此,软件设置完成。
将ANT和NTC连接无误后运行:
# /etc/sbin/pppoed
就可以连接上了。
你可以:
# tail -f /var/log/message
看整个连接过程。
如果连接上了将出现以下类似信息:
Oct 25 01:59:59 adsl pppoed[10323]: starting /usr/sbin/pppd to interface
/dev/pp
pox0
Oct 25 01:59:59 adsl modprobe: Note: /etc/modules.conf is more recent than
/lib/
modules/2.2.15-4mdk/modules.dep
Oct 25 01:59:59 adsl kernel: registered device ppp0
Oct 25 01:59:59 adsl pppoed[10322]: Line id which died is: 0
Oct 25 01:59:59 adsl pppoed[10322]: OK we got killed
Oct 25 01:59:59 adsl pppoed[10322]: ppp_connect came back!
Oct 25 01:59:59 adsl pppd[10325]: pppd 2.3.11 started by root, uid 0
Oct 25 01:59:59 adsl pppd[10325]: Using interface ppp0
Oct 25 01:59:59 adsl pppd[10325]: Connect: ppp0 <--> /dev/pppox0
Oct 25 02:00:04 adsl kernel: PPP BSD Compression module registered
Oct 25 02:00:04 adsl kernel: PPP Deflate Compression module registered
Oct 25 02:00:04 adsl insmod: Note: /etc/modules.conf is more recent than
/lib/mo
dules/2.2.15-4mdk/modules.dep
Oct 25 02:00:05 adsl pppd[10325]: local IP address 61.141.206.79
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Oct 25 02:00:05 adsl pppd[10325]: remote IP address 61.141.204.1
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[root@adsl sysconfig]# netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt
Iface
192.168.0.8 0.0.0.0 255.255.255.255 UH 0 0 0
eth1
192.168.1.8 0.0.0.0 255.255.255.255 UH 0 0 0
eth0
61.141.204.1 0.0.0.0 255.255.255.255 UH 0 0 0
ppp0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0
eth0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0
eth1
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 61.141.204.1 0.0.0.0 UG 0 0 0
ppp0
# ifconfig
ppp0 Link encap oint-to-Point Protocol
inet addr:61.141.206.79 P-t-P:61.141.204.1 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1490 Metric:1
RX packets:13 errors:0 dropped:0 overruns:0 frame:0
TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:10
注意:在/usr/doc/pptp-adsl-fr-1.0.2目录中有Alcatel的ADSL.htm,如果按照该文件的做法,运行pptp
alcatel ,会出错:
# tail –f /var/log/message
Oct 25 01:04:07 adsl pptp[10036]: connect: No route to host
Oct 25 01:04:07 adsl pptp[10036]: Could not open control connection to
192.168.0.138
Oct 25 01:04:07 adsl pptp[10035]: Call manager exited with error 256
十.如何让Linux使用ADSL联机分享
目前许多 Linux Distribution 都已经把 IP Masquerade 支持编入到
kernel 内了,所以重编 kernel 的部份可以略过,剩下的就是专心
于把 IP Forwarding 打开,并使用 ipchains 程序来设定即可。
另外就是,连上 internet 的 linux 主机 ip 假设是 210.222.111.100
而 Client 端要上网的 IP 就是使用 192.168.1.x (x: 1 ~ 254) 。
那 Linux 主机要加装第二个网络卡,IP 设定为 192.168.1.1,Client
端的主机 IP 就使用 192.168.1.x (x: 2 ~ 254),netmask 为 255.255.255.0
而 gateway 就指向 Linux 主机的 192.168.1.1 IP 位置。希望使用单一网络卡的话,请设定使用 eth0:0 这个 IP Alias 的方式把 IP 设定为192.168.1.1 即可。这个部份使用 RedHat LINUX 的话,可以使用 netconf程序,在IPaliases for virtual hosts 里面来设定。手动的话,就是使用ifconfig eth0:0 192.168.1.1 netmask 255.255.255.0 即可。
OK.. 只要 Linux 主机把 IP Forwarding 打开,并使用 ipchains 程序
设定好后,Client 端就可以透过 Linux 这台 gateway 主机的协助而上网了。
ipchains -P forward DENY
ipchains -A forward -j MASQ -s 192.168.1.0/24 -d 0.0.0.0/0
IP Forwarding ,redhat 可以使用 netconf 程序,在 Routing and gateways
---> Set Defaults ,把 Enable routing 选起来即可。或者是改
/etc/sysconfig/network 档案,把 FORWARD_IPV4= 设定为 "yes" 即可。
而这个步骤,其实就是把 /proc/sys/net/ipv4/ip_forward 档案内容改成 1
|
|