分享
 
 
 

Linux拨号设置完全手册

王朝system·作者佚名  2006-11-23
窄屏简体版  字體: |||超大  

本节的目的是在linux下设置ppp,使其能拨号并连接到你的ISP,从而将你的机器与Internet相连,进而你就可以在网上为所欲为了。

喜欢条理清晰的文章,所以我写的东西也尽量做到有条理。下面就是linux ppp客户端设置的一般步骤:

1编译内核使其支持ppp。

2设置串行端口和调制解调器。

3掌握你的ISP的信息。

4安装拨号所需软件并进行设置。

5手动方式建立ppp连接。

6使ppp连接自动化。

7设置域名解析(DNS)。

8其他问题。

1.1编译内核使其支持ppp

要实现ppp客户,一是需要内核支持ppp,另外就是需要ppp的软件pppd(ppp daemon)。编译内核虽然不难,但也并非简单的一塌糊涂,庆幸的是,在大多数情况下,你不用重新编译你的内核。我使用的是RedHat 6.0,它带的内核就已经支持ppp了。其他各种发布版本的linux内核也是支持ppp的。如果你在使用自己编译的内核,你就要注意这个内核是否支持ppp。编译内核并不是本文的范围,如果你确实要自己重新编译内核,请查阅相关文档。

1.2设置串行端口和调制解调器

串口设备文件

调制解调器是串行设备,外置的需要连到一个串口上,内置自己有一个串口。大家知道,UNIX系统对外设的操作都是通过特定的设备文件完成的,Linux下串口设备文件的命名和DOS的关系如下:

DOS COM1 = Linux /dev/cua0 (and /dev/ttyS0)

DOS COM2 = Linux /dev/cua1 (and /dev/ttyS1)

等等。

一般来说/dev/cua*是用来拨出的,/dev/ttyS*是用来拨入的,但现在好像已经不加以区分了,统统用的是/dev/ttyS*。如果你的机器上没有/dev/ttyS*,你需要用mknod来自己建立这些设备文件,但有个脚本程序MAKEDEV可以简化这个工作:

# cd /dev

# ./MAKEDEV ttyS0

设置中断号和I/O地址你不需要阅读这一节,除非你想要使用三个或更多的串行设备,比如一个串行鼠标,三个 modem 。

一般来讲 COM1 和 COM3 共用 IRQ3 , COM2 和 COM4 共用 IRQ4 ,一个设备必须唯一对应一个 IRQ 号才行,如果有三个以上的串行设备,就要把别处没用的中断号拿过来用了。使用如下命令设置中断号:

/sbin/setserial /dev/ttyS0 irq 3 # 串行鼠标

/sbin/setserial /dev/ttyS1 irq 4 # MODEM 1

/sbin/setserial /dev/ttyS2 irq 5 # MODEM 2

/sbin/setserial /dev/ttyS3 irq 9 # MODEM 3

你有必要将这些命令放在 /etc/rc.d/rc.local 中,使其在 linux 启动时运行。你可以使用:

cat /proc/interrupts

来察看系统的中断设置,以确保没有中断冲突。 I/O 地址与中断一样,必须唯一。你可以设置硬件跳线来改变 I/O 地址。一般串行口的 I/O 地址是这样的:

ttyS0 address 0x3f8

ttyS1 address 0x2f8

ttyS2 address 0x3e8

ttyS3 address 0x2e8

一般情况下,你没有必要改变串行口的 I/O 地址。可以使用命令 cat /proc/ioports

来察看系统的 I/O 地址设置,以确保没有冲突。

设置调制解调器

一般情况下,调制解调器的出厂设置就很合适了,不用改变什么。但如果你把调制解调器搞得一塌糊涂,就需要对它进行从新设置。由于我这方面没有实践经验,如果你真的不幸遇到这种情况,就去看看调制解调器的说明吧。

需要说明的是, linux 不支持所谓 winmodem ,这种 modem 需要特殊的 windows 驱动程序才能使用,目前还没有 linux 下的驱动。据说这种 winmodem 就是所谓的“软猫”,我看有点像。

1.3 掌握你的 ISP 的信息

由于你是通过 ISP 与 Internet 连接的,所以掌握 ISP 的信息对于你拨号是很重要的,下面列出了你应该知道的基本信息:

拨号服务的电话号码

服务器使用动态 IP 地址分配还是静态的 IP?

ISP 的域名服务器( DNS ) IP 地址是什么 ?

登录服务器时都要回答什么问题?

如果服务器是 Windows NT ,它是否使用微软的 PAP/CHAP 系统 ?

这里可能会有一个问题 Windows 95 系列的拨号设置允许让 DNS 的地址在连线过程中传到客户端。因此你的 ISP 可能会告诉你不需要知道 DNS 服务器的 IP 地址。对于 Linux 来说,它不允许在连线之时动态地指定 DNS 的 IP 地址。所以你需要知道 DNS 地址并自己设置 DNS 。

对于第 5 点,由于我没有实践经验,并且实际应用比较少见,就不做讨论了。请参阅相关文档。

1.4 安装拨号所需软件

ppp 客户所需的程序有 chat 和 pppd ,如果你的机器上还没有这两个程序,就要安装它们。在 RedHat 中,使用如下命令:

rpm -Uvh ppp-2.3.7-2.i386.rpm

另外还有一个终端通讯程序 minicom ,在我们这里是用来测试拨号用的,也要安装上:

rpm -Uvh minicom-1.82-5.i386.rpm

chat 程序的用途是拨号并等待提示,根据提示输入用户名和密码等登录信息。 pppd 的用途是建立并维持与服务器的 ppp 连接,传输数据。

手动方式建立 ppp 连接

在进行了上面 4 项内容后,我们就要进行拨号了!这一节介绍的是一种手动的方法,目的是用来测试的。不管是手动还是后面要讲的自动方式,整个 ppp 连接很明显的分成两个步骤:

拨通 ISP 的电话,建立物理线路的连接,并启动 ISP 端的 pppd 程序。

启动本机的 pppd 程序与服务器端的 pppd 进行握手,建立 ppp 连接。

你会在以后的叙述中很清楚的看到这两个步骤。

如果你想节约时间,可以越过本节,直接配置自动 ppp 。但是作为 step by step 的建议,你还是应该阅读本节,虽然你并不一定要实际的操作它。

用 minicom 测试拨号

首先我们用 minicom 测试一下,看看能否拨通 ISP 。我使用的是 RedHat6.0 自带的 minicom ,其他版本的 minicom 可能热键不同。在运行 minicom 之前,需要建立 /dev/modem 这个设备文件,比如我的 modem 接在 COM2 上,使用如下命令建立 /dev/modem :

ln /dev/ttyS1 /dev/modem

运行 minicom ,输入 Ctrl-A ,再敲 Z 就可以看到帮助,此时按 D ,就是拨号,会出现一个界面,此时选择 manual (手动),并输入 ISP 的电话号码,调制解调器一阵乱响之后,会有几声音乐响,并在屏幕上提示按任意键继续,按任意一个键,就会出现你 ISP 的信息,并提示输入 username , password ,有可能还要提示你选择 ppp 连接还是 slip 连接等等。现在服务器端的 pppd 应该被启动,表现就是会出现如下的垃圾字符: }8}!}$}%U}"}&} } } } }%}& ...}}"}(}"} .~y}

至此,说明你的机器拨号正常,可以与你的 ISP 正常连接。在这一步,你需要记录下拨号服务器的提问,以及你的回答,以便今后实现自动拨号。

用 pppd 建立 ppp 连接

上面只是测试拨号能否成功,下面就是要建立 ppp 连接。

还是用 minicom ,如前所示进行拨号,直到出现垃圾字符,此时退出 minicom(Ctrl-A,Q) ,注意:不是 reset ,只是退出。然后执行 pppd 程序如下:

pppd debug lock modem crtscts defaultroute /dev/ttyS1 115200&

debug 是说要在 /var/log/messages 留下调试信息。 Lock 是说锁定串口设备。 Modem 是说用调制解调器的控制信号。 Crtscts 是说使用硬件数据流控制, defaultroute 是说在本机路由表中加入一项缺省路由,它使你不仅能连到拨号服务器,还能通过它连接整个 Internet 。 /dev/ttyS1 是说 modem 在 COM2 口上, 115200 是串口的速率。 & 是说这个程序在后台执行。

等一段时间, ppp 连接建立之后,运行 ifconfig ,这是你就会看到 ppp0 的网络接口,并能看出你被分配的 ip 地址和对端服务器的 ip 地址。运行 route ,你会看到对端服务器的 ip 地址也被加入了路由表。好了!你的拨号成功了!此时可以 ping 一下 Internet 上的某个主机的 IP 地址,因该是没问题的。

现在还不能使用域名,因为还没配(废话)。

如果你的机器本身是连在局域网上的,你要确保在拨号之前没有缺省路由,就是在 route 命令中看不到 default 或 0.0.0.0 。原因很简单,拨号会产生一个缺省路由,如果原来就有一个,拨号产生的缺省路由就不起作用,你就不能连到 Internet 上,而还是在局域网里。可以用命令:

route del -net default

删除以前的缺省路由,再进行拨号,从而使拨号产生的缺省路由有效。

怎样才能知道 ppp 连接建立了呢?在一个单独的虚拟控制台上运行:

tail -f /var/log/messages

你就可以动态的观察各种日志信息,包括 pppd 的调试信息。当你看到:

Jun 23 16:10:31 hxf pppd[1234]: local IP address 210.78.131.151

Jun 23 16:10:31 hxf pppd[1234]: remote IP address 192.168.10.21

这样的信息就说明 ppp 连接成功了,服务器已经给你分配了地址,接着你就可以运行 ifconfig 、 route 、 ping 等程序来测试你的拨号网络了!当然,如果没有成功,你也可以根据 pppd 的调试信息判断错误原因,以便进行改正。

断开连接

当测试通过后,需要把连接断掉,使用如下命令:

killall pppd

手动方式建立 ppp 连接

在经过手动连接测试之后,我们就要把这些变成自动的,我们的目的是只用一个命令就能实现拨号连接。

前面我们说过,要使拨号自动化需要两个程序 chat 和 pppd 。在 RedHat6 里,它们包含在 ppp-2.3.7-2.i386.rpm 这个包里面,安装这个软件包,就会生成 /etc/ppp 目录和 /usr/doc/ppp-2.3.7 目录,在 /etc/ppp 目录中是几个 pppd 的配置文件,在 /usr/doc/ppp-2.3.7 中是 pppd 的文档,在 scripts 子目录里有如下几个文件:

/usr/doc/ppp-2.3.7/scripts/ppp-on # pppd 程序的脚本文件

/usr/doc/ppp-2.3.7/scripts/ppp-on-dialer # chat 程序的脚本文件

/usr/doc/ppp-2.3.7/scripts/ppp-off # 断线脚本文件

这就是我们要讨论的几个文件。我们需要修改的是前两个文件。

ppp-on-dialer 的功能是完成拨打电话,并输入所需登录信息完成登录,并启动服务器端的 pppd ,就是我们曾经看到的垃圾字符。 ppp-on-dialer 实际上就是完成我们在测试时用 minicom 拨号所实现的那部分功能。

ppp-on 的功能就是测试时 pppd 程序完成的功能,它启动本机的 pppd ,与服务器端的 pppd 进行对话,实现端对端( ppp )的连接。

我们的目的是把这两部分连接起来,用一个命令就能完成整个拨号连接的过程,这是通过 pppd 程序的一个参数 connect 完成的,你会在下面看到它的用法。下面就详细介绍这两个脚本文件:

pppd 脚本 ppp-on

下面就是 ppp-on 的内容,我们先来看看有什么东西:

--------------------------------------------------------------------------------

#!/bin/sh

#

# Script to initiate a ppp connection. This is the first part of the

# pair of scripts. This is not a secure pair of scripts as the codes

# are visible with the ps command. However, it is simple.

#

# These are the parameters. Change as needed.

TELEPHONE=555-1212 # The telephone number for the connection

ACCOUNT=george # The account name for logon (as in George Burns)

PASSWORD=gracie # The password for this account (and Gracie Allen)

LOCAL_IP=0.0.0.0 # Local IP address if known. Dynamic = 0.0.0.0

REMOTE_IP=0.0.0.0 # Remote IP address if desired. Normally 0.0.0.0

NETMASK=255.255.255.0 # The proper netmask if needed

#

# Export them so that they will be available at ppp-on-dialer time. export TELEPHONE ACCOUNT PASSWORD

#

# This is the location of the script which dials the phone and logs

# in. Please use the absolute file name as the $PATH variable is not

# used on the connect option. (To do so on a root account would be

# a security hole so dont ask.)

#

DIALER_SCRIPT=/etc/ppp/ppp-on-dialer

#

# Initiate the connection

#

# I put most of the common options on this command. Please, dont

# forget the lock option or some programs such as mgetty will not

# work. The asyncmap and escape will permit the PPP link to work with

# a telnet or rlogin connection. You are welcome to make any changes

# as desired. Dont use the defaultroute option if you currently

# have a default route to an ethernet gateway.

#

exec /usr/sbin/pppd debug lock modem crtscts /dev/ttyS0 38400 \

asyncmap 20A0000 escape FF kdebug 0 $LOCAL_IP:$REMOTE_IP \

noipdefault netmask $NETMASK defaultroute connect $DIALER_SCRIPT

--------------------------------------------------------------------------------

带 # 的行是注释,蓝颜色的地方是你应该注意并根据实际

情况修改的。

文件的前一部分定义了 ISP 的电话和用户信息,并用 export 命令将这几个变量输出到当前运行的环境中,使它们可以在其他文件中被使用,一会儿我们将看到在 ppp-on-dialer 文件中使用了这几个变量。

在文件的中间部分定义了变量 DIALER_SCRIPT ,它的值是 ppp-on-dialer 的完整路径,你要根据你的具体情况加以修改。

文件尾部就是我们曾经见过的 pppd 和它一大堆的参数, exec 是执行的意思,每一行末尾有一个“ \ ”,表示这一行没有结束,下一行的内容是这一行的继续,不算两行。这里我们需要修改的是 modem 的串行口设备文件和速率,串口速率我一般都写成 115200 ,不要认为这是 modem 的速率,这只是串口速率,修改这个值不能提高你的 modem 速率。其他参数有些我们已经做过说明, connect $DIALER_SCRIPT 的意思是通过执行 DIALER_SCRIPT 所指的拨号脚本,实现拨号。通过 connect 参数,把 ppp-on 和 ppp-on-dialer 两个脚本联系起来,实现整个拨号连接过程。 chat 脚本 ppp-on-dialer

现在你应该明白 ppp-on 和 ppp-on-dialer 的关系了,下面就看看 ppp-on-dialer 是怎么实现自动拨号的:

[1] [2] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有