📄 slip.html
字号:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta name="generator" content="HTML Tidy, see www.w3.org" /><title>使用SLIP</title><meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.7" /><link rel="HOME" title="FreeBSD 使用手册" href="index.html" /><link rel="UP" title="PPP 和 SLIP" href="ppp-and-slip.html" /><link rel="PREVIOUS" title="Using PPP over ATM (PPPoA)" href="pppoa.html" /><link rel="NEXT" title="电子邮件" href="mail.html" /><link rel="STYLESHEET" type="text/css" href="docbook.css" /><meta http-equiv="Content-Type" content="text/html; charset=GB2312" /></head><body class="SECT1" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#840084"alink="#0000FF"><div class="NAVHEADER"><table summary="Header navigation table" width="100%" border="0" cellpadding="0"cellspacing="0"><tr><th colspan="3" align="center">FreeBSD 使用手册</th></tr><tr><td width="10%" align="left" valign="bottom"><a href="pppoa.html"accesskey="P">后退</a></td><td width="80%" align="center" valign="bottom">章 21. PPP 和 SLIP</td><td width="10%" align="right" valign="bottom"><a href="mail.html"accesskey="N">前进</a></td></tr></table><hr align="LEFT" width="100%" /></div><div class="SECT1"><h1 class="SECT1"><a id="SLIP" name="SLIP">21.7. 使用SLIP</a></h1><i class="AUTHORGROUP"><span class="CONTRIB">Originally contributed by</span> SatoshiAsami.</i> <i class="AUTHORGROUP"><span class="CONTRIB">With input from</span> Guy Helmer和 Piero Serini.</i> <div class="SECT2"><h2 class="SECT2"><a id="SLIPC" name="SLIPC">21.7.1. 设置SLIP客户端</a></h2><p>下面是一个在静态主机网络上设置FreeBSD机器的方法.对于动态主机名分配(你的地址在每次拨号时都会改变),你可能还需要更复杂的设置.</p><p>首先,确定你的modem连接的串行口. 许多人会设置符号连接, 比如<ttclass="FILENAME">/dev/modem</tt>指向真实的设备名 <ttclass="FILENAME">/dev/cuaaN</tt>.这充许你抽像真实的设备名. 当你需 要在<ttclass="FILENAME">/etc</tt>和<ttclass="FILENAME">.kermrc</tt>文件中修复整个系统上的许多文件时,这是一件非常麻烦的事情!</p><div class="NOTE"><blockquote class="NOTE"><p><b>注:</b> <tt class="FILENAME">/dev/cuaa0</tt> is <tt class="DEVICENAME">COM1</tt>,<tt class="FILENAME">cuaa1</tt> is <tt class="DEVICENAME">COM2</tt>, etc.</p></blockquote></div><p>确保你的内核文件包含以下内容:</p><pre class="PROGRAMLISTING">pseudo-device sl 1</pre><p>在 FreeBSD 5.X 中, 则应使用:</p><pre class="PROGRAMLISTING">device sl</pre><p>这包含在<tt class="FILENAME">GENERIC</tt>内核,所以这应该不会是个问题,除非你已经删除了它。</p><div class="SECT3"><h3 class="SECT3"><a id="AEN30724" name="AEN30724">21.7.1.1. 只需做一次的事情</a></h3><div class="PROCEDURE"><ol type="1"><li><p>向文件<ttclass="FILENAME">/etc/hosts</tt>添加你的主机,网关和域名服务器.我的是这样的:</p><pre class="PROGRAMLISTING">127.0.0.1 localhost loghost136.152.64.181 water.CS.Example.EDU water.CS water136.152.64.1 inr-3.CS.Example.EDU inr-3 slip-gateway128.32.136.9 ns1.Example.EDU ns1128.32.136.12 ns2.Example.EDU ns2</pre></li><li><p>在FreeBSD5.0以前的版本中,请确保<tt class="FILENAME">/etc/host.conf</tt>中<varclass="OPTION">绑定</var> 的<varclass="OPTION">hosts</var>必须是存在的.从FreeBSD 5.0开始,系统开始改用 文件<ttclass="FILENAME">/etc/nsswitch.conf</tt>, <var class="OPTION">hosts</var>行的<varclass="OPTION">dns</var>选项之前必须有<var class="OPTION">files</var>选项.缺少这些可能会发生很滑稽的事.</p></li><li><p>编辑<tt class="FILENAME">/etc/rc.conf</tt>.</p><ol type="1"><li><p>编辑以下这行设置主机名(hostname):</p><pre class="PROGRAMLISTING">hostname="myname.my.domain"</pre><p>应该用你主机的Internet全名代替.</p></li><li><p>改变以下这些行将<tt class="DEVICENAME">sl0</tt>添加到网络接口 列表中:</p><pre class="PROGRAMLISTING">network_interfaces="lo0"</pre><p>改为:</p><pre class="PROGRAMLISTING">network_interfaces="lo0 sl0"</pre></li><li><p>加入以下这一行设置<tt class="DEVICENAME">sl0</tt>的启动标志:</p><pre class="PROGRAMLISTING">ifconfig_sl0="inet ${hostname} slip-gateway netmask 0xffffff00 up"</pre></li><li><p>改变这一行以指明默认的路由:</p><pre class="PROGRAMLISTING">defaultrouter="NO"</pre><p>改为:</p><pre class="PROGRAMLISTING">defaultrouter="slip-gateway"</pre></li></ol></li><li><p>创建文件<tt class="FILENAME">/etc/resolv.conf</tt>,写入以下内容:</p><pre class="PROGRAMLISTING">domain CS.Example.EDUnameserver 128.32.136.9nameserver 128.32.136.12</pre><p>正如你看到的, 这些行设置了域名服务器.当然,实际的域名和IP地址取决于你的环境.</p></li><li><p>设置<tt class="USERNAME">root</tt>和 <ttclass="USERNAME">toor</tt>的密码(其它任何没有密码的帐号).</p></li><li><p>重启计算机,然后确认使用了正确的主机名.</p></li></ol></div></div><div class="SECT3"><h3 class="SECT3"><a id="AEN30780" name="AEN30780">21.7.1.2. 创建一个SLIP连接</a></h3><div class="PROCEDURE"><ol type="1"><li><p>在命令行输入<tt class="COMMAND">slip</tt>进行拨号,输入你的主机名和密码.需要输入的内容取决你的环境.如果你使用kermit,可以试试这个脚本:</p><pre class="PROGRAMLISTING"># kermit setupset modem hayesset line /dev/modemset speed 115200set parity noneset flow rts/ctsset terminal bytesize 8set file type binary# The next macro will dial up and logindefine slip dial 643-9600, input 10 =>, if failure stop, -output slip\x0d, input 10 Username:, if failure stop, -output silvia\x0d, input 10 Password:, if failure stop, -output ***\x0d, echo \x0aCONNECTED\x0a</pre><p>当然,你需要更改主机名和密码以符合实际情况.完成了这些后,你只需在kermit提示符下键入 <ttclass="COMMAND">slip</tt>进行连接.</p><div class="NOTE"><blockquote class="NOTE"><p><b>注:</b> 将密码以纯文本的形式存放在文件系统无论如何都是个 <span class="emphasis"><iclass="EMPHASIS">坏</i></span>主意. Do it at your own risk.</p></blockquote></div></li><li><p>退出kermit(你可以用 <b class="KEYCAP">Ctrl</b>-<b class="KEYCAP">z</b>将其挂起),以<ttclass="USERNAME">root</tt>用户键入:</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbdclass="USERINPUT">slattach -h -c -s 115200 /dev/modem</kbd></pre><p>如果你能<tt class="COMMAND">ping</tt>通路由器另一端的主机,就是连接好了! 如果不行,你可以使用<var class="OPTION">-a</var>选项代替 <var class="OPTION">-c</var>作为<ttclass="COMMAND">slattach</tt>的参数.</p></li></ol></div></div><div class="SECT3"><h3 class="SECT3"><a id="AEN30809" name="AEN30809">21.7.1.3. 关闭连接</a></h3><p>按下面的步骤做:</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbdclass="USERINPUT">kill -INT `cat /var/run/slattach.modem.pid`</kbd></pre><p>kill <tt class="COMMAND">slattach</tt>. 切记你一定要是 <ttclass="USERNAME">root</tt>用户才有权限. 然后回到kermit(如果想将其挂起,执行命令<ttclass="COMMAND">fg</tt>)再从中退出(<tt class="COMMAND">q</tt>).</p><p><tt class="COMMAND">slattach</tt>的联机手册说必须用<tt class="COMMAND">ifconfig sl0down</tt> 将这个接口标记为关闭,但对我来说,这似乎没有任何区别. (<ttclass="COMMAND">ifconfig sl0</tt>仍报告一样的东西.)</p><p>有时候,你的modem会拒绝退出(我的时常这样).遇到这种情况,你只要启动kermit然后再次退出.一般在试二次就可以了.</p></div><div class="SECT3"><h3 class="SECT3"><a id="AEN30825" name="AEN30825">21.7.1.4. 问题解答</a></h3><p>如果不行,尽管来问我.一般可以这样解决问题:</p><ul><li><p>执行<tt class="COMMAND">slattach</tt>时不使用<var class="OPTION">-c</var>和<varclass="OPTION">-a</var>选项 (这应该不是关键的,但有些用户报告这样做解决了问题.)</p></li><li><p>使用<var class="OPTION">s10</var>替换 <var class="OPTION">sl0</var>(在一些字体下很难看出不同).</p></li><li><p>试试<tt class="COMMAND">ifconfig sl0</tt>来查看你的接口状态.例如,你可以这样做:</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbd class="USERINPUT">ifconfig sl0</kbd>sl0: flags=10<POINTOPOINT> inet 136.152.64.181 --> 136.152.64.1 netmask ffffff00</pre></li><li><p>如果在ping时得到一条``<tt class="ERRORNAME">no route to host</tt>''信息,你的路由表可能有问题.可以使用 <tt class="COMMAND">netstat -r</tt>命令显示当前路由:</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbd class="USERINPUT">netstat -r</kbd>Routing tablesDestination Gateway Flags Refs Use IfaceMTU Rtt Netmasks:(root node)(root node)Route Tree for Protocol Family inet:(root node) =>default inr-3.Example.EDU UG 8 224515 sl0 - -localhost.Exampl localhost.Example. UH 5 42127 lo0 - 0.438inr-3.Example.ED water.CS.Example.E UH 1 0 sl0 - -water.CS.Example localhost.Example. UGH 34 47641234 lo0 - 0.438(root node)</pre><p>前述的例子来自于一个非常繁忙的系统. 你系统上的这些数字会因网络活动的不同而改变.</p></li></ul></div></div><div class="SECT2"><h2 class="SECT2"><a id="SLIPS" name="SLIPS">21.7.2. 设置SLIP服务器</a></h2><p>本文提供了在FreeBSD上设置SLIP服务的建议,主要是指配置你的系统使其能根据远程SLIP客户端的登陆自动地开启连接.</p><div class="SECT3"><h3 class="SECT3"><a id="SLIPS-PREREQS" name="SLIPS-PREREQS">21.7.2.1. 前提条件</a></h3><p>这一节本身就是非常技术性的,所以要求有一定的背景知识.本节假定你熟悉TCP/IP网络协议,特别是网络和和结点寻址,网络地址掩网, 划分子网, 路由,路由协议(比如RIP).在一个拨号服务器上配置SLIP需要这些概念性的知识.如果你不熟悉它们,请先阅读Craig Hunt的 <span class="emphasis"><i class="EMPHASIS">TCP/IP网络管理</i></span> 由O'Reilly & Associates,Inc.出版(ISBN号为0-937175-82-X),或者Douglas Comer有关TCP/IP 协议的书籍.</p><p>另外还假定你已经设置好了你的modem并配置了相应的文件允许通过modem登陆.如果你还没有准备好你的系统,请 参考拨号服务的配置指南; 如果你能使用网页浏览器,也可以浏览<a href="../../../../index.html" target="_top">http://www.FreeBSD.org/</a>上的指南列表.你还需要参考<span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">sio</span>(4)</span>以获取串行端口设备驱动的信息, <spanclass="CITEREFENTRY"><span class="REFENTRYTITLE">ttys</span>(5)</span>,<spanclass="CITEREFENTRY"><span class="REFENTRYTITLE">gettytab</span>(5)</span>, <spanclass="CITEREFENTRY"><span class="REFENTRYTITLE">getty</span>(8)</span>, & <spanclass="CITEREFENTRY"><spanclass="REFENTRYTITLE">init</span>(8)</span>以获取配置系统以接受modem登录的相关信息,也许还有 <span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">stty</span>(1)</span>以获取有关串行口参数设置的信息(比如<varclass="LITERAL">clocal</var>指直线串行 接口).</p></div><div class="SECT3"><h3 class="SECT3"><a id="AEN30887" name="AEN30887">21.7.2.2. 快速浏览</a></h3><p>使用FreeBSD作为SLIP服务器,在典型配置时,它是这样工作的:一个SLIP客户拨号并以专用的login ID登录到FreeBSD SLIP服务器系统.这个用户使用<ttclass="FILENAME">/usr/sbin/sliplogin</tt> 作为shell.<ttclass="COMMAND">sliplogin</tt>程序在文件<ttclass="FILENAME">/etc/sliphome/slip.hosts</tt>中查找这个用户的项,如果找到了匹配项,就将串行线连接到一个可用的SLIP接口,然后运行shell脚本<ttclass="FILENAME">/etc/sliphome/slip.login</tt> 以配置SLIP接口.</p><div class="SECT4"><h4 class="SECT4"><a id="AEN30894" name="AEN30894">21.7.2.2.1.一个SLIP服务器登录的例子</a></h4><p>例如,如果一个SLIP用户的ID是<tt class="USERNAME">Shelmerg</tt>, 在<ttclass="FILENAME">/etc/master.passwd</tt>中<ttclass="USERNAME">Shelmerg</tt>的项如下的所示:</p><pre class="PROGRAMLISTING">Shelmerg:password:1964:89::0:0:Guy Helmer - SLIP:/usr/users/Shelmerg:/usr/sbin/sliplogin</pre><p><tt class="USERNAME">Shelmerg</tt>登录时, <tt class="COMMAND">sliplogin</tt>在文件 <ttclass="FILENAME">/etc/sliphome/slip.hosts</tt>中搜索与用户ID匹配的行;如下所示:</p><pre class="PROGRAMLISTING">Shelmerg dc-slip sl-helmer 0xfffffc00 autocomp</pre><p><tt class="COMMAND">sliplogin</tt>找到这条区配行,并将串行线与另一个可用的SLIP接口连起来, 然后执行<ttclass="FILENAME">/etc/sliphome/slip.login</tt>脚本:</p><pre class="PROGRAMLISTING">/etc/sliphome/slip.login 0 19200 Shelmerg dc-slip sl-helmer 0xfffffc00 autocomp</pre><p>如果一切顺利, <tt class="FILENAME">/etc/sliphome/slip.login</tt>为<ttclass="COMMAND">sliplogin</tt> )绑定的接口(在上面的例子中,是<ttclass="FILENAME">slip.login</tt>参数列表的第一个参数)运行 <ttclass="COMMAND">ifconfig</tt>以设置SLIP接口的本地IP地址(<ttclass="HOSTID">dc-slip</tt>),远程IP地址(<tt class="HOSTID">sl-helmer</tt>), 掩码(<ttclass="HOSTID">0xfffffc00</tt>),及其它附加的标志(<var class="LITERAL">autocomp</var>).如果出现错误 ,<tt class="COMMAND">sliplogin</tt> 通常会使用syslog<varclass="LITERAL">守护进程</var>将有用的信息写入 <ttclass="FILENAME">/var/log/messages</tt> 参考<span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">syslogd</span>(8)</span>和<span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">syslog.conf</span>(5)</span>联机手册及<ttclass="FILENAME">/etc/syslog.conf</tt>, 以获知<tt
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -