我前前后后一共折腾了四天才弄完,真是麻烦死了,但是需要跟大家说明的是其实VPN(PPTP方式)的配置在FreeBSD上面并不困难,大家只需要5分钟就能解决了,其余99%的时间我有一半再跟tun0搏斗,结果发现我犯了个低级错误,另外一半时间我在跟ipfw搏斗,发现了VPN的连接机制还挺复杂。好了废话不多说了,let's go

我的目的是做一台ADSL拨号网关,这个网关上由MPD作为VPN网关的守护进程,使用PPTP协议作为传输协议,由于这台机器上有samba服务器,所以我无法开放我的任何端口,我必须封锁任何无需的端口。正因为这样花了很长时间研究PPTP协议到底需要通过防火墙上的那些端口和那些协议。配置的目的已告诉大家了,下面是配置的过程。

首先从ppp拨ADSL说起,假如您对于使用ppp连接PPPoE(也就是ADSL使用的连接方式)已很熟悉了,那就能够跳过这一段直接看后面的。使用ppp连接PPPoE是很简单的,FreeBSD在安装好之后您会在/etc/ppp/目录下看到一个叫做ppp.conf的文档,您把这个文档修改成下面的样子就能够连接PPPoE了,文档内容如下:

#default:set log Phase Chat LCP IPCP CCP tun commandident

            #user-ppp VERSION (built COMPILATIONDATE)

            # Ensure that "device" references the correct serial port

            # for your modem. (cuaa0 = COM1, cuaa1 = COM2)

            #set device PPPoE:rl0set speed syncset mru 1492

            #set mtu 1492set ctsrts offset timeout 60

            # 3 minute idle timer (the default)enable dns

            # request DNS info (for resolv.conf)

            #papchap:

            ## edit the next three lines and replace the items in caps with

            # the values which have been assigned by your ISP.

            #set authname

            #username

            #set authkey

            #password

            #set timeout 60

            #set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0

            #add default HISADDR

            # Add a (sticky) default route
第一部分是配置日志的方式和一些默认信息set device PPPoE:后面需要改成您的网卡的驱动,我的是Realtek的8139,所以就是rl0了,下面是配置最大发送/接受单元,PPPoE默认是1492,然后timeout是在您是用auto方式的时候配置的超时时间,超过这个时间将会断线。enable dns是打开从ISP服务端接收分配的DNS,后面papchap部分是配置您的PPPoE帐号信息,最后两句是配置路由信息的,请务必添加。注意标签后面的语句要有缩进,至少缩进一个空格,在帖子里可能看不到,大家要注意!修改过配置文档之后您就能够用ppp -ddial papchap来试验一下,假如连接上了网络就没问题了,在rc.conf文档中添加下面两句就能够在开机的时候启动ppp拨号:

ppp_enable="YES"
ppp_mode=ddial
ppp_nat="YES"
ppp_profile="papchap"


其中ppp_mode=后面是ppp的方式,可选的有auto ddial background等等,具体的信息能够从man ppp中获得。以上就是PPP拨PPPoE的配置,能够看到很的简单。

下面一部分是启动IPFW的防火墙,这个需要修改默认得内核配置,同时使用MPD也需要对内核进行修改,所就在这里同时都修改了。我使用的是升级版本的IPFW,也就是被称作IPFW2的防火墙,在FreeBSD4.x上使用这个防火墙需要重新编译IPFW,这需要您事先安装了FreeBSD4.6以上的源码在您的硬盘上,然后执行下列步骤升级您的IPFW:

cd /usr/src/sbin/ipfwmake -DIPFW2make installcd
/usr/src/lib/libaliasmake -DIPFW2make
install或在您/etc/make.conf里面添加IPFW2=TRUE然后makworld来升级您的防火墙升级IPFW完毕之后,接下来就是修改内核了,重新编译内核需要经过如下步骤,首先进入/sys/i386/conf/目录,里面有两个文档,一个是GENERIC,另一个是LINT,具体的说明信息我就不赘述了,我只讲一下我修改内核的过程。

首先cp GENERIC mykern编辑mykern增加如下的部分:
options NETGRAPH <BR>

            options NETGRAPH_PPPOE<BR>

            options NETGRAPH_SOCKET

            options NETGRAPH_ETHER

            options IPFW2

            options IPDIVERT

            options IPFIREWALL_VERBOSE

            options IPFIREWALL_VERBOSE_LIMIT=100

            options IPSTEALTHoptions ACCEPT_FILTER_DATA

            options ACCEPT_FILTER_HTTP

            退出编辑器

            config mykerncd

            ../../compile/mykernmake

            depend

            make

            make install
后重新启动机器内核的更新就已完成了。这样IPFW2的安装就已完成了,我们先不打开防火墙,我们先配置mpd来建立PPTP的服务器。关于MPD的安装其实很简单,您能够自己手动编译,但我还是推荐大家用ports来安装,因为我实在是想不出什么理由来不用ports安装:)假如您安装了ports到您的硬盘上,您通过下列步骤就能够完成mpd的安装了 :

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!