Next Previous Contents

26. 建立 PPP 伺服器

如同前面提过的,这件工作有许多方法可以可以达成. 我在这里所介绍的是我怎麽做的方法(使用 Cyclades 多埠串列卡)以及一组自动转接的电话线路.

如果你不喜欢我在这里介绍的方法,请自由地使用你自己的方法. 不过,我很乐意在这份使用说明未来的版本中包含额外的方式.所以,请把你的评论跟方法寄给我!

请注意,这一节只跟如何设定 Linux 作为 PPP 伺服器有关.我不想(不曾)包含有关设定特殊终端机伺服器及这一类的资讯.

而且,我尚未实验过配合 shadow 密码使用(但应该会做).因此目前介绍的资讯并不包含任何 shadow 需要的设定.

26.1 编译核心

所有早先提过关於编译核心以及核心与 pppd 版本的说明都适用.这节假设你已经读过这份文件前面的章节!

对於 PPP 伺服器,你必须在你的核心中包含 IP forwarding 的功能. 你也可能会希望包含其它的功能(像是 IP firewalls, accounting 等等).

如果你使用多埠串列卡,那麽你也必须明确地在你的核心中包含必要的驱动程式!

26.2 伺服器系统的概观

我们使用相同的使用者名称/密码配对提供拨接 PPP (and SLIP) 帐号以及 shell 帐号. 这样做的好处(对我们而言)是使用者只需要一个帐号就可以使用所有种类的连线.

因为我们是教育组织,我们并不对职员以及学生的使用收费,所以不必担心计算与收费的问题.

在我们的节点与网际网路之间我们设置有一台防火墙,而这会限制某些使用者的存取,因为拨接线路是在我们的(网际网路)防火墙内(理由很明显,其他网际网路防火墙的细节也不会在此出现而且在任何情况下都没有关系).

使用者建立连往我们节点之 PPP 连结的程序(当然是在他们拥有有效的帐号後)是:

这台伺服器为每个拨入的埠使用个别的 /etc/ppp/options.ttyXX 档案,而这为动态的 IP 分配设定远端的 IP 号码. 伺服器为远地的客户端使用代理位址解析协定(proxyarp)来递送封包(经由适当的 pppd 选项加以设定). 这避免了使用 routed 或是 gated 的需求.

当使用者从他们那端挂断时,pppd 会侦测出来并告诉数据机要它挂断,同时停掉 PPP 连结.

26.3 所需的全部软体

你将会需要下列的软体:-

26.4 设定标准的拨接(shell access)

在你可以设立你的 PPP 伺服器之前,你的 Linux 机器必须能够处理标准的拨接存取.

这份使用说明并不涵盖这项设定方法.请参阅你选择之 getty 的文件以及 Serial HOWTO 里有关这项设定的资讯.

26.5 设立 PPP 选项档案

你将得为所有拨接埠设立一个全体的 /etc/ppp/options 档案,其中是通用的选项. 我们使用的选项是:


asyncmap 0
netmask 255.255.254.0
proxyarp
lock
crtscts
modem

注意 - 我们没有使用任何(明显的)递送设定 - 特别是这里没有 defaultroute 选项. 这理由是因为所有你(做为 PPP 伺服器)所要做的就是将封包 PPP 客户端递送到你的区域网路或网际网路并且将封包由你的区域网路递送你的客户端.

全部所需的只是到客户机器的主机递送,而使用 pppd 的 'proxyarp' 选项达成.

这个 'proxyarp' 选项设立一个代理位址解析协定的项目於 PPP 伺服器的位址解析协定(ARP)表格中,那基本上就是说 '将所有要给 PPP 客户端的封包送给我'. 这是建立单一 PPP 客户端的递送路径最简单的一个方式 - 但你不能用这种方式在两个区域网路之间递送封包 - 你必须加入适当的网路递送而不能使用代理位址解析协定.

你几乎一定会希望提供动态分配的 IP 号码给你的拨接使用者.你可以藉由分配 IP 号码给每个拨接埠来达成目的. 现在,为你的每个拨接埠建立一个 /etc/ppp/options.ttyXX 档案.

在这里面,只要简单地放入本地(伺服器)的 IP 号码及该埠所要使用的 IP 号码.例如


kepler:slip01

特别注意,在这个档案里你可以使用合法的主机名称(我发现我只记得在我网路上重要机器与设备的 IP 号码 - 名称会更有意义才对)!

26.6 设定 pppd 以便让使用者(成功地)执行它

因为起动 ppp 连结隐含著配置核心设备(网路界面)及操控核心递送表格的动作,所以需要特别的权限 - 事实上需要完整的 root 权限.

幸运的是, pppd 已经设计成可以安全地设定为以 root 的身分执行.所以你必须


chmod u+s /usr/sbin/pppd

当你列出这个档案时,它应该会如同这样


-rwsr-xr-x   1 root     root        74224 Apr 28 07:17 /usr/sbin/pppd

如果你没有这样做,使用者将不能设立他们的 PPP 连结.

26.7 为 pppd 设定一个全域的别名(alias)

为了简化我们拨接 PPP 使用者的连线程序,我们建立一个全域的别名(放在 /etc/bashrc)如此一旦他们签入之後只要一个简单的指令就能起动伺服端的 ppp.

这看起来像


alias ppp="exec /usr/sbin/pppd -detach"

它所作的是

当一个使用者像这样签入时,他们在 'w' 的输出中看起来会像这样


  6:24pm  up 3 days,  7:00,  4 users,  load average: 0.05, 0.03, 0.00
User     tty       login@  idle   JCPU   PCPU  what
hartr    ttyC0     3:05am  9:14                -

就这样... 我告诉过你这是一个很简单的,基本的 PPP 伺服系统!


Next Previous Contents