36 FreeBSD连载:PPP协议( 四 )


# ppp -backgroud chinanet-background选项使PPP立即进行拨号,并停留在后台 。但与-auto不同在于,在一段没有数据传输的时间间隔后ppp将断开连接,但是ppp程序也停止执行,而不象auto参数那样,ppp一直驻留在后台监视网络连接,要再次建立连接必须重新执行ppp程序 。这个选项适合最普通的网络客户,使用户能明确什么时候才建立连接 。
# ppp -alias -ddial chinanetppp程序的另一个有用的选项是alias 。如果拨号用户内部有自己的局域网,用户或许希望让整个网络内的计算机共享一个拨号连接 。使用ppp的alias选项能使FreeBSD将局域网上的网络连接请求中的本地IP地址替换为FreeBSD系统的ppp网络使用的IP地址,从而使其他用户也能访问外部网络 。-alias参数应该和auto或ddial参数联合使用,以驻留在后台提供服务 。这种方式比较简洁、易用,当然代理服务器和网络地址转换的方法能提供更多的控制能力 。
当使用这些参数执行ppp程序时,ppp程序将切换在后台维护PPP连接 。然而由于ppp程序在后台运行,就无法输入指令以控制ppp程序的执行 。为了方便使用者控制后台运行的ppp程序,ppp提供了通过socket连接的方式来接受外部输入 。为了支持这个特性,便需要设置set server选项 。
set server 6670 MySecretpassword这个选项将使ppp程序监听6670端口,并使用MySecretpassword作为连接时认证的口令,以免ppp程序被非法控制 。此后,就可以使用pppctl向ppp程序发送指令,这些指令都是ppp的标准指令 。
# pppctl -p MySecretpassword 6670 set timeout 300; dial除了使用标准的Intenet套接字接收pppctl的连接之外,ppp还能通过本地Unix套接字来接收输入 。这就需要设置一个套接字使用的文件及其访问属性,具备更好的安全性 。
set server /tmp/ppp MySecretPassword 0177而在pppctl中应该使用对应的参数以指明相应的Unix套接字:
# pppctl -p MySecretpassword /tmp/ppp set timeout 300; dial内核级PPP及拨号程序
PPP协议只是定义了两台计算机之间如何进行通信的方式,并没有定义如何进行拨号建立连接 。用户级PPP由于以应用程序的方式来实现了PPP协议,因此它可以集成拨号程序,使用起来很方便 。但内核级PPP并非如此,它使用一个守护进程pppd来实现ppp协议,因而必须首先使用外部拨号程序建立连接 。内核级PPP比较难以使用,因此FreeBSD使用者通常使用用户级ppp 。
但是pppd是实现PPP协议的最早方式,其他继承BSD Unix网络代码的Unix系统中也使用这种PPP实现方式,这样pppd使用的广泛性就不仅局限于FreeBSD 。很多使用者对内核级PPP进行封装,实现了多种图形化的连接工具,假如想使用这些图形化拨号连接工具的话,就需要对pppd有一定了解 。因此这里只对pppd的拨号方式加以简单介绍,事实上使用ppp程序建立连接更为常用和方便 。
用来配合pppd的拨号程序有很多,最常使用的是chat,此外如kermit、tip也可以用于和pppd进行配合 。由于拨号程序要和pppd相互配合,因此需要将要发送给拨号程序的命令放入一个文件中,而在启动拨号程序时使用相关参数告诉它到该文件中读取命令 。
对于chat拨号程序,通常将它的拨号程序命名为chat.script,放在/etc/ppp目录下 。
ABORT BUSYABORT "NO CARRIER"# Wait up to 5 seconds for the reply to each of theseTIMEOUT 5"" ATZOK ATDT163# Wait 40 seconds for connectionTIMEOUT 40CONNECTTIMEOUT 5serrname:-r-sername: pppuserassword: 123456使用chat -f /etc/ppp/chat.script可以启动chat进行拨号,chat程序等待PPP服务器发送Username:提示,发送用户名,等待PPP服务器发送Password:提示,发送用户口令 。然而,chat程序只能负责拨号,至于拨号完成之后的任务,就必须由pppd来负责了 。

推荐阅读