📄 userppp.html
字号:
<h4 class="SECT4"><a id="AEN23939" name="AEN23939">18.2.1.3.11. MS Extensions</a></h4><p>可以配置PPP以提供DNS和NetBIOS域名服务器地址.</p><p>要在PPP版本 1.x中启用这些扩展,必须向 <ttclass="FILENAME">/etc/ppp/ppp.conf</tt>的相关项加入以下行:</p><pre class="PROGRAMLISTING">enable msextset ns 203.14.100.1 203.14.100.2set nbns 203.14.100.5</pre><p>PPP版本2及以上 :</p><pre class="PROGRAMLISTING">accept dnsset dns 203.14.100.1 203.14.100.2set nbns 203.14.100.5</pre><p>这将告诉客户端首选域名服务器和备用域名服务器.</p><p>在版本2及以上版本中, 如果省略了 <var class="LITERAL">set dns</var>, PPP会使用 <ttclass="FILENAME">/etc/resolv.conf</tt>中的值.</p></div><div class="SECT4"><h4 class="SECT4"><a id="USERPPP-PAPNCHAP" name="USERPPP-PAPNCHAP">18.2.1.3.12. PAP和CHAP验证</a></h4><p>一些ISP将系统设置成使用PAP或CHAP机制来完成连接的验证部分. .如果是这样,在你连接时ISP就不会给出<sampclass="PROMPT">login:</samp>提示符而是立即开始PPP对话.</p><p>PAP安全性要比CHAP差一些,但在这里安全性并不是问题,因为密码(即使用明文传送)只是通过串行线传送.黑客没有太多机会``窃听''.</p><p>参考<a href="userppp.html#USERPPP-STATICIP">PPP 和静态IP地址</a> 或 <ahref="userppp.html#USERPPP-DYNAMICIP">PPP 和动态IP地址</a> 节,必须做以下修改:</p><pre class="PROGRAMLISTING">7 set login...12 set authname <var class="REPLACEABLE">MyUserName</var>13 set authkey <var class="REPLACEABLE">MyPassword</var></pre><div class="VARIABLELIST"><dl><dt>行 7:</dt><dd><p>如果使用PAP或CHAP,你的ISP一般不需要你登陆入服务器.因此你必须禁用 ``setlogin''字串.</p></dd><dt>行12:</dt><dd><p>这一行指明你的PAP/CHAP用户名. 你需要为<varclass="REPLACEABLE">MyUserName</var>输入正确的值.</p></dd><dt>行 13:</dt><dd><p>这一行指明你的PAP/CHAP密码. 你需要为 <varclass="REPLACEABLE">MyPassword</var>输入正确的值.你也可以加入附加的行 ,比如:</p><pre class="PROGRAMLISTING">15 accept PAP</pre><p>或</p><pre class="PROGRAMLISTING">15 accept CHAP</pre><p>以明确你的意图,但PAP和CHAP都是被默认接受的.</p></dd></dl></div></div><div class="SECT4"><h4 class="SECT4"><a id="AEN23996" name="AEN23996">18.2.1.3.13. 即时改变你的<ttclass="COMMAND">ppp</tt> 配置</a></h4><p>与后台运行的<tt class="COMMAND">ppp</tt>程序进行对话是可能的,前提是设置了一个合适的诊断端口. 做到这一点,需要把下面的行加入到你的配置中:</p><pre class="PROGRAMLISTING">set server /var/run/ppp-tun<var class="REPLACEABLE">%d</var> DiagnosticPassword 0177</pre><p>这行告诉 PPP在指定的<spanclass="TRADEMARK">UNIX</span>域socket中侦听,当用户连接时需要给出指定的密码. <varclass="LITERAL">%d</var>用<tt class="DEVICENAME">tun</tt>设备号替换.</p><p>一旦启用了socket, 就可以在脚本中调用程序<span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">pppctl</span>(8)</span>来处理正在运行的 的PPP.</p></div></div><div class="SECT3"><h3 class="SECT3"><a id="USERPPP-NAT" name="USERPPP-NAT">18.2.1.4.使用PPP网络地址翻译</a></h3><p>PPP可以使用内建的NAT,而不需内核支持. 这个功能可以通过在<ttclass="FILENAME">/etc/ppp/ppp.conf</tt>中的 以下行启用:</p><pre class="PROGRAMLISTING">nat enable yes</pre><p>PPP NAT也可以使用命令行选项 <var class="LITERAL">-nat</var>启动. 在文件 <ttclass="FILENAME">/etc/rc.conf</tt>中也有 <varclass="LITERAL">ppp_nat</var>项,且是默认启用的.</p><p>如果你使用了这个特性, 你还会发现在 <tt class="FILENAME">/etc/ppp/ppp.conf</tt>中以下选项对于启用incoming connections forwarding是有用的:</p><pre class="PROGRAMLISTING">nat port tcp 10.0.0.2:ftp ftpnat port tcp 10.0.0.2:http http</pre><p>or do not trust the outside at all</p><pre class="PROGRAMLISTING">nat deny_incoming yes</pre></div><div class="SECT3"><h3 class="SECT3"><a id="USERPPP-FINAL" name="USERPPP-FINAL">18.2.1.5.最后的系统配置</a></h3><p>现在你已配置了<ttclass="COMMAND">ppp</tt>,但在真正工作之前还有一些事情要做.它们都与编辑 <ttclass="FILENAME">/etc/rc.conf</tt>有关.</p><p>从上依次往下看,确认设置了 <var class="LITERAL">hostname=</var> 行, e.g.:</p><pre class="PROGRAMLISTING">hostname="foo.example.com"</pre><p>如果你的ISP提供给你一个静态的IP和名字,将这个名字设为hostname是最合适的.</p><p>寻找 <var class="LITERAL">network_interfaces</var> 变量.如果要配置系统通过拨号连入ISP, 一定要将<ttclass="DEVICENAME">tun0</tt>设备加入这个列表,否则就删除它.</p><pre class="PROGRAMLISTING">network_interfaces="lo0 tun0"ifconfig_tun0=</pre><div class="NOTE"><blockquote class="NOTE"><p><b>Note:</b> <var class="LITERAL">ifconfig_tun0</var>变量应该是空的,且要创建一个名为<tt class="FILENAME">/etc/start_if.tun0</tt>的文件. 这个文件应该包含这一行:</p><pre class="PROGRAMLISTING">ppp -auto mysystem</pre><p>此脚本在网络配置时被执行,开启PPP守护进程进入自动模式.如果这台机子充当一个LAN的网关,你可能希望使用<var class="OPTION">-alias</var>.参考相关联机手册了解更多细节.</p></blockquote></div><p>在<tt class="FILENAME">/etc/rc.conf</tt>用下面这一行把路由程序设为<varclass="LITERAL">NO</var>:</p><pre class="PROGRAMLISTING">router_enable="NO"</pre><p><tt class="COMMAND">routed</tt> 守护进程没有启动是很重要的 (它是默认启动的),因为<ttclass="COMMAND">routed</tt>会删除<tt class="COMMAND">ppp</tt>建立的默认路由表项.</p><p>保证 <var class="LITERAL">sendmail_flags</var>行不包含<varclass="OPTION">-q</var>选项是值得的,否则 <ttclass="COMMAND">sendmail</tt>每次都会对网络进行查询,可能使你的机器dial out.可以这样试试:</p><pre class="PROGRAMLISTING">sendmail_flags="-bd"</pre><p>替代的作法是当每次PPP连接建立时你必须通过键入以下命令强制 <ttclass="COMMAND">sendmail</tt>重新检查邮件队列:</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbd class="USERINPUT">/usr/sbin/sendmail -q</kbd></pre><p>你也可以在<tt class="FILENAME">ppp.linkup</tt>使用<ttclass="COMMAND">!bg</tt>命令自动完成这些工作:</p><pre class="PROGRAMLISTING">1 provider:2 delete ALL3 add 0 0 HISADDR4 !bg sendmail -bd -q30m</pre><p>如果你不喜欢这样做, 可以设立一个 ``dfilter'' 以阻止 SMTP传输.参考相关文件了解更多细节.</p><p>现在你唯一要做的事是重新启动计算机.</p><p>现在你唯一要做的事是重新启动计算机.重启后, 你现在可以键入:</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbd class="USERINPUT">ppp</kbd></pre><p>然后是<tt class="COMMAND">dial provider</tt>以开启 PPP会话. 或者如果你想让<ttclass="COMMAND">ppp</tt>自动建立会话 ,因为你有一个广域连接(且没有创建 <ttclass="FILENAME">start_if.tun0</tt> 脚本),键入:</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbd class="USERINPUT">ppp -auto provider</kbd></pre></div><div class="SECT3"><h3 class="SECT3"><a id="AEN24095" name="AEN24095">18.2.1.6. 总结</a></h3><p>当第一次设置PPP时,下面几步是必须的:</p><p>客户端:</p><div class="PROCEDURE"><ol type="1"><li><p>确保 <tt class="DEVICENAME">tun</tt>编译进了进核.</p></li><li><p>确保<tt class="FILENAME">tun<var class="REPLACEABLE">N</var></tt>设备文件在 <ttclass="FILENAME">/dev</tt>目录中是可用的.</p></li><li><p>在 <tt class="FILENAME">/etc/ppp/ppp.conf</tt>中创建一个项. <ttclass="FILENAME">pmdemand</tt>示例应该适合于绝大多数ISP.</p></li><li><p>如果你使用动态IP地址,在<tt class="FILENAME">/etc/ppp/ppp.linkup</tt>创建一个项.</p></li><li><p>更新<tt class="FILENAME">/etc/rc.conf</tt> 文件.</p></li><li><p>如果你要求按需拨号,创建一个<tt class="FILENAME">start_if.tun0</tt>脚本.</p></li></ol></div><p>服务器端:</p><div class="PROCEDURE"><ol type="1"><li><p>确保<tt class="DEVICENAME">tun</tt>设备已编译入内核.</p></li><li><p>确保<tt class="FILENAME">tun<var class="REPLACEABLE">N</var></tt>设备文件在 <ttclass="FILENAME">/dev</tt>目录中是可用的.</p></li><li><p>在<tt class="FILENAME">/etc/passwd</tt>中创建一个项 (使用<spanclass="CITEREFENTRY"><span class="REFENTRYTITLE">vipw</span>(8)</span>程序).</p></li><li><p>在用户的home目录创建一个运行 <tt class="COMMAND">ppp -directdirect-server</tt>或相似命令的profile.</p></li><li><p>在<tt class="FILENAME">/etc/ppp/ppp.conf</tt>中创建一个项. <ttclass="FILENAME">direct-server</tt>示例应该能满足要求.</p></li><li><p>在 <tt class="FILENAME">/etc/ppp/ppp.linkup</tt>中创建一个项.</p></li><li><p>更新 <tt class="FILENAME">/etc/rc.conf</tt> 文件.</p></li></ol></div></div></div></div><div class="NAVFOOTER"><hr align="LEFT" width="100%" /><table summary="Footer navigation table" width="100%" border="0" cellpadding="0"cellspacing="0"><tr><td width="33%" align="left" valign="top"><a href="ppp-and-slip.html"accesskey="P">Prev</a></td><td width="34%" align="center" valign="top"><a href="index.html"accesskey="H">Home</a></td><td width="33%" align="right" valign="top"><a href="ppp.html" accesskey="N">Next</a></td></tr><tr><td width="33%" align="left" valign="top">PPP 和 SLIP</td><td width="34%" align="center" valign="top"><a href="ppp-and-slip.html"accesskey="U">Up</a></td><td width="33%" align="right" valign="top">使用内核级PPP</td></tr></table></div></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -