FreeBSD连载(36):PPP协议

来源: 作者: 2007-11-07 出处:pcdog.com

dns  freebsd  ios  安全  路由配置  

PPP协议

  通过电话连接使用IP协议有两种协议,一种为SLIP协议,另一种为PPP协议,FreeBSD支持这两种协 议,但是SLIP协议已经过时,当前已经很少有ISP使用这种方式提供接入服务了,而PPP协议则成为了标准。

  建立一个PPP连接需要以下过程:

  FreeBSD对PPP提供了两种不同方式的支持,一种为内核级PPP,它将PPP协议代码编译进内核,并运 行一个PPP守护进程pppd,提供对PPP的支持,这是一种传统的方法,但配置起来较困难。另一种为用户级PPP, 它使用一个应用程序ppp,通过通用tunnel设备传递PPP数据,配置较为容易。一般情况下可以使用用户级PPP 来建立拨号方式的Internet连接。

  要建立PPP连接,首先要检查串口、modem和电话线连接是否正确。可以使用一些通信软件来帮助进行诊断, 例如minicom,如果使用minicom能正常拨号,并在拨ISP的拨号服务器时能出现username和password 提示,就说明串口和modem的配置正确无误。接下来就可以配置PPP连接。

  用户级PPP使用tunnel设备进行PPP数据的传递,因此内核中必须支持相应的tunnel设备,通常为 tun0。缺省内核中支持这个伪设备(pesudo-device tun),/dev目录下也具备相应的设备文件t un0。如果同时需要多个拨号连接,就可以增加内核中支持的伪设备数量和相应的设备文件。

  要使用ppp,还需要设置它的配置文件,这些文件位于/etc/ppp目录中。缺省情况下,/etc/ppp 目录下安装了这些文件的例子:

# ls -l /etc/ppp


total 21
drwxr-xr-x 2 root wheel 512 Aug 17 16:18 .
drwxr-xr-x 8 root wheel 1536 Aug 29 18:31 ..
-rw-r--r-- 1 root wheel 5112 May 20 20:06 ppp.conf.sample
-rw-r--r-- 1 root wheel 1130 May 20 20:06 ppp.conf.server.sample
-rw-r--r-- 1 root wheel 1894 May 20 20:06 ppp.deny
-rw-r--r-- 1 root wheel 1665 May 20 20:06 ppp.dialup.sample
-rw-r--r-- 1 root wheel 1402 May 20 20:06 ppp.linkdown.sample
-rw-r--r-- 1 root wheel 1422 May 20 20:06 ppp.linkup.sample
-rw-r--r-- 1 root wheel 1705 May 20 20:06 ppp.pap.dialup.sample
-rw-r--r-- 1 root wheel 313 May 20 20:06 ppp.secret.sample

  这些以sample结尾的文件都给出了最常用的配置,因此只需复制生成正确的设置文件,再稍加修改, 就能用于使用者自己的拨号连接。

  ppp.conf是用户级PPP的主要配置文件,可以从ppp.conf.sample生成适合自己的ppp.conf。ppp.conf 文件使用带有冒号的标签标识不同的选项,第一项标签通常为default:,用于设置缺省的选项。

default:


set log Phase Chat Connect Carrier LCP IPCP CCP tun command
set device /dev/cuaa2
set speed 115200
deny lqr
set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \"\" AT OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT"

  注意default:为这一项的标签,必须位于一行的开始,而其他的行是这一项的具体配置,因此使用一个空白 字符开头。否则语法错误就造成不能ppp不能正常建立连接的问题。

  第一个设置set log用于设置连接过程中要记录的日志内容,这有助于帮助解决连接过程中出现的故障;第二 项设置set device设置连接使用的串口设备,本文件中设为第三个串口cuaa2;第三项设置了串口与mode m的连接速度,115200为PC常用的串口通信芯片UART 16550的最大通信速率;第四项在该medom上屏 蔽线路质量请求lpr;最后一项为发送到medom的一些命令和相应的回应,通常称这些为交谈脚本(chat script ),上例中这个设备跨越了两行,实际上它应该位于同一行内。

  设置了default项之后,就可以进入ppp程序测试这些设置是否正确了。

# ppp


ppp > term
atdt 163
username: pppuser
password:
PPP >

  进入ppp程序之后,输入term命令可以进入终端模式,这个模式下用户可以直接输入modem认可的AT指 令控制modem,本例中使用atdt 163拨接163,连接之后系统将进行提示输入用户名和口令,此后ppp就建 立起PPP连接,而ppp的提示符改变为大写的PPP。

  使用手工输入的连接方法不很方便,而且也不适合使用PAP或CHAP等安全认证方式的连接,因此 最好在ppp.conf对指定的连接进行配置。这要求对每个要连接的ISP,都配置相应的设置。例如对CHINANET 的接入,使用下列chinanet标签配置:

chinanet:


set phone 163
set login "TIMEOUT 5 ogin:--sername: pppuser word: key123"
set timeout 120
set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0
delete ALL
add 0 0 HISADDR

  这个例子中使用chinanet作为设置的标签,设置了电话号码为163,登录时使用sername匹配对用 户名的提示Username,接收到这个字符串后自动输入用户名pppuser,使用word匹配对口令的提示Pas sword,然后自动输入口令。这里只使用了提示信息的一部分来进行匹配,这是为了避免匹配时出现问题。对于不同的系 统,这些提示还有所不同,对于使用Unix作登录服务器的提示为通常的Login,而大多数专用拨号服务器的提示为U sername。

  set ifaddr用于设置本地PPP连接的IP地址,由于PPP协议在客户和服务器之间协商客户的IP地 址,通常由拨号服务器从自己控制的自由IP地址池中分配给拨号的计算机一个动态IP地址,因此这里的设置只是客户端对 地址协商进行的限制。可以针对本地要申请的IP地址,和远端计算机的IP地址进行限制,本地的IP地址和网络掩码为s et ifaddr的第一个参数,而远端的IP地址和网络掩码为set ifaddr的第二个参数,前两个参数的网络 掩码是用于限制IP地址所在的网络,可以是真实网络的网络掩码,也可以不是,第三个参数才是用来指定PPP界面使用的 网络掩码。

  一般情况下,不需要对双方的IP地址范围进行限制,拨号之后可以接受任意的IP地址,就如上例中设置本地IP 地址和远端IP地址的限制网络掩码长度都为0,由于网络掩码长度为0使得任意IP地址都符合要求,此时掩码前面的IP 地址就没有意义了。

  如果想让拨号的计算机拥有一个静态IP地址,就必须设置网络掩码为32,明确指定IP地址,此时也可以省略掩 码,直接使用IP地址本身。例如,本地每次连接都使用静态IP地址192.168.1.98,另一端的IP地址为19 2.168.1.64,那么这一项就应为:

  set ifaddr 192.168.1.98 192.168.1.64 255.255.255.0

  使用静态IP地址就能使FreeBSD使用固定的IP地址,从而能使用DNS域名,以方便提供更多的服务。然 而,这个set ifaddr的配置命令可以更灵活,可以在协商IP地址时指定本机使用的IP地址范围,或者指定对方 所在的IP地址范围,进行地址限制。例如:

  set ifaddr 192.168.1.98/24 192.168.1.64/24 255.255. 255.0

  这种限制拨号网络IP地址范围的机制对于使用自动拨号的情况十分有用,通常可以使用带参数的命令ppp -a uto将ppp程序放入后台,一旦有网络请求就立即拨号建立连接。但是FreeBSD上有多个网络界面,就需要判断这 个网络请求需要使用哪个拨号网络界面进行网络传输,否则如果使用错误的拨号网络进行拨号,即使建立了连接,也不能找到 目的计算机建立连接。由于每个连接请求中都具备目的IP地址,便需要根据这个IP地址来进行判断。然而普通的拨号网络 在建立连接之前是没有分配IP地址的,因此还是无法确定对这个IP地址的连接请求应该通过那个拨号网络界面进行传输。 但是,如果指定了ppp网络界面的IP地址范围,就可以根据这个地址范围来判断连接请求中的IP地址是否在这个范围内 ,以决定是否使用这个网络界面进行拨号。

  delete all指出删除不必要的路由配置,add 0 0 HISADDR指出将缺省路由设为对方的地 址,由于使用动态IP时,在建立连接前对方的IP是未知的,因此使用HISADDR代替。如果已知拨号服务器的IP地 址,也可以直接填上这个IP地址。也可以不将拨号服务器作为缺省路由,而只将它作为对某个子网的路由,那么在这个配置
更多内容请看PCdog.com--OSPF路由协议  PPP协议  路由协议专题

上一篇:动态主机配置协议(DHCP)
下一篇:FreeBSD连载(65):SMB/CIFS协议