您的位置 首页 软件

运用FreeBSD装备根据ADSL的VPN网关+防火墙

我前前后后一共折腾了四天才弄完,真是麻烦死了,不过需要跟大家说明的是其实VPN(PPTP方式)的配置在FreeBSD上面并不困难,大家只需要5分钟就能解决了,其余99%的时间我有一半再跟tun0搏斗,

我前前后后总共折腾了四天才弄完,真是费事死了,不过需求跟咱们阐明的是其
实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 command
ident user-ppp VERSION (built COMPILATIONDATE)

# Ensure that device references the correct serial port
# for your modem. (cuaa0 = COM1, cuaa1 = COM2)
#
set device PPPoE:rl0
set speed sync
set mru 1492
set mtu 1492
set ctsrts off
set 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/ipfw
make -DIPFW2
make install
cd /usr/src/lib/libalias
make -DIPFW2
make install
或许在你/etc/make.conf里边增加
IPFW2=TRUE
然后mak world来晋级你的防火墙
晋级IPFW结束之后,接下来便是修正内核了,从头编译内核需求经过如下进程,首要进入
/sys/i386/conf/目录,里边有两个文件,一个是GENERIC,另一个是LINT,详细的阐明
信息我就不赘述了,我只讲一下我修正内核的进程。
首要
cp GENERIC mykern
修正mykern增加如下的部分:
options NETGRAPH
options NETGRAPH_PPPOE
options NETGRAPH_SOCKET
options NETGRAPH_ETHER
options IPFW2
options IPDIVERT
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100
options IPSTEALTH
options ACCEPT_FILTER_DATA
options ACCEPT_FILTER_HTTP
退出修正器
config mykern
cd ../../compile/mykern
make depend
make
make install
然后从头发动机器内核的更新就现已完结了。
这样IPFW2的装置就现已完结了,咱们先不翻开防火墙,咱们先装备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
然后修正下面的部分
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
set link enable chap
set link keep-alive 10 60
set link mtu 1460
set ipcp yes vjcomp
set ipcp ranges 192.168.1.1/32 192.168.1.50/32
set ipcp dns 192.168.1.3
set ipcp nbns 192.168.1.4
#
# The five lines below enable Microsoft Point-to-Point encryption
# (MPPE) using the ng_mppc( netgraph node type.
#
set bundle enable compression
set ccp yes mppc
set ccp yes mpp-e40
set ccp yes mpp-e128
set ccp yes mpp-stateless

这个是sample里边的默许装备,下面关于需求修正的部分做出阐明
实际上咱们需求修正只需三行,便是下面三行
set ipcp ranges 192.168.1.1/32 192.168.1.50/32
set ipcp dns 192.168.1.3
set ipcp nbns 192.168.1.4
榜首行是设置你的本地VPN网关的地址,假如你是像我相同用NAT来区别内外网的话
这个应该是网关的内网地址,后边的是对方拨入今后将会在内网取得的地址,这个
地址却是没有什么特殊要求,便是首要这个地址需求和内网处于一个网段,不然访
问不了,第二后边能够设置一个掩码,来操控这个地址或许的规模,假如这个地址
被占用了,将会分配一个再限制规模内的地址给客户端,这个规模由/后边的掩
码来操控。
第二行是指定你内网运用的DNS服务器的地址,留意这个将会在用户连入的时分同
内网地址一同被分配给用户
第三行和第二行相似,是指定Netbios服务器的地址,假如内网没有WINS服务器
这行能够不写。最终我还增加了一行指令,再不增加这个指令的时分mpd看起来也是
正常工作的,可是我不太定心仍是加了这行加密指令
set bundle enable encryption
下面咱们还需求略微修正一下mpd.links.sample
pptp:
set link type pptp
set pptp self 1.2.3.4
set pptp enable incoming
set pptp disable originate
上面的部分里边需求修正一下set pptp self 1.2.3.4这一行,这行是指定mpd
的pptp服务器绑定在那个地址上面,假如是咱们现在运用ppp拨叫ADSL的状况,会遇
到网络界面改动,ip地址改动的状况,就不能界说这一句,所以针对咱们的状况,咱们
要去掉这句,其他的咱们就不必改了
当然咱们还要修正一下mpd.secret文件
这个文件界说了拨入用户的用户名和暗码
用户名写在前面,暗码写在后边用引号引起来,就像下面这样
fred fred-pw
当然还能够指定这个用户有必要从那个地址或许网段来拨入,就像下面的比如:
joe foobar 192.168.1.1
bob x34foon 192.168.1.10/24
之后咱们还能够增加一句来默许让mpd履行pptp的这组设置,需求修正装备文件的这个
部分:
default:
load pptp
sample文件里边还有装备多用户登陆的状况下的样本,我就不必在写了,装备是相同的
改完这些之后只需工作mpd -b就能够发动了
因为考虑到安全原因我没有书写发动脚本在开机的时分发动mpd,因为关于防火墙来说
在没有用的时分多开一个端口就多一份风险,可是或许很多人需求在开机的时分主动工作
mpd,下面我仍是供给一个发动脚本给咱们,能够放在/usr/local/etc/rc.d/目录下面
记住要加上履行权限。
#!/bin/sh

PREFIX=/usr/local

case $1 in
start)
if [ -x ${PREFIX}/sbin/mpd -a
-f ${PREFIX}/etc/mpd/mpd.conf ]; then
${PREFIX}/sbin/mpd -b
echo -n ‘ mpd ‘
fi
;;
stop)
killall mpd echo -n ‘ mpd ‘
;;
*)
echo Usage: ‘basename $0’ {start|stop} >2
;;
esac

exit 0

下面咱们要敞开防火墙来测验一下了,咱们敞开防火墙还需求修正一下rc.conf文件
咱们需求增加下列装备
firewall_enable=YES
firewall_type=/etc/ipfw.conf
gateway_enable=YES
natd_enable=YES
natd_interface=rl0
natd_flags=-f /etc/natd.conf
其间两个需求阐明,firewall_type=后边我这儿是指定了一个文件来做定制装备,ipfw
还有其他几种默许的方法可选,例如open,client,close等等。咱们用不到就不说了
无论怎么必定要有以下这句,不然你的网关无法正常工作
gateway_enable=YES
咱们留意到我的转发界面设置的是rl0也便是我的网卡,这在运用ppp的时分是没有问题的,
可是假如用mpd作PPPoE拨号时分无论怎么不可,有必要设置成mpd的创立的ng0设备上。
我开端的主意假如无法把pptp的监听设定在外网界面上的状况下就把端口用natd从外网
转进来,谁知道pptp还需求端口以外的部分进行衔接,所以现在natd基本上是没有什么
效果的。
下面我就给咱们我的/etc/ipfw.conf里边关于怎么让pptp衔接经过的句子
add 40009 allow tcp from me 1723 to any
add 40010 allow tcp from any to me 1723
add 40011 allow gre from me to any
add 40012 allow gre from any to me
只需增加了这四句才能够使得客户端衔接上网关,可是假如只需这四个,客户端连上了是
什么也干不了的,所以还要为客户端设置下面两个规矩才行
add 40007 allow ip from any to 192.168.1.30 keep-state setup
add 40008 allow ip from 192.168.1.30 to any keep-state setup
留意我得装备中192.168.1.30是我分配给客户端得内网地址,假如你的地址界说跟我
不同你需求修正这个地址
因为安全原因,我不能把我完好的装备文件都放出来给咱们了,关于其他的规矩,请咱们
参阅iceblood写的经过FreeBSD同享ADSL上网等文章得防火墙设置或许检查man 8 ipfw
来定制自己的规矩。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/ruanjian/185881.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部