VPN How-To
VPN 是 Virtual Private Network 的缩写,意思是虚拟私有网络,也就是在公开的网络架构上,虚拟一个私有的网络。这个虚拟的网络架构具有和真正私有网络一样的安全性、管理便利性及效能。VPN 的目的是用来取代原本专线式的私有广域网络,以更符合成本效益的方式来达成相同的目的。
举例而言,如果您有二个分公司位于不同的城市,每个分公司内部都有自己的私有内部网络,而二个公司的内部网络原本是无法连接使用,除非建立一条专线,以连接二个公司的网域。然而,若改用 VPN 的方式,我们可以使用现有的因特网架构,在二个公司分别架设 VPN 服务器,则二个不同城市的公司内部网络就可以连接起来。另外,我们也可以从家里使用 Windows VPN 拨号联机到公司内部网络中。
和传统的专线式私有网络相比,由于 VPN 使用现成低廉的网络架构,所以成本上便宜许多,而且日后不论是要进行线路变更或架构更动也比较容易。本文中,我们将介绍如何使用 FreeBSD 建立 VPN Server,让使用者可以从 MS Windows 上使用 VPN 拨路联机到公司内部网络。
们使用 poptop 这个软件来建立 PPTP 的 VPN 联机,PPTP 是 Windows 所使用的 VPN。我们在 FreeBSD 上建立 VPN 之后,使用者可以自远程使用 Windows 经由 Internet 使用 VPN 拨号连到公司的内部区网。
基本架构如下:
我们假设公司内部网络 IP 为 192.168.x.x,而 FreeBSD 这台 NAT Server 上,我们另外安装了 poptop 这套 VPN 软件。
步骤一:
请先确认在 Kernel 中有下列这行设定:
# 如果您使用的是 FreeBSD 4.x pseudo-device tun # Packet tunnel. # 如果您使用的是 FreeBSD 5.x device tun # Packet tunnel. |
步骤二:
接着我们要在 FreeBSD 的 NAT server 上安装 ppptop,请使用下列指令安装:
# cd /usr/ports/net/poptop # make install clean
步骤三:
请在 /usr/local/etc/ 新增一个 pptpd.conf,并编辑内容如下:
# 表示我们使用的 ppp 设定档位罝 option /etc/ppp/ppp.conf # 表示要打开除错 (debug) 模式 debug # 如果您有多个对外的 IP,但只要接受从其中一个 IP 进来的联机, # 则在下列这一行中设定。 ##listen 208.212.80.82 # NAT server 所使用的区网 IP localip 172.16.1.1 # 要给远程的 IP,范围是 172.16.0.1 ~ 172.16.0.254 remoteip 172.16.0.1-254 # 设定存放 pid file 的位置 pidfile /var/run/pptpd.pid |
步骤四:
接着我们要编辑 PPP 所使用的设定档,请先将原本的 /etc/ppp/ppp.conf 更名备份起来,我们使用文书编辑软件来新增一个新的 ppp.conf,内容如下:
loop: set timeout 0 set log phase chat connect lcp ipcp command set device localhost:pptp set dial set login # Server (local) IP address, Range for Clients, and Netmask set ifaddr 172.16.1.1 172.16.0.1-172.16.0.254 255.255.0.0 set server /tmp/loop "" 0177 loop-in: set timeout 0 set log phase lcp ipcp command allow mode direct pptp: load loop enable chap enable MSCHAPv2 disable deflate pred1 deny deflate pred1 set mppe 128 stateless enable MPPE accept MPPE enable chap81 disable pap enable proxy accept dns # DNS Servers to assign client set dns 192.168.1.1 set device !/etc/ppp/secure |
步骤五:
在使用者从 Windows 端使用 VPN 拨号时,我们在 ppp.conf 中设定了所要使用的装置设定文件为 /etc/ppp/secure,这个档是一个执行档,我们使用 shell script 设定执行 ppp 这个指令。请新增一个文字文件 /etc/ppp/secure,内容如下:
#!/bin/sh |
接下来必须使用下列指令将该档案设为可执行:
# chmod 755 /etc/ppp/secure
步骤六:
然后我们要新增一个文字文件 /etc/ppp/ppp.secret 存放使用者数据及密码,其格式为 username password:
alex Saxophone bill Pwanuts john mypasswd |
由于这个档案内容包含了 password,所以我们必须将它设为只有 root 可以读取:
# chmod 660 /etc/ppp/ppp.secret
步骤七:
现在我们可以启动 VPN 服务了:
# cd /usr/local/etc/rc.d # cp pptpd.sh.sample pptpd.sh # /usr/local/etc/rc.d/pptpd.sh start
步骤八:
在 Windows 端的设定方面,请在控制台的网络联机中建立一个新的网络联机:
下图中,我们选第二个选项,以建立 VPN 联机。
依照画面中的指示,我们选择建立一个虚拟私人网络联机:
请您为这个联机命名:
如果您使用 ADSL 或 modem,在使用 internet 之前必须先拨号联机,您可以在这里选择当使用 VPN 时先自动拨接,或者您可以可选择不要拨接起始联机,只要您在使用 VPN 时先将计算机连上 Internet 即可。
接着请输入 VPN 服务器的对外 IP,您可以可以输入 domain name。
完成后,会自动跳出一个拨号窗口,您也可以在控制台中的网络联机中找到您新增
的VPN 联机。在下图出现时,请选择内容:
接着请选择[安全性] 的卷标,在安全性选项中,我们选择[进阶] -> [设定]:
进入进阶设定后,请确认您的设定是否为下图所示:
都设定好之后,请按确定回到下列画面。接着输入账号及密码后就可以进行拨号了。在开始使用VPN 拨号前,如果您使用的是拨接式的ADSL 或Modem,您必须先将建立ADSL 联机,才可以进入VPN 拨号喔。