📄 userppp.html
字号:
<p>如果你不想用<var class="OPTION">-auto</var>选项运行PPP, 这行要被移到<ttclass="FILENAME">ppp.linkup</tt>文件.</p></dd></dl></div><p>若你有一个静态IP地址,且使用<var class="OPTION">-auto</var>模式运行ppp(因为在连接之前已经正确设置了路由表项),那就不需要再向<ttclass="FILENAME">ppp.linkup</tt>添加项.你可能希望在连接以后创建一个项来调用程序.这在以后的sendmail的例子中会解释. .</p><p>示例配置文件可以在目录<tt class="FILENAME">/usr/share/examples/ppp/</tt>中找到.</p></div><div class="SECT4"><h4 class="SECT4"><a id="USERPPP-DYNAMICIP" name="USERPPP-DYNAMICIP">18.2.1.3.2.PPP和动态IP地址</a></h4><p>如果ISP没给你指定静态的IP地址,<ttclass="COMMAND">ppp</tt>要被配置成能够与对方协商确定本地和远程地址.要完成这项工作,先要``猜''一个IP地址,然后允许 <ttclass="COMMAND">ppp</tt>在连接后使用IP配置协议(IPCP)进行正确配置. <ttclass="FILENAME">ppp.conf</tt>的配置是与 <ahref="userppp.html#USERPPP-STATICIP">PPP和静态IP地址</a>一样的,除了以下的改变:</p><pre class="PROGRAMLISTING">17 set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.255</pre><p>再次强调,不要包括行号,它只是一个引用标记.缩排一个空格是必须的.</p><div class="VARIABLELIST"><dl><dt>行17:</dt><dd><p><var class="LITERAL">/</var>字符以后是PPP所要求的地址位码.你可以根据需要使用不同IP号码,但以上的例子永远是可行的.</p><p>最后的参数(<var class="LITERAL">0.0.0.0</var>)告诉 PPP从<ttclass="HOSTID">0.0.0.0</tt> 而不是 <tt class="HOSTID">10.0.0.1</tt>开始协商地址,对于有些ISP, 这是必需的.不要将 <var class="LITERAL">0.0.0.0</var> 作为 <ttclass="COMMAND">set ifaddr</tt>的第一个参数,因为这使得PPP在 <varclass="OPTION">-auto</var> 模式时不能设置初始路由.</p></dd></dl></div><p>如果你不运行<var class="OPTION">-auto</var>模式, 就需要在<ttclass="FILENAME">/etc/ppp/ppp.linkup</tt>中创建一个项. 连接建立之后,<ttclass="FILENAME">ppp.linkup</tt>被启用. 这时候, <ttclass="COMMAND">ppp</tt>将指派接口地址,接着再添加路由表项:</p><pre class="PROGRAMLISTING">1 provider:2 add default HISADDR</pre><div class="VARIABLELIST"><dl><dt>Line 1:</dt><dd><p>为了建立连接, <tt class="COMMAND">ppp</tt> 会按按照如下规则在 <ttclass="FILENAME">ppp.linkup</tt>寻找项:首先,试图寻找相同的标签 (如同在<ttclass="FILENAME">ppp.conf</tt>一样).如果失败了,寻找作为网关IP地址的项,此项是四个八位字节的风格.如果依旧没有找到,就寻找<varclass="LITERAL">MYADDR</var>项</p></dd><dt>行 2:</dt><dd><p>这行告诉 <tt class="COMMAND">ppp</tt>添加指向 <varclass="LITERAL">HISADDR</var>的默认路由. <varclass="LITERAL">HISADDR</var>由通过IPCP协商得到的IP号替换.</p></dd></dl></div><p>参考<tt class="FILENAME">/usr/share/examples/ppp/ppp.conf.sample</tt> 和<ttclass="FILENAME">/usr/share/examples/ppp/ppp.linkup.sample</tt> 中的<varclass="LITERAL">pmdemand</var>项以获取细节化的例子.</p></div><div class="SECT4"><h4 class="SECT4"><a id="AEN23789" name="AEN23789">18.2.1.3.3. 接收拨入</a></h4><p>当要配置 <b class="APPLICATION">ppp</b>接受来自LAN上的拨入时,你需要决定是否将包转给LAN.如果是的话,你就必须从LAN子网中 给对方分配一个IP,需要在文件<tt class="FILENAME">/etc/ppp/ppp.conf</tt> 中使用命令<ttclass="COMMAND">enable proxy</tt> .你还应该确定文件 <ttclass="FILENAME">/etc/rc.conf</tt>中包含以下内容:</p><pre class="PROGRAMLISTING">gateway_enable="YES"</pre></div><div class="SECT4"><h4 class="SECT4"><a id="AEN23800" name="AEN23800">18.2.1.3.4. 使用哪个ggtty?</a></h4><p><a href="dialup.html">配置FreeBSD的拨号服务</a>描述了怎么使用命令 <spanclass="CITEREFENTRY"><span class="REFENTRYTITLE">getty</span>(8)</span>启动拨号服务.</p><p>除了<tt class="COMMAND">getty</tt> 还有 <ahref="http://www.leo.org/~doering/mgetty/index.html" target="_top">mgetty</a>, 它是<ttclass="COMMAND">getty</tt>的智能版本,是按照拨号线的思想设计的.</p><p>使用<tt class="COMMAND">mgetty</tt>的好处是它能积极地与modems进行 <spanclass="emphasis"><i class="EMPHASIS">talks</i></span> , 这就意味着如果在<ttclass="FILENAME">/etc/ttys</tt>中的端口被关闭, 你的moderm就不会回应拨入.</p><p>最新版本的<tt class="COMMAND">mgetty</tt> (from 0.99betaonwards)也支持自动侦测PPP数据流,允许客户端不使用脚本就可以访问服务器 .</p><p>参考<a href="userppp.html#USERPPP-MGETTY">Mgetty 和AutoPPP</a>的联机手册了解更多信息.</p></div><div class="SECT4"><h4 class="SECT4"><a id="AEN23819" name="AEN23819">18.2.1.3.5. <bclass="APPLICATION">PPP</b> 权限</a></h4><p><tt class="COMMAND">ppp</tt>命令通常必须作为<tt class="USERNAME">root</tt>用户运行.但如果想让一个普通用户将<tt class="COMMAND">ppp</tt>运行于服务器模式(就像下面描述的那样),你必须要把此用户加入<tt class="USERNAME">network</tt>组以使其获得运行 <ttclass="COMMAND">ppp</tt> 的权限.</p><p>你还需要使用<tt class="COMMAND">allow</tt>命令使用户能访问配置文件的一个或多个部分:</p><pre class="PROGRAMLISTING">allow users fred mary</pre><p>如果这个命令被用在 <var class="LITERAL">default</var>部分中,你可以让指定的用户访问任何东西.</p></div><div class="SECT4"><h4 class="SECT4"><a id="AEN23833" name="AEN23833">18.2.1.3.6. 动态IP用户的PPPShell</a></h4><p>创建一个名为<tt class="FILENAME">/etc/ppp/ppp-shell</tt>文件,加入以下内容:</p><pre class="PROGRAMLISTING">#!/bin/shIDENT=`echo $0 | sed -e 's/^.*-\(.*\)$/\1/'`CALLEDAS="$IDENT"TTY=`tty`if [ x$IDENT = xdialup ]; then IDENT=`basename $TTY`fiecho "PPP for $CALLEDAS on $TTY"echo "Starting PPP for $IDENT"exec /usr/sbin/ppp -direct $IDENT</pre><p>这个脚本要有可执行属性. 然后通过如下命令创建一个指向此脚本且名为 <ttclass="FILENAME">ppp-dialup</tt>的符号链接:</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbdclass="USERINPUT">ln -s ppp-shell /etc/ppp/ppp-dialup</kbd></pre><p>你应该将这个脚本作为所有拨入用户的<span class="emphasis"><iclass="EMPHASIS">shell</i></span>. 以下是在文件<ttclass="FILENAME">/etc/password</tt>中关于一个PPP用户的例子,用户名为 <ttclass="USERNAME">pchilds</tt> (切记不要直接修改这个密码文件, 而是使用<ttclass="COMMAND">vipw</tt>命令).</p><pre class="PROGRAMLISTING">pchilds:*:1011:300:Peter Childs PPP:/home/ppp:/etc/ppp/ppp-dialup</pre><p>创建一个名为 <tt class="FILENAME">/home/ppp</tt>的目录作为拨入用户的主目录,包含以下这些空文件:</p><pre class="SCREEN">-r--r--r-- 1 root wheel 0 May 27 02:23 .hushlogin-r--r--r-- 1 root wheel 0 May 27 02:22 .rhosts</pre><p>这样就可以防止<tt class="FILENAME">/etc/motd</tt>被显示出来.</p></div><div class="SECT4"><h4 class="SECT4"><a id="AEN23856" name="AEN23856">18.2.1.3.7. 静态IP用户的Shell</a></h4><p>像上面那样创建<tt class="FILENAME">ppp-shell</tt>文件, 为每个静态分配IP用户创建一个到<tt class="FILENAME">ppp-shell</tt>的 符号链接.</p><p>例如,如果你有三个拨号用户, <tt class="USERNAME">fred</tt>,<ttclass="USERNAME">sam</tt>,和 <ttclass="USERNAME">mary</tt>,你为他们路由C类网络,你需要键入以下内容:</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbdclass="USERINPUT">ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-fred</kbd><samp class="PROMPT">#</samp> <kbdclass="USERINPUT">ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-sam</kbd><samp class="PROMPT">#</samp> <kbdclass="USERINPUT">ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-mary</kbd></pre><p>每个用户的Shell必须被设成一个符号链接(例如用户 <ttclass="USERNAME">mary</tt>的Shell应该是<tt class="FILENAME">/etc/ppp/ppp-mary</tt>).</p></div><div class="SECT4"><h4 class="SECT4"><a id="AEN23877" name="AEN23877">18.2.1.3.8. 为动态IP用户设置<ttclass="FILENAME">ppp.conf</tt></a></h4><p><tt class="FILENAME">/etc/ppp/ppp.conf</tt>文件应该包含下面 这些行:</p><pre class="PROGRAMLISTING">default: set debug phase lcp chat set timeout 0ttyd0: set ifaddr 203.14.100.1 203.14.100.20 255.255.255.255 enable proxyttyd1: set ifaddr 203.14.100.1 203.14.100.21 255.255.255.255 enable proxy</pre><div class="NOTE"><blockquote class="NOTE"><p><b>Note:</b> 缩进得必须的.</p></blockquote></div><p><var class="LITERAL">default:</var>项在每次会话时都会加载.每个在 <ttclass="FILENAME">/etc/ttys</tt>中启用的行都必须为其创建一个相似于 <varclass="LITERAL">ttyd0:</var> 的项.每一行应该从动态IP 地址池中取得 唯一的IP地址.</p></div><div class="SECT4"><h4 class="SECT4"><a id="AEN23889" name="AEN23889">18.2.1.3.9. 为静态IP用户配置<ttclass="FILENAME">ppp.conf</tt></a></h4><p>根据上面<tt class="FILENAME">/usr/share/examples/ppp/ppp.conf</tt>文件的内容,你必须为每个静态拨号用户添加一个项.我们继续以<tt class="USERNAME">fred</tt>, <ttclass="USERNAME">sam</tt>, 和<tt class="USERNAME">mary</tt>为例.</p><pre class="PROGRAMLISTING">fred: set ifaddr 203.14.100.1 203.14.101.1 255.255.255.255sam: set ifaddr 203.14.100.1 203.14.102.1 255.255.255.255mary: set ifaddr 203.14.100.1 203.14.103.1 255.255.255.255</pre><p>如果需要,<tt class="FILENAME">/etc/ppp/ppp.linkup</tt>也应该包括每个静态IP用户的的路由信息.下面这一行为客户连接添加了 <ttclass="HOSTID">203.14.101.0</tt>C类路由.</p><pre class="PROGRAMLISTING">fred: add 203.14.101.0 netmask 255.255.255.0 HISADDRsam: add 203.14.102.0 netmask 255.255.255.0 HISADDRmary: add 203.14.103.0 netmask 255.255.255.0 HISADDR</pre></div><div class="SECT4"><h4 class="SECT4"><a id="USERPPP-MGETTY" name="USERPPP-MGETTY">18.2.1.3.10. <ttclass="COMMAND">mgetty</tt>和AutoPPP</a></h4><p>在配置和编译<tt class="COMMAND">mgetty</tt> 时启用 <varclass="LITERAL">AUTO_PPP</var>选项 使<ttclass="COMMAND">mgetty</tt>能够探测PPP连接的的LCP状态 并自动产生PPP Shell.但如果默认的login/password队列没有出现, 那就必须使用PAP或CHAP来验证用户.</p><p>这节假定你已经为用户成功地配置,编译了带有<var class="LITERAL">AUTO_PPP</var>选项的 <ttclass="COMMAND">mgetty</tt>.</p><p>确认钅件<tt class="FILENAME">/usr/local/etc/mgetty+sendfax/login.config</tt>包含以下内容:</p><pre class="PROGRAMLISTING">/AutoPPP/ - - /etc/ppp/ppp-pap-dialup</pre><p>这行告诉<tt class="COMMAND">mgetty</tt>运行 <ttclass="FILENAME">ppp-pap-dialup</tt>脚本来侦听PPP连接.</p><p>创建<tt class="FILENAME">/etc/ppp/ppp-pap-dialup</tt>文件写入以下内容(此文件应该是可执行的):</p><pre class="PROGRAMLISTING">#!/bin/shexec /usr/sbin/ppp -direct pap$IDENT</pre><p>对应于每个在<tt class="FILENAME">/etc/ttys</tt>的启用行,都要在<ttclass="FILENAME">/etc/ppp/ppp.conf</tt> 中创建相应的项. 这和上面的定义是相同的.</p><pre class="PROGRAMLISTING">pap: enable pap set ifaddr 203.14.100.1 203.14.100.20-203.14.100.40 enable proxy</pre><p>每个通过这种方式登陆的用户必须在 <ttclass="FILENAME">/etc/ppp/ppp.secret</tt>文件中有一个username/password项,或者加入以下选项以使服务器通过PAP方式用<tt class="FILENAME">/etc/password</tt>文件验证用户.</p><pre class="PROGRAMLISTING">enable passwdauth</pre><p>如果你想为某些用户分配静态IP, 可以在<ttclass="FILENAME">/etc/ppp/ppp.secret</tt>中将IP号作为第三个参数指定. 参看 <ttclass="FILENAME">/usr/share/examples/ppp/ppp.secret.sample</tt> 中的例子.</p></div><div class="SECT4">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -