IPFILTER 使用FreeBSD配置基于ADSL的VPN防火墙网关

操作系统:FreeBSD5.1
IPFilter: v3.4.31
MPD:v3.13

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

首先从ppp拨ADSL说起,如果您对于使用ppp连接PPPoE(也就是ADSL使用的连接方式)已经非常熟悉了,那就可以跳过这一段直接看后面的 。

使用ppp连接PPPoE是非常简单的,FreeBSD在安装好之后你会在/etc/ppp/目录下看到一个叫做ppp.conf的文件,你把这个文件修改成下面的样子就可以连接PPPoE了,文件内容如下:
default:
# PPP over Ethernet
set device PPPoE:rl0 # rl0是联接ADSL的设备号
set speed sync
set mru 1492
set mtu 1492
set ctsrts off
# monitor line quality
enable lqr
# log just a bit
set log phase tun
# insert default route upon connection
add default HISADDR
# download /etc/resolv.conf
enable dns
set authname xxxxxxxx # xxxxxxxx是ADSL账号
set authkey ******* #*******是ADSL密码
第一部分是设置日志的方式和一些默认信息set device PPPoE:后面需要改成你的网卡的驱动,我的是Realtek的8139,所以就是rl0了,下面是设置最大发送/接受单元,PPPoE默认是1492 。enable dns是打开从ISP服务端接收分配的DNS,后面是设置你的PPPoE帐号信息,请务必添加 。

注意:标签后面的语句要有缩进,至少缩进一个空格,在帖子里可能看不到,大家要注意!

修改过配置文件之后你就可以用ppp -ddial来试验一下,如果连接上了网络就没问题了,在/etc/rc.local文件中添加下面一句就可以在开机的时候启动ppp拨号:
/usr/sbin/ppp –ddial
其中ppp的方式,可选的有auto ddial background等等,具体的信息可以从man ppp中获得 。以上就是PPP拨PPPoE的配置,可以看到非常的简单 。

下面一部分是启动IPFILTER的防火墙,这个需要修改默认得内核设置,同时使用MPD也需要对内核进行修改,所就在这里同时都修改了 。重新编译内核需要经过如下步骤,首先进入/usr/src/sys/i386/conf/目录,里面有一个GENERIC,具体的说明信息我就不赘述了,我只讲一下我修改内核的过程 。
首先
cp GENERIC ipfilter
编辑mykern增加如下的部分:
options NETGRAPH
options NETGRAPH_PPPOE
options NETGRAPH_SOCKET
options NETGRAPH_ETHER
options IPSTEALTH
options IPFILTER
options IPFILTER_LOG
options IPFILTER_DEFAULT_BLOCK
退出编辑器
config ipfilter
cd ../compile/ipfilter
make depend
make
make install
然后重新启动机器内核的更新就已经完成了 。

这样IPFILTER的安装就已经完成了,我们先不打开防火墙,我们先配置mpd来建立PPTP的服务器 。关于MPD的安装其实非常简单,你可以自己手动编译,但我还是推荐大家用ports来安装,因为我实在是想不出什么理由来不用ports安装:)如果你安装了ports到你的硬盘上,你通过下列步骤就可以完成mpd的安装了
cd /usr/ports/net/mpd
make install
make clean
安装完毕之后,ports会自动创建/usr/local/etc/mpd目录并把配置文件的样本存放在这个目录里面,可以通过修改已有的配置文件样本来完成对mpd的配置,以mpd.conf.sample为例,首先cp mpd.conf.sample mpd.conf然后修改下面的两个部分:
default:
load pptp


pptp:
new -i ng0 pptp pptp
set iface disable on-demand
set iface enable proxy-arp
set iface idle 1800
set bundle enable multilink
set link yes acfcomp protocomp
set link no pap chap

推荐阅读