pppoe内核编译及服务器架设

来源:互联网 发布:淘宝大虫网游店 编辑:程序博客网 时间:2024/06/06 04:58
PPPOE服务器环境架设指南
2010-04-23 16:33

1.     架设服务器前的准备工作:

要架设PPPOE服务器,首先需要两台装有双系统的主机(最好这样),一台是做服务器,一台做客户端,这里假设服务器是A,客户端是B.服务器的版本是从LINUX-REDHAT2.4.20升级到2.6.6.客户端则保持原来的版本为2.4.20.

从www.kernel.org 网站上下载,rp-pppoe-3.8.tar.gz和ppp-2.4.4.tar.gz把这两个包都放到服务器的LINUX的/root下面。然后把rp-pppoe-3.8这个包放到客户端的LINUX下的/root下面。再从上面的网站上下载新版本2.6.6的内核这里选择了linux-2.6.6.tar.bz2,把这个包也放到/root下。下面的内容会具体介绍如何安装,要声明的是这里不再介绍一些基本的LINUX操作命令,如果不是很清楚请自行查阅。

2.     重新编译新的LINUX内核:

要实现PPPOE的功能,内核中的选项参数有些是不能少的,但是老的内核没有把PPPOE的一些选项作为内核编译进去,也没有作为模块编译进去,这就需要我们在2.6.0的内核中把这些该选的选项编译到新的内核中。

把之前下载的linux-2.6.6.tar.bz2复制到/usr/src中去,然后把压缩包进行压缩,压缩后会有一个新的文件夹出现,名为linux-2.6.6。接下来就可以进到这个文件夹里面编译内核了。

关于编译新的内核,网上的文章很多,但大多数换汤不换药,或者说的不是很详细,但是大多数涉及到2.6.6的新内核参数代表的意义还是比较详细的,在这里我就不针对每一个新内核选项的意义做详细的解释,我就说一下要建立PPPOE服务器哪些选项是必须要选进内核而不能不选或者编译进模块的。这些非常非常重要,如果少选或者不选,则新编译的内核不能使用,或者PPPOE服务器不能架设成功,所以在这里要非常细致入微。要增加对某部分功能的支持,比如网络之类,可以把相应部分编译到内核中(build-in),也可以把该部分编译成模块(module),动态调用。如果编译到内核中,在内核启动时就可以自动支持相应部分的功能,这样的优点是方便、速度快,机器一启动,你就可以使用这部分功能了;缺点是会使内核变得庞大起来,不管你是否需要这部分功能,它都会存在,这就是Windows惯用的招数,建议经常使用的部分直接编译到内核中,比如网卡。如果编译成模块,就会生成对应的.o文件,在使用的时候可以动态加载,优点是不会使内核过分庞大,缺点是你得自己来调用这些模块。

现在开始编译内核了,#cd /usr/src/linux-2.6.6然后#make menuconfig,这里我选择了make menuconfig是因为这样的编译比较直观,当然如果你的LINUX系统中XWINDOWS的配置比较高,则可以使用make xconfig。当完成输入后可以看到一个类似于DOS下的界面,有以下几个选项:

Code maturity level options --->

General setup --->

Loadable module support --->

Processor type and features --->

Power management options --->

Bus options(PCI,PCMCIA,EISA,MCA,ISA) --->

Executable file formats --->

Device drivers --->

File systerms --->

Profiling support --->

Kernel hacking --->

Secrrity options --->

Cryptographic options --->

Library routines --->

第一个选项是代码成熟度,也就是看你的内核支不支持IPV6之类的东西,把三个都[*]也就是bulid-in吧,我也不知道要不要选,很多网上的资料说要选所以我也选了。

第二个选项是对普通的一些属性的配置,东西很多,只要按照默认的选项就可以了,也就是说不用去动它就OK了。

第三个个选项是对模块的支持,进入选项后把第一个,第二个,第四个和第五个bulid-in就可以了。

第四个选项也按照默认值设置就可以了。

第五个也是。

第六个是总线的设置选项,进入选项后把PCI support给选上其他默认就可以了。

第七个按照默认值就可以了。

第八个选项device drivers是非常重要的选项,进入这个选项后找到networking support --->进入这个选项然后找到networking options --->

进入这个选项后必须选上packet socket,packet socket:mmapped IO然后回到上一个目录中找到ethernet(10 or 100Mbit) --->进入这个选项后把第一个给选择上,然后根据自己电脑的网卡选择一个合适的网卡驱动,比如我的是realtek RTL-8139的于是我就选择这个驱动作为网卡驱动。如果不选则在新内核中无法找到以太网的接口。选择完后回到上一菜单,找到<*>PPP(point-to-to-point protocol) support

[*]ppp multilink support

[*]ppp filtering

<*>ppp support for async serial ports

<*>ppp support for sync tty ports

<*>ppp deflate compression

<*>ppp bsd-compress compression

<*>ppp over Ethernet

这些是必须编译进内核的否则就无法设置成功PPPOE。

然后再回到上一菜单,找到character devices --->进入选项。把下面两个选择项编译进内核:

[*] non-standard serial port support

<*> HDLC line discipline support

第九个选项是操作系统的文件系统,这个选项同样非常重要,它事关你的新内核编译后能否启动。进入这个选项之后把有关ext2和ext3的所有选项都要选上。

其他剩下的选项只要都按照默认的设定即可。然后退出,当退出时系统会提示你是否要保存新编译的内核,选择YES之后。系统会提示你敲入make。然后你可以休息片刻,make完成之后make modules,又是一段等待的时间,然后make modules_install这个过程就比较漫长了。完成之后最后一步就是make install生成启动的映象和配置修改grub.conf。这一步自动帮你把grub的内容给修改了,而不用像2.4内核的编译一样还要自己去修改grub或者lilo中的开机选项内容。所以的make都完成之后reboot一下。然后如果一切顺利的话开机后你就能看到新编译的内核linux-2.6.6这个选项了。

在这里顺便把刚才几个比较重要的关于PPPOE的内核选项做一下解释:

CONFIG_PPP:使系统支持PPP协议。
CONFIG_PPP_ASYNC:使系统支持PPP协议的异步模式(关于异步和同步模式有什么不同我就不是很清楚了)。
CONFIG_PPP_SYNC_TTY:使系统支持PPP协议的同步模式。
CONFIG_PPP_DEFLATE:使系统支持PPP协议的Deflate压缩算法(和gzip一样的压缩算法)。
CONFIG_PPP_BSDCOMP:使系统支持PPP协议的BSD-Compress压缩算法。
CONFIG_PPPOE:使系统支持PPPOE协议。
CONFIG_SERIAL_NONSTANDARD:使系统支持多个串行口来允许多个终端的拨号连接。
CONFIG_N_HDLC:使用系统支持同步HDLC通信。

3. rp-pppoe-3.8和ppp-2.4.4的安装。

把pppd和rp-pppoe解压缩到/usr/local/src中。
安装pppd
cd /usr/local/src/ppp-2.4.4 ./configure --prefix=/usr/local/ppp 
make 
make install install-etcppp
安装rp-pppoe
cd /usr/local/src/rp-pppo-3.8/src 
PATH=$PATH:/usr/local/ppp/sbin ./configure --prefix=/usr/local/ppp --enable-plugin=/usr/local/src/ppp-2.4.4 
make 
make install
拷贝rp-pppoe.so到/etc/ppp/plugins(这一步应该也可以不用,因为原文档介绍的rp-pppoe的版本为3.5,当我使用3.8时,发现/etc/ppp/plugins里面已经有rp-pppoe.so了,不过再拷贝一次也没有问题) 
cp /usr/local/ppp/lib/pppd/2.4.3/rp-pppoe.so /etc/ppp/plugins

4. PPPOE配置

修改系统的模块配置文件,这个文件的名字和位置还真不好说,大家如果找不到请通过其他途径了解一下,redhat系统请到/etc/modules.conf里添加以下内容:

alias char-major-108 ppp_generic 
alias tty-ldisc-3 ppp_async 
alias tty-ldisc-13 n_hdlc 
alias tty-ldisc-14 ppp_synctty 
alias net-pf-24 pppoe。

修改/etc/ppp/options,让它的内容如下(下面的所有文件都一样,如果你的系统中找不到,则创建一个就是了)。

lock 
crtscts 
nobsdcomp 
nodeflate 
nopcomp

修改/etc/ppp/pppoe-server-options文件,让这的内容如下:

auth
#使用chap认证方式,如果想用pap认证方法则用require-pap
require-chap 
default-mru 
default-asyncmap 
lcp-echo-interval 60 
lcp-echo-failure 5

login //这个很重要,要是没有则拨号提示错误

如果把repuire-chap或者require-pap注释掉则拨号的时候就不需要用户名和密码的验证了随便输入一个就可以了。

添加客户端的用户名和密码文件,如果使用chap认证方式请更改/etc/ppp/chap-secrets文件,如果使用pap认证方式请更改/etc/ppp/chap-secrets文件,采用下面的格式:
“test" * "123456" *
每一行由四个字段构成,第一个字段为帐户名称,例子中设置为test,第二个字段为服务器,保持为*不做限制就是,第三个字段为用户密码,例子中设置为123456,第四个字段为允许从那个IP来拨号,设置为*不作限制就可以了。但是要注意的是用户名test必须是在LINUX 服务器中有的,如果没有则adduser添加一个账号为test的用户,否则拨号无法成功。

   最后启动PPPOE服务器:

/usr/local/ppp/sbin/pppoe-server -k -I eth0 -L 192.168.1.5 -R 192.168.1.10-200
上面命令在启动PPPOE服务器时指定了本地接口的IP为192.168.1.5,给客户端分配的IP地址范围是192.168.1.10-192.168.1.200。

5.   测试PPPOE服务器

如果你想在XP下面进行测试则在XP下新建一个PPPOE的网络连接,在用户名和密中填入刚才建立的用户名和密码然后连接,连接成功则表示服务器架设成功。

如果你想在LINUX的客户端中进行拨号测试则首先进入到你安装的rp-pppoe-3.8的包里然后#cd src然后#./config,接下来按照提示输入内容,要注意的的是接口如果你是eth0则输入eth0如果你是eth1则输入eth1,防火墙类型选择0,无防火墙就可以了。最好选择Y保存所有设置之后就输入PPPOE-START则开始进行拨号。如果成功则显示.connect如果失败则会提示失败原因和失败行号。

                                                   2008年6月13日

                                                            崔适南