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