⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 186.html

📁 本文详细介绍了学习FREEBSD的一些命令
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<tr><td>&nbsp;</td></tr>
<tr><td align=left><i>作者:</i>王波</td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td><font color=white><br>内核级PPP及拨号程序<br><br>  PPP协议只是定义了两台计算机之间如何进行通信的方式,并没有定义如何进行拨号建立连接。用户级PPP由于以应用程序的方式来实现了PPP协议,因此它可以集成拨号程序,使用起来很方便。但内核级PPP并非如此,它使用一个守护进程pppd来实现ppp协议,因而必须首先使用外部拨号程序建立连接。内核级PPP比较难以使用,因此FreeBSD使用者通常使用用户级ppp。<br><br>  但是pppd是实现PPP协议的最早方式,其他继承BSD&nbsp;Unix网络代码的Unix系统中也使用这种&nbsp;PPP实现方式,这样pppd使用的广泛性就不仅局限于FreeBSD。很多使用者对内核级PPP进行封装,实现了多种图形化的连接工具,假如想使用这些图形化拨号连接工具的话,就需要对pppd有一定了解。因此这里只对pppd的拨号方式加以简单介绍,事实上使用ppp程序建立连接更为常用和方便。<br><br>  用来配合pppd的拨号程序有很多,最常使用的是chat,此外如kermit、tip也可以用于和&nbsp;pppd进行配合。由于拨号程序要和pppd相互配合,因此需要将要发送给拨号程序的命令放入一个文件中,而在启动拨号程序时使用相关参数告诉它到该文件中读取命令。<br><br>  对于chat拨号程序,通常将它的拨号程序命名为chat.script,放在/etc/ppp目录下。<br><br>ABORT&nbsp;BUSY<br>ABORT&nbsp;'NO&nbsp;CARRIER'<br>#&nbsp;Wait&nbsp;up&nbsp;to&nbsp;5&nbsp;seconds&nbsp;for&nbsp;the&nbsp;reply&nbsp;to&nbsp;each&nbsp;of&nbsp;these<br>TIMEOUT&nbsp;5<br>''&nbsp;ATZ<br>OK&nbsp;ATDT163<br>#&nbsp;Wait&nbsp;40&nbsp;seconds&nbsp;for&nbsp;connection<br>TIMEOUT&nbsp;40<br>CONNECT<br>TIMEOUT&nbsp;5<br>serrname:-\\r-sername:&nbsp;pppuser<br>assword:&nbsp;123456<br>&nbsp;<br>&nbsp;<br><br>  使用chat&nbsp;-f&nbsp;/etc/ppp/chat.script可以启动chat进行拨号,chat程序等待PPP服务器发送&nbsp;Username:提示,发送用户名,等待PPP服务器发送Password:提示,发送用户口令。然而,chat程序只能负责拨号,至于拨号完成之后的任务,就必须由pppd来负责了。<br><br>  pppd使用网络界面ppp0,当然可以在内核配置中增添配置值并重新编译核心,就可以根据需要增加可使用的ppp界面的数量。例如将可以使用的ppp界面改变为3个,则内核配置文件应包括&nbsp;“&nbsp;pseudo-device&nbsp;ppp&nbsp;3”&nbsp;,这样在重新编译内核,建立相应的设备文件并重新启动后,就可以使用ifconfig命令来查看可以利用的网络界面:<br><br>#&nbsp;ifconfig&nbsp;-a<br>ppp0:&nbsp;flags=8010<POINTOPOINT,MULTICAST>&nbsp;mtu&nbsp;1500<br>ppp1:&nbsp;flags=8010<POINTOPOINT,MULTICAST>&nbsp;mtu&nbsp;1500<br>ppp2:&nbsp;flags=8010<POINTOPOINT,MULTICAST>&nbsp;mtu&nbsp;1500<br>lo0:&nbsp;flags=8008<LOOPBACK,MULTICAST>&nbsp;mtu&nbsp;16384<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inet&nbsp;127.0.0.1&nbsp;netmask&nbsp;0xff000000<br>&nbsp;<br>&nbsp;<br><br>  内核还可以配置ppp界面在传输时对ppp数据进行压缩,事实上用户级ppp和内核级ppp都支持传输压缩,但内核级ppp多支持两种方式,一种是ppp的BSD压缩标准,另一种为delalte压缩标准。一般都可以在内核配置中加上这两个选项,使ppp连接中可以使用这些选项,以提供更高的传输效率。那么内核配置文件中的ppp相应配置应包括:<br><br>pseudo-device&nbsp;&nbsp;&nbsp;ppp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3<br>options&nbsp;PPP_BSDCOMP<br>options&nbsp;PPP_DEFLATE<br>&nbsp;<br>&nbsp;<br><br>  内核级ppp使用的配置文件也放在/etc/ppp目录下,文件名为options,此外各个用户可以使用自己的配置文件~/.ppprc。<br><br>#&nbsp;cat&nbsp;/etc/ppp/options<br>defaultroute<br>domain&nbsp;example.com.cn<br>crtscts&nbsp;<br>modem&nbsp;<br>deflate&nbsp;12,12<br>idle&nbsp;300<br>lock&nbsp;<br>&nbsp;<br>&nbsp;<br><br>  defaultroute项将在ppp连接设定之后,将缺省网关设置为PPP服务器上;domain设置本机的域名;crtscts告诉ppp使用modem的硬件流量控制,如果硬件不支持这种方式,就只好使用另一种软件流量控制方式为xonxoff;modem行使ppp使用DCD信号来判断连接是否正常,有无掉线现象;deflate&nbsp;使pppd使用defalte压缩方式;idle设置了一个时间限制,当在300秒的时间内没有数据传送,就断开连接;lock则创建一个锁定文件,其他程序在发现存在这个文件后,就能得知相应的串口已经被使用。<br><br>  配置好配置文件之后,就可以使用pppd进行连接了:<br><br>#&nbsp;pppd&nbsp;/dev/cuaa1&nbsp;57600&nbsp;connect&nbsp;'chat&nbsp;-f&nbsp;/etc/ppp/chat.script'&nbsp;user&nbsp;pppuser<br>&nbsp;<br>&nbsp;<br><br>  缺省情况下,使用pppd命令立即进行拨号连接,在超过idle参数设定的时间内没有数据传送的条件下断开连接并退出。然而在options文件中可以使用persist参数告诉pppd建立一条永久连接,或者使用demond参数告诉pppd停留在后台,监视网络数据,一旦有要求就立即进行连网,超时后就断开连接,但pppd仍然停留在后台等待下次数据传送。这两种形式分别等价于ppp程序的ddial和auto模式。<br><br><br>拨号访问FreeBSD<br><br>  FreeBSD不但能够能通过PPP协议和远程拨号服务器相连接,也能够提供拨号服务,让其他计算机能够拨入本机。事实上PPP协议本身,并不没有区分客户机和服务器,PPP服务器只需要比客户机多完成一些额外的工作,如用户认证、分配IP等。然而PPP必须建立在已经设定好的连接上,而为了设定连接,拨号服务器和客户端的设置就有不同的地方。首先在硬件上,服务器上的modem必须能接受连接,建立物理连接,然后服务器和客户软件要进行额外的验证过程,最后双方才启动ppp,设定ppp连接。<br><br><br>接受拨号终端访问<br><br>  早期的Unix使用字符终端访问主机,将字符终端通过串口连接到计算机上之后,就能通过这些终端登录进Unix系统了。但是FreeBSD下缺省屏蔽了串口的终端登录过程,要完成这个任务,管理员还必须更改/etc/ttys文件,为串口指定一个getty进程,以监视串口,一旦发现有连接请求,便立即启动登录进程login接受用户的登录。<br><br>  在/etc/ttys中有下面的行是与串行端口相关的,对应于个人计算机的四个串口,使用getty进程进行监控,但缺省状态为off,并没有打开这个功能。如果要使用某个串口进行终端连接,就需要改变相应行的设置为on,同时还可以改变第三列中的终端类型设置及最后一列的安全设置。<br><br>ttyd0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"/usr/libexec/getty&nbsp;std.9600"&nbsp;unknown&nbsp;&nbsp;&nbsp;off&nbsp;secure<br>ttyd1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"/usr/libexec/getty&nbsp;std.9600"&nbsp;unknown&nbsp;&nbsp;&nbsp;off&nbsp;secure<br>ttyd2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"/usr/libexec/getty&nbsp;std.9600"&nbsp;unknown&nbsp;&nbsp;&nbsp;off&nbsp;secure<br>ttyd3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"/usr/libexec/getty&nbsp;std.9600"&nbsp;unknown&nbsp;&nbsp;&nbsp;off&nbsp;secure<br>&nbsp;<br>&nbsp;<br><br>  getty的第一个参数std.9600指明了串口的各项参数,这个参数在/etc/gettytab中定义,定义了如波特率、校验方式、数据位、停止位以及流控方式等。缺省使用9600,指明了连接速率为9600bps,现代串口连接通常使用的连接速率要比这个设置高,因此要根据自己的串口和modem的型号,选择gettytab中的更高速率,如std.19200或std.57600。<br><br>  更改系统之后,可以使用kill&nbsp;-1&nbsp;1使FreeBSD重新读取ttys文件,或者重起计算机,才可以使用终端连接。这时在连接在串口上的终端键盘上按下几次回车键后,字符终端将连接到计算机上,会出现登录提示。如果没有出现提示,就说明终端设置和使用的gettytab文件中的设置项不匹配,可以更改终端设置或gettytab文件中的设置,使两者使用的校验、停止位、流控等设置选项保持一致。<br><br>  如果没有专用的字符终端设备,可以使用终端仿真软件,如Windows下的超级终端,Unix下的minicom&nbsp;等,都能通过串口登录到FreeBSD下。<br><br>  可以看到,使用串口连接,那么再加上modem和电话,就能够使得远程计算机能连接到这个FreeBSD系统上了。对于提供登录服务的计算机来讲,并不会注意一个连接是从串口直接相连的,还是通过modem建立的。然而这就要设置服务器的modem,必须设置为能进行应答,以接通客户计算机打入的电话来设定连接。因此必须首先初始化modem&nbsp;,需要使用AT命令AT&C1&D2&S0=1&R2&W。可以通过mi&nbsp;nicom或ppp的term模式,直接输入这个AT指令设置modem。<br><br>  当双方都配置好串口,连接设置好modem,并且连接上电话线之后,两台远程计算机相连接的准备工作就完成了。这时可以使用通信软件,例如minicom或kermit,从一台计算机远程登录到另一台计算机上,除了需要拨号,与本地连接没有什么两样。<br><br><br>设定PPP服务器<br><br>  如果远程计算机能正常登录进入FreeBSD,那么说明拨号连接没有问题,那么下一步就是分别配置PPP客户端和服务器端。事实上对于PPP来讲,建立连接之后,客户端和服务器端就没有区别了,区别在于建立连接的过程中,服务器要验证用户的登录并为其分配IP地址等。<br><br>  使用用户级PPP和内核级PPP均可实现PPP服务器,由于用户级PPP配置起来更为容易,因此更为常用。同样,这也需要更改配置文件/etc/ppp/ppp.conf。<br><br>dailserver:<br>&nbsp;allow&nbsp;users<br>&nbsp;enable&nbsp;proxy<br>&nbsp;set&nbsp;ifaddr&nbsp;192.168.1.64&nbsp;192.168.1.123<br>&nbsp;<br>&nbsp;<br><br>  以上是一个ppp程序做拨入服务器的设置例子,这个例子中允许普通可以启动这个ppp程序,并打开了代理ARP功能,使其他计算机能通过这个计算机同客户正常通信,为连接上的客户计算机分配IP地址。<br><br>  当ppp客户计算机连接到ppp服务器上之后,通过ppp服务器的路由能力,ppp客户就能和外部计算机通信了。并且两个ppp客户机之间的通信也必须经过ppp服务器转发。由于在每个ppp客户看来,其他的ppp客户是与它自己位于同一个网段内,因而它就广播ARP请求询问对方的MAC地址,以便进行直接通信。而在事实上,ppp客户之间并没有物理连接,它们之间无法直接通信,因而广播的ARP请求也不可能传送给目的计算机。此时,具备代理ARP能力的ppp服务器就能代替某个客户,回应发送ARP请求的客户。此后这个客户就以为ppp客户的物理地址就为ppp服务器的物理地址,所有的数据包都先转发给ppp服务器,然后它再转发到另一个ppp客户机中。这个代理内部的计算机回应ARP请求的功能就被称为Proxy&nbsp;ARP,它能够对外隐藏内部的网络结构,如内部子网或ppp连接。<br><br>  同时配置PPP用户的登录脚本为立即启动使用服务器标签的ppp程序,因此一个简单PPP用户登录脚本应为:<br><br>#!&nbsp;/bin/sh<br>exec&nbsp;/usr/sbin/ppp&nbsp;-direct&nbsp;dialserver<br>&nbsp;<br>&nbsp;<br><br>  direct参数就用于在标准Unix认证之后,立即启动ppp进程,使客户端直接与服务器端ppp交谈,以建立ppp&nbsp;连接。这个文件应该是一个可执行的文件,最简单的登录脚本可以让不同的PPP用户共同使用一个拨号服务器标签,更复杂的情况应该为每个拨号用户都设置独立的选项,并在登录脚本区分用户,启动不同的拨号选项。<br><br>  由于getty在接收到连接请求之后,就立即执行login认证过程,因此系统认证提示为Login,而与前面ppp客户设置中使用Username的认证提示不同,需要修改前面的设置,才能使用前面的认证登录上服务器。但也由于getty&nbsp;必须执行login认证,因此使用getty作为ppp服务器的端口监控进程,就无法进一步支持PAP或CHAP认证。为了支持这些复杂的认证方式,就需要使用mgetty或类似的端口监控进程来监视是否有连接请求。<br><br>  在FreeBSD的Handbook中有使用mgetty设置ppp服务器的例子。<br><br><br>PPP程序的其他功能<br><br>  除了最常见拨号连接上Internet之外,还可以利用ppp程序的功能来完成其他几种任务。在缺省的ppp.conf中给出了几个例子,这些例子能帮助使用者进一步了解ppp程序的能力。<br><br><br>串口线连接<br><br>  使用串口线直接连接与使用medom除了不需要拨号之外并无不同,但是通常要在两端都使用LQR,用于帮助判断电缆的连接情况。此时客户端的ppp.conf中的设置应为:<br><br>direct-client:<br>&nbsp;set&nbsp;dial&nbsp;""<br>&nbsp;set&nbsp;line&nbsp;/dev/cuaa0<br>&nbsp;set&nbsp;sp&nbsp;115200<br>&nbsp;set&nbsp;timeout&nbsp;900&nbsp;10&nbsp;3<br>&nbsp;set&nbsp;log&nbsp;Phase&nbsp;Chat&nbsp;LQM<br>&nbsp;set&nbsp;login&nbsp;"TIMEOUT&nbsp;5&nbsp;ogin:--ogin:&nbsp;ppp&nbsp;word:&nbsp;ppp&nbsp;HELLO"<br>&nbsp;set&nbsp;ifaddr&nbsp;10.0.4.2&nbsp;10.0.4.1<br>&nbsp;enable&nbsp;lqr<br>&nbsp;accept&nbsp;lqr<br>&nbsp;<br>&nbsp;<br><br>  而ppp服务器应该设置为:<br><br>direct-server:<br>&nbsp;set&nbsp;timeout&nbsp;900&nbsp;10&nbsp;3<br>&nbsp;set&nbsp;log&nbsp;Phase&nbsp;LQM<br>&nbsp;set&nbsp;ifaddr&nbsp;10.0.4.1&nbsp;10.0.4.2<br>&nbsp;enable&nbsp;lqr<br>&nbsp;accept&nbsp;lqr<br>&nbsp;<br>&nbsp;<br><br><br>TCP上的PPP通道<br><br>  可以将PPP建立在TCP网络连接之础上,而非通过电话网络,这样就在TCP/IP网络上建立了一条&nbsp;PPP通道。tcp-client为客户端计算机的设置,这里使用一个网络连接作为连接设备,tcpsrv为远程计算机的主机名,1234为tcpsrv上的TCP端口:<br><br>tcp-client:<br>&nbsp;set&nbsp;device&nbsp;tcpsrv:1234<br>&nbsp;set&nbsp;dial<br>&nbsp;set&nbsp;login<br>&nbsp;set&nbsp;escape&nbsp;0xff<br>&nbsp;set&nbsp;ifaddr&nbsp;10.0.5.1&nbsp;10.0.4.1&nbsp;255.255.255.0<br>&nbsp;<br>&nbsp;<br><br>  tcp-server为服务器端计算机的设置:<br><br>tcp-server:<br>&nbsp;set&nbsp;escape&nbsp;0xff<br>&nbsp;set&nbsp;ifaddr&nbsp;10.0.4.1&nbsp;10.0.5.1&nbsp;255.255.255.0<br>&nbsp;<br>&nbsp;<br><br>  当ppp客户端使用tcp-client进行连接时,它将向tcpsrv的1234端口发送ppp连接请求。这就要求&nbsp;tcpsrv能侦测到对1234端口的连接请求,并启动ppp服务器来建立连接。因此就可以使用inetd监听上面定义的端口1234,并负责启动ppp服务器。就需要在/etc/services中应该增加相应的端口:<br><br>pppsrv		&nbsp;&nbsp;1234/tcp<br>并在/etc/inetd.conf中增加相应的选项:<br>pppsrv&nbsp;	stream	tcp	nowait	root	/usr/sbin/ppp&nbsp;ppp&nbsp;-direct&nbsp;tcp-server<br>&nbsp;<br>&nbsp;<br><br>  修改好inetd.conf之后,向inetd发送SIGHUP信号使得其重读设置文件。然后就可以使用ppp建立虚拟连接了。在ssh等加密传输软件的帮助下,还可以进一步设定为安全的虚拟通道连接。<br><br><br>数据包过滤<br><br>  在ppp的auto模式下,需要根据超时设置断开连接,但是网络中一些协议会定时发送一些数据包,这些数据包主要用于保持网络数据的及时更新,大部分情况下不影响网络应用。但是这些数据包会引起ppp刷新时间设置,从而使得ppp一直保持拨号连接。<br><br>  这时可以使用ppp的过滤机制中的afilter过滤器,它定义了在auto模式时应滤掉的数据包,使得数据包不会影响超时时间。下面的三行分别不允许ICMP包和DNS包通过,最后一行允许其余的包通过。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;afilter&nbsp;0&nbsp;deny&nbsp;icmp<br>&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;afilter&nbsp;1&nbsp;deny&nbsp;udp&nbsp;src&nbsp;eq&nbsp;53<br>&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;afilter&nbsp;2&nbsp;deny&nbsp;udp&nbsp;dst&nbsp;eq&nbsp;53<br>&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;afilter&nbsp;3&nbsp;permit&nbsp;0/0&nbsp;0/0<br>&nbsp;<br>&nbsp;<br><br>  使用dial参数的情况下,也有相似的限制,这时使用dfilter主要来限制icmp数据包。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;dfilter&nbsp;0&nbsp;deny&nbsp;icmp<br>&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;dfilter&nbsp;1&nbsp;permit&nbsp;0/0&nbsp;0/0<br>&nbsp;<br>&nbsp;<br><br>  另外,还可以使用包过滤能力,按照端口、地址来允许或屏蔽某些TCP数据包。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;ifilter&nbsp;0&nbsp;permit&nbsp;tcp&nbsp;dst&nbsp;eq&nbsp;80<br>&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;ofilter&nbsp;0&nbsp;permit&nbsp;tcp&nbsp;src&nbsp;eq&nbsp;80<br>&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;ifilter&nbsp;1&nbsp;permit&nbsp;192.168.1.0/24&nbsp;0/0<br>&nbsp;&nbsp;&nbsp;&nbsp;set&nbsp;ofilter&nbsp;1&nbsp;permit&nbsp;0/0&nbsp;192.168.1.0/24<br>&nbsp;<br>&nbsp;<br><br>  ifilter表示对进入的数据包进行过滤,ofilter表示对出去的数据包进行过滤,因此上面的设置允许进行WWW浏览(80端口),并允许与192.168.1.0这个网段内的计算机进行连接。每一个过滤器最多可以定义20个规则。<br><br><br>拨号网关<br><br>  当一个局域网上的一台FreeBSD通过PPP连接到Internet上之后,其他计算机也能通过这台FreeBSD&nbsp;访问Internet,从而共享同一条拨号线路。这必须使用ppp的alias选项启动ppp,这样当内部计算机的数据包到达这台FreeBSD之后,由ppp将这些数据包中的IP地址更换为本机ppp界面上的IP,同时也会对端口地址进行调整,再发送到外部的Internet上。<br><br>  要完成这个任务,还需要将这台FreeBSD配置为允许转发IP数据包,在/etc/rc.conf中配置&nbsp;gateway的值为YES。但为了使得路由保持正确,不能启动routed或gated等动态路由程序,因为这些程序会动态更改路由表,如果改动与ppp相关的路由数据,就会使得FreeBSD不能正确路由数据包。<br><br>  使用这种连接方式,再加上ppp的简单过滤能力,FreeBSD就能作为一个简易的具备一定防火墙能力的&nbsp;Internet访问网关,能够提供整个内部网络访问Internet的能力,并将内部网与Internet相隔离。然而这个简易的拨号网关仅限于使用ppp界面,并且功能也有限。FreeBSD提供了更强大的防火墙能力,能完成要求更为复杂的各种任务。<br><br>未完,待续。。。  <br><br><br></font></td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td align=right><i>来源:</i><a href="javascript:if(confirm('http://freebsd.online.ha.cn/  \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.  \n\nDo you want to open it from the server?'))window.location='http://freebsd.online.ha.cn/'" tppabs="http://freebsd.online.ha.cn/">http://freebsd.online.ha.cn/</a></td></tr>
</table>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
声明:本站的文章和软件是本人从网上收集整理的(除本人的作品之外),所有版权属于作者,<br>
如有侵犯您的权益,请指出,本站将立即改正,谢谢.
<hr  width=500>
<br>
<font color=#ffffff>Copyright 2000 <a href="javascript:if(confirm('http://www.newok.com/  \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address.  \n\nDo you want to open it from the server?'))window.location='http://www.newok.com/'" tppabs="http://www.newok.com/" class=t1>www.newok.com</a></font>
</div>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -