系统管理指南:网络服务

创建 PPPoE 通道以支持 DSL

使用 PPPoE,可以为使用一个或多个 DSL 调制解调器的多台客户机提供基于高速数字服务的 PPP。PPPoE 通过在以下三个参与者之间创建以太网通道来实现这些服务:企业、电话公司和服务提供商。

本节包含有关 PPPoE 命令和文件的详细信息,下表对这些信息进行了总结。

表 22–2 PPPoE 命令和配置文件

文件或命令  

说明 

参考 

/etc/ppp/pppoe

包含缺省情况下应用于所有通道的特征的文件,这些通道由系统中的 PPPoE 设置 

/etc/ppp/pppoe 文件

/etc/ppp/pppoe.device

包含特定接口的特征的文件,PPPoE 将该接口用于某通道 

/etc/ppp/pppoe.device 文件

/etc/ppp/pppoe.if

列出了以太网接口的文件,这些接口将运行由 PPPoE 设置的通道 

/etc/ppp/pppoe.if 文件

/usr/sbin/sppptun

用于配置 PPPoE 通道中涉及的以太网接口的命令 

/usr/sbin/sppptun 命令

/usr/lib/inet/pppoed

使用 PPPoE 设置通道的命令和选项 

/usr/lib/inet/pppoed 守护进程

用于配置 PPPoE 的接口的文件

只有首先对 PPPoE 通道任何一端使用的接口进行配置,该通道才能支持 PPP 通信。可使用 /usr/sbin/sppptun/etc/ppp/pppoe.if 文件进行此操作。必须使用这些工具在所有 Solaris PPPoE 客户机和 PPPoE 访问服务器上配置以太网接口。

/etc/ppp/pppoe.if 文件

/etc/ppp/pppoe.if 文件列出了主机上要用于 PPPoE 通道的所有以太网接口的名称。系统引导期间,当检测要用于 PPPoE 通道的所列出接口时,将会对此文件进行处理。

您需要显式创建 /etc/ppp/pppoe.if。在每一行上键入要对 PPPoE 配置的一个接口的名称。

以下示例显示了为 PPPoE 通道提供三个接口的服务器的 /etc/ppp/pppoe.if 文件。


# cat /etc/ppp/pppoe.if

hme1

hme2

hme3

PPPoE 客户机通常仅有一个在 /etc/ppp/pppoe.if 中列出的接口。

/usr/sbin/sppptun 命令

您可以使用 /usr/sbin/sppptun 命令手动检测要用于 PPPoE 通道的以太网接口和解除对这些接口的检测。与此相反,系统引导期间 /etc/ppp/pppoe.if 仅被读取。这些接口应与 /etc/ppp/pppoe.if 中列出的接口相对应。

sppptun 以与 ifconfig 命令类似的方式检测 PPPoE 通道中使用的以太网接口。与 ifconfig 不同,因为涉及两个以太网协议编号,所以必须检测接口两次才能支持 PPPoE。

sppptun 的基本语法如下所示:


# /usr/sbin/sppptun plumb pppoed device-name

     device-name:pppoed

# /usr/sbin/sppptun plumb pppoe device-name

     device-name:pppoe

在此语法中,device-name 是要为 PPPoE 检测的设备的名称。

首次发出 sppptun 命令时,将会在接口上检测搜索协议 pppoed。第二次运行 sppptun 命令时,将会检测会话协议 pppoesppptun 将列显已检测的接口的名称。如果需要,可以使用此名称解除对接口的检测。

有关更多信息,请参阅 sppptun(1M) 手册页。

用于管理接口的 sppptun 命令的示例

以下示例说明如何使用 /usr/sbin/sppptun 手动检测用于 PPPoE 的接口。


# /usr/sbin/sppptun plumb pppoed hme0

hme0:pppoed

# /dev/sppptun plumb pppoe hme0

 hme0:pppoe

以下示例说明如何列出访问服务器上用于 PPPoE 的已检测的接口。


# /usr/sbin/sppptun query

hme0:pppoe

hme0:pppoed

hme1:pppoe

hme1:pppoed

hme2:pppoe

hme2:pppoed

以下示例说明如何解除对接口的检测。


# sppptun unplumb hme0:pppoed

# sppptun unplumb hme0:pppoe

PPPoE 访问服务器命令和文件

为客户提供 DSL 服务或支持的服务提供商可以使用正在运行 Solaris PPPoE 的访问服务器。PPPoE 访问服务器和客户机采用传统客户机/服务器关系进行工作。此关系与拨号链路上拨出计算机和拨入服务器的关系类似。一个 PPPoE 系统启动通信,一个 PPPoE 系统应答。与此相反,PPP 协议没有客户机/服务器关系的概念。 PPP 将两个系统视为相同的对等点。

可用于设置 PPPoE 访问服务器的命令和文件包括:

/usr/lib/inet/pppoed 守护进程

pppoed 守护进程接受来自预期的 PPPoE 客户机的服务广播。此外,pppoed 将协商 PPPoE 通道的服务器端,然后基于该通道运行 pppd(PPP 守护进程)。

可以在 /etc/ppp/pppoe/etc/ppp/pppoe.device 文件中配置 pppoed 服务。引导系统时,如果 /etc/ppp/pppoe 存在,则将会自动运行 pppoed。您也可以在命令行中通过键入 /usr/lib/inet/pppoed 来显式运行 pppoed 守护进程。

/etc/ppp/pppoe 文件

/etc/ppp/pppoe 文件说明访问服务器提供的服务,以及定义 PPP 如何通过 PPPoE 通道运行的选项。您可以为各个接口定义服务,或全局定义服务(即为访问服务器上的所有接口定义服务)。访问服务器发送 /etc/ppp/pppoe 文件中的信息以响应来自可能的 PPPoE 客户机的广播。

以下是 /etc/ppp/pppoe 的基本语法:


global-options

service service-name

    service-specific-options

    device interface-name

  

这些参数具有以下含义。

global-options

设置 /etc/ppp/pppoe 文件的缺省选项。这些选项可以是通过 pppoedpppd 使用的任何选项。有关这些选项的完整列表,请参见手册页 pppoed(1M)pppd(1M)

例如,您必须列出 PPPoE 通道可以使用的以太网接口,作为 global options 的一部分。如果未在 /etc/ppp/pppoe 中定义设备,则不会在任何接口上提供服务。

要将 devices 定义为全局选项,请使用以下格式:


device interface <,interface>

interface 指定服务将侦听可能的 PPPoE 客户机的接口。如果多个接口与服务关联,请使用逗号分隔各个名称。

service service-name

启动服务 service-name 的定义。service-name 是一个字符串,它可以是适用于所提供服务的任何短语。

service-specific-options

列出特定于此服务的 PPPoE 和 PPP 选项。

device interface-name

指定可以使用前面列出的服务的接口。

有关 /etc/ppp/pppoe 的其他选项,请参阅 pppoed(1M)pppd(1M) 手册页。

/etc/ppp/pppoe 文件通常与以下类似。


示例 22–2 基本 /etc/ppp/pppoe 文件


device hme1,hme2,hme3

service internet

   pppd "name internet-server"

service intranet

   pppd "192.168.1.1:"

service debug

   device hme1

   pppd "debug name internet-server"

在此文件中,以下值适用。

hme1,hme2,hme3

访问服务器上将要用于 PPPoE 通道的三个接口。

service internet

向预期的客户机通知称为 internet 的服务。提供该服务的提供商还确定定义 internet 的方式。例如,提供商可以将 internet 解释为表示各种 IP 服务和对 Internet 的访问。

pppd

设置呼叫者调用 pppd 时将使用的命令行选项。选项 "name internet-server" 将本地计算机(访问服务器)的名称指定为 internet-server

service intranet

向预期的客户机通知称为 intranet 的另一服务。

pppd "192.168.1.1:"

设置呼叫者调用 pppd 时将使用的命令行选项。呼叫者调用 pppd 时,192.168.1.1 将设置为本地计算机(访问服务器)的 IP 地址。

service debug

在定义用于 PPPoE 的接口上通知第三种服务(即调试)。

device hme1

将对 PPPoE 通道的调试限制为 hme1

pppd "debug name internet-server"

设置呼叫者调用 pppd 时将使用的命令行选项。在此例中,是对 internet-server(本地计算机)进行的 PPP 调试。

/etc/ppp/pppoe.device 文件

/etc/ppp/pppoe.device 文件说明 PPPoE 访问服务器的一个接口上提供的服务。/etc/ppp/pppoe.device 还包括定义 PPP 如何通过 PPPoE 通道运行的选项。/etc/ppp/pppoe.device 是一个可选文件,其运行方式与全局 /etc/ppp/pppoe 的运行方式完全相同。但是,如果为接口定义了 /etc/ppp/pppoe.device,则该接口的参数优先于 /etc/ppp/pppoe 中定义的全局参数。

/etc/ppp/pppoe.device 的基本语法如下所示:


service service-name

     service-specific-options

service another-service-name

      service-specific-options    

此语法与 /etc/ppp/pppoe 的语法的唯一差别是,您不能使用 /etc/ppp/pppoe 文件 中所示的 device 选项。

pppoe.so 插件

pppoe.so 是必须由 PPPoE 访问服务器和客户机调用的 PPPoE 共享对象文件。此文件将 MTU 和 MRU 限制为 1492,过滤驱动程序中的包,并与 pppoed 一起协商 PPPoE 通道。在访问服务器端,pppoe.sopppd 守护进程自动调用。

使用 PPPoE 和 PPP 文件配置访问服务器

本节包含用于配置访问服务器的所有文件样例。访问服务器为多宿主服务器。该服务器连接到三个子网:greenorangepurplepppoed 在服务器上缺省以 root 身份运行。

PPPoE 客户机可以通过接口 hme0hme1 访问 orangepurple 网络。客户机使用标准 UNIX 登录来登录到服务器。服务器使用 PAP 验证客户机。

green 网络不会向客户机通知。客户机可以访问 green 的唯一方法是直接指定 "green-net" 并提供 CHAP 验证凭证。此外,只有客户机 joemary 被允许使用静态 IP 地址访问 green 网络。


示例 22–3 访问服务器的/etc/ppp/pppoe 文件


service orange-net

     device hme0,hme1

     pppd "require-pap login name orange-server orange-server:"

service purple-net

     device hme0,hme1 

     pppd "require-pap login name purple-server purple-server:"

service green-net

     device hme1 

     pppd "require-chap name green-server green-server:"

     nowildcard

此样例说明访问服务器提供的服务。第一个服务部分说明 orange 网络的服务。


service orange-net

     device hme0,hme1

     pppd "require-pap login name orange-server orange-server:"

客户机通过接口 hme0hme1 访问 orange 网络。指定给 pppd 命令的选项将强制服务器要求可能的客户机提供 PAP 凭证。pppd 选项还将服务器的名称设置为 orange-server,与 pap-secrets 文件中所使用的相同。

purple 网络的服务部分与 orange 网络的服务部分相同,唯一不同的是网络和服务器名称。

下一部分说明 green 网络的服务:


service green-net

     device hme1 

     pppd "require-chap name green-server green-server:"

     nowildcard

此部分限制客户机访问接口 hme1。指定给 pppd 命令的选项将强制服务器要求预期的客户机提供 CHAP 凭证。pppd 选项还将服务器名称设置为 green-server,此名称将在 chap-secrets 文件中使用。nowildcard 选项指定将不向客户机通知 green 网络的存在。

对于上面讨论的访问服务器方案,可以设置以下 /etc/ppp/options 文件。


示例 22–4 访问服务器的/etc/ppp/options 文件


 	auth

 	proxyarp

 	nodefaultroute

 	name no-service	# don't authenticate otherwise

选项 name no-service 覆盖通常在 PAP 和 CHAP 验证期间搜索的服务器名称。服务器的缺省名称是由 /usr/bin/hostname 命令搜索到的名称。上一示例中的 name 选项将服务器的名称更改为 no-service。名称 no-service 可能不会出现在 papchap-secrets 文件中。此操作禁止随机用户运行 pppd 和覆盖在 /etc/ppp/options 中设置的 authname 选项。这样,由于找不到服务器名称为 no-service 的客户机的机密,pppd 将失败。

访问服务器方案使用以下 /etc/hosts 文件。


示例 22–5 访问服务器的/etc/hosts 文件


     172.16.0.1	orange-server

     172.17.0.1	purple-server

     172.18.0.1	green-server

     172.18.0.2	joes-pc

     172.18.0.3	marys-pc

以下是用于对尝试访问 orangepurple 网络的客户机进行 PAP 验证的 /etc/ppp/pap-secrets 文件。


示例 22–6 访问服务器的/etc/ppp/pap-secrets 文件


* orange-server "" 172.16.0.2/16+

* purple-server "" 172.17.0.2/16+

以下是用于 CHAP 验证的 /etc/ppp/chap-secrets 文件。请注意,该文件中只列出了 joemary 客户机。


示例 22–7 访问服务器的/etc/ppp/chap-secrets 文件


 joe green-server "joe's secret" joes-pc

mary green-server "mary's secret" marys-pc

PPPoE 客户机命令和文件

要通过 DSL 调制解调器运行 PPP,计算机必须成为 PPPoE 客户机。您必须检测用于运行 PPPoE 的接口,然后使用 pppoec 实用程序“搜索”是否存在访问服务器。这样,客户机可以创建通过 DSL 调制解调器的 PPPoE 通道,并运行 PPP。

PPPoE 客户机与传统客户机/服务器模型中的访问服务器相关。PPPoE 通道不是拨号链路,但配置和操作该通道的方式几乎相同。

可用于设置 PPPoE 客户机的命令和文件包括:

/usr/lib/inet/pppoec 实用程序

/usr/lib/inet/pppoec 实用程序负责协商 PPPoE 通道的客户机端。pppoec 与 Solaris PPP 4.0 chat 实用程序类似。不能直接调用 pppoec。相反,应将 /usr/lib/inet/pppoec 作为 pppdconnect 选项的参数启动。

pppoe.so 共享对象

pppoe.so 是 PPPoE 共享对象,它必须通过 PPPoE 装入,从而为访问服务器和客户机提供 PPPoE 功能。pppoe.so 共享对象将 MTU 和 MRU 限制为 1492,过滤驱动程序中的包,以及处理运行时 PPPoE 消息。

在客户机端,pppd 将在用户指定 plugin pppoe.so 选项时装入 pppoe.so

用于定义访问服务器对等点的 /etc/ppp/peers/peer-name 文件

定义要通过 pppoec 搜索的访问服务器时,可以使用应用于 pppoecpppd 守护进程的选项。访问服务器的/etc/ppp/peers/peer-name 文件需要以下参数:

/etc/ppp/peers/peer-name 文件中的其余参数应当应用于服务器上的 PPP 链路。使用将用于拨出计算机上的 /etc/ppp/peers/peer-name 的相同选项。尽量将 PPP 链路需要的选项数量限制为最小。

如何定义 PPPoE 访问服务器对等点中介绍了以下示例。


示例 22–8 用于定义远程访问服务器的/etc/ppp/peers/peer-name


# cat /etc/ppp/peers/dslserve

sppptun

plugin pppoe.so

connect "/usr/lib/inet/pppoec hme0"

noccp

noauth

user Red

password redsecret

noipdefault

defaultroute

此文件定义在设置 PPPoE 通道和指向访问服务器 dslserve 的 PPP 链路时要使用的参数。包括的选项如下所示。

选项 

说明 

sppptun

sppptun 定义为串行设备的名称。

plugin pppoe.so

指示 pppd 装入 pppoe.so 共享对象。

connect "/usr/lib/inet/pppoec hme0"

运行 pppoec 并将 hme0 指定为 PPPoE 通道和 PPP 链路的接口。

noccp

关闭链路上的 CCP 压缩。 


注 –

许多 ISP 仅使用专有的压缩算法。关闭公开的 CCP 算法可节省协商时间和避免偶然的互操作性问题。


noauth

禁止 pppd 要求访问服务器提供验证凭证。大多数 ISP 不向用户提供验证凭证。

user Red

将名称 Red 设置为客户机的用户名,访问服务器要求提供该名称以进行 PAP 验证。

password redsecret

redsecret 定义为要提供给访问服务器以进行 PAP 验证的口令。

noipdefault

将 0.0.0.0 指定为初始 IP 地址。 

defaultroute

指示 pppd 在 IPCP 协商之后安装缺省 IPv4 路由。当链路为指向 Internet 的系统链路时,应在 /etc/ppp/peers/peer-name 中包括 defaultroute,这也适用于 PPPoE 客户机。