科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航



ZDNet>网络频道>ZD评测>使用OpenSWAN设置VPN服务器

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

如果您想设置VPN,你没有必要购买昂贵的VPN设备,或者Windows Server 2003。下面我将告诉你如何使用OpenSWAN设置基于Linux的VPN。

来源: 2007年05月28日

关键字:Linux VPN

如果您想设置VPN,你没有必要购买昂贵的VPN设备,或者Windows Server 2003。下面我将告诉你如何使用OpenSWAN设置基于Linux的VPN。

Linux几乎可以成为任何你打算为机构内用户提供的任何网络服务的平台。您可以用它来实现文件和打印机共享,或者用做网络服务器等等。

企业中最常用的网络服务就移动用户的远程访问。Linux能够满足类似的任何需求;你所要做的只是使用OpenSWAN建立VPN服务器。以下是它的工作原理。

什么是OpenSWAN?

OpenSWAN是一种用于Linux操作系统的IPSec开源运用; 它是一种FreeS/WAN项目的代码分叉,最初由一群在此类项目策略中遇到挫折的开发人员所发明。OpenSWAN 毫无疑问是最容易使用的Linux VPN解决方案;不过这并不是说其他的解决方案就象噩梦一样可怕。还好,这篇文章概括的介绍了一个非常简单的设置和运行基于Linux的VPN服务器的方法。

安装OpenSWAN

尽管我经常推荐您用自己喜欢的方法进行安装,但是我相信从RPM进行安装是最好的选择,因为RPM带有将要进行安装的系统所需要的补丁。注:在Fedora Core 5及以后版本中,你无需为l2tp内核打补丁。下载以下软件:

◆OpenSWAN
◆OpenSWAN Docs
◆l2tpd
◆l2tpd Legacy PTY 补丁
◆l2tpd SysV PTY 补丁
◆l2tpd 启动文件

创建一个新的目录(我们称其为vpnsource)并将所有下载的文件放在这个目录下。在你开始安装文件之前,请先确认之前没有安装过OpenSWAN。执行以下命令:

rpm -qa|grep openswan

如果上面的命令执行以后有所反馈,那么就没有安装过OpenSWAN。然后运行以下命令:

rpm -qa|grep ppp

以确保系统中安装有PPP。几乎所有的发行版中都安装有完整的PPP,因此这应该没有什么问题。

如果您对OpenSWAN进行的RPM询问返回信息说您已经安装了OpenSWAN,那么需要删除它。你可以通过以下命令完成:

rpm -e openswan

现在我们将开始安装软件包。在保存文件的目录下,运行以下命令:

rpm -ivhopenswan-XXX.rpm (where XXX is the release number)
rpm -ivhopenswan-doc-XXX.rpm (where XXX is the release number)

OpenSWAN的安装中伴随着一个简单的IPSec配置文件。我们将使用我们自己的信息对其进行覆盖,因此需要用以下命令首先进行备份:

cp /etc/ipsec.conf /etc/ipsec.conf_OLD

现在在你惯用的文本编辑器中打开/etc/ipsec.conf 文件,删除所有信息然后贴入以下代码:

version 2.0
config setup
     interfaces=%defaultroute
     klipsdebug=none
     plutodebug=none
     overridemtu=1410
     nat_traversal=yes
     virtual_private=%v4:10.0.0.0/8,%v4:172.16.0.0/12,%v4:192.168.0.0/16
conn %default
     keyingtries=3
     compress=yes
     disablearrivalcheck=no
     authby=secret
     type=tunnel
     keyexchange=ike
ikelifetime=240m
     keylife=60m
conn roadwarrior-net
     leftsubnet=192.168.0.0/16
     also=roadwarrior
connroadwarrior-all
     leftsubnet=0.0.0.0/0
     also=roadwarrior
conn roadwarrior-l2tp
     leftprotoport=17/0
     rightprotoport=17/1701
     also=roadwarrior
conn roadwarrior-l2tp-updatedwin
     leftprotoport=17/1701
     rightprotoport=17/1701
     also=roadwarrior
connroadwarrior
     pfs=no
     left=XXX.XXX.XXX.XXX
     leftnexthop=YYY.YYY.YYY.YYY
     right=%any
     rightsubnet=vhost:%no,%priv
     auto=add
#Disable Opportunistic Encryption
include /etc/ipsec.d/examples/no_oe.conf

备注:This configuration file was cobbled together from various open sources. (这一过程中不会造成任何伤害)。使用外部IP地址替换XXX.XXX.XXX.XXX;同样,用默认网关地址替代YYY.YYY.YYY.YYY。

现在,打开/etc/ipsec.secrets 然后加入以下命令行:

150.150.150.150 %any: PSK "this_is_your_psk_key_phrase"将150.150.150.150 变更为外部IP地址。

如果您想在互联网上的任何地址访问网络,保持%any的完整。出于安全原因,可以考虑列出进行连接的设备的地址。

确保PSK密钥长度足够。这是串用户在进行访问时必须要输入的;越长越安全。

安装l2tp

如我前面提过的,如果使用Fedora Core 5或以上版本,您就必须为l2tp内核打补丁。你所要做的,就是运行以下命令:

yum install l2tpd

如果你从源文件中安装l2tp,你将需要下栽l2tp源文件,并保存在/usr/local/src.。在那之后,运行以下命令:

cd /usr/local/src
tar zxf l2tpd-0.69.tar.gz
mv l2tpd-0.69.sysv.patch l2tpd-0.69/
mv l2tpd /etc/rc.d/init.d/
cd l2tpd-0.69
patch < l2tpd-0.69.sysv.patch
make
cp l2tpd /usr/sbin
chmod 755 /usr/sbin/l2tpd

l2tp应该安装完毕。

在进继续下一步前,最好注意一下l2tp的启动环境,需要用到以下命令:

chmod 755 /etc/rc.d/init.d/l2tpd
chkconfig --add l2tpd
chkconfig l2tpd on

现在该配置l2tp。l2tp的配置文件位于/etc/l2tp.。如果安装过程中没有自动生成这个目录(应该会自动创建的),你可以自行创建。

打开/etc/l2tp/l2tp.conf 然后加入以下命令:

[global]
port = 1701
[lns default]
ip range = 192.168.1.101-192.168.1.254
local ip = 192.168.1.100
require chap = yes
refuse pap = yes
require authentication = yes
name = LinuxVPN
ppp debug = yes
pppoptfile = /etc/ppp/options.l2tpd
length bit = yes

ip range界定的是建立连接时将提供给客户的IP地址的范围。local ip 是服务器地址。可以对这些命令行进行配置以适合您的网络配置。

PPP 配置

VPN设置基本完成,但还需要配置PPP,因为l2tp将会通过PPP与服务器建立渠道。要对l2tpd进行培植,我们将/etc/ppp/options.l2tpd做为pppoptfile (PPP选项文件)进行编辑。创建这个文件,并帖入以下命令:

ipcp-accept-local
ipcp-accept-remote
ms-dns 192.168.1.2
ms-wins 192.168.1.3
noccp
auth
crtscts
idle 1800
mtu 1410
mru 1410
nodefaultroute
debug
lock
proxyarp
connect-delay 5000
silent

注: 将ms-dns 改为您的DNS服务器,将ms-wins改为您的WINS服务器(如果使用了WINS服务器)。

现在来看认证文件:在PPP认证中将使用CHAP。打开/etc/ppp/chap-secrets进行配置。文件的格式如下:

Client     server     secret     IP addresses

以下是一个例子:

# Secrets for authentication using CHAP
# client     server     secret         IP addresses
username     *          "password"     192.168.1.0/24
*            username   "password"     192.168.1.0/24

对于每一个用户名,您将需要两条配置命令,因为这是一个双向认证过程。一行进行客户端到服务器的认证;

另外一行进行服务器到客户端的认证。两次认证中用到的IP地址和密码应该相同。IP地址配置将在为客户提供的IP地址范围之内,所以请确认配置正确。

进行启动

启动命令首先是l2tp,然后是OpenSWAN的l2tp。首先,运行以下命令:

/etc/rc.d/init.d/l2tpd start

您应该不会收到任何报错信息。

下一步,用以下命令启动OpenSWAN:

/etc/rc.d/init.d/ipsec start

如果有错则会在/var/log/messages 和 /var/log/secure.中生成报告。

现在OpenSWAN和l2tp已经启动运行,您将需要对防火墙进行配置以允许信息包能从外部界面进入内部。为此,需要启动Packet Forwarding(信息包推进)的功能,打开/etc/sysctl.conf 并将net.ipv4.ip_forward = 0 更换为net.ipv4.ip_forward = 1。

确保UDP500和4500以及TCP 4500端口都已放开。如果不这样,您的VPN将不允许信息通过。

如果您使用iptables 防火墙,请将以下规则添加到/etc/sysconfig/iptables 文件:

-A RH-Firewall-1-INPUT -ippp+ -j ACCEPT
-A RH-Firewall-1-INPUT -i eth1 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 500 -j
ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 4500 -j
ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 4500 -j
ACCEPT

客户端配置

我假设大部分本文读者都知道如何设置Windows客户端以连接VPN。对建立连接的唯一忠告就是请记住在Windows VPN配置的IPSec设置中所使用的PSK字符串。确保从Type Of VPN设置中选择L2TP IPSec VPN 。最后,到TCP/IP设置| 高级设置 | 常规下解开Use Default Gateway On Remote Network(在远程网络上使用默认网关)的选项。方便,便宜和可靠的VPN服务现在已经唾手可得。

结语

您可以采用简单但昂贵的微软解决方案,或者复杂但是经济的OpenSWAN解决方案。无论采用哪种方法,您都会面临挑战。因此,在您给IT部门批下辛苦赚来的预算之前,应该给OpenSWAN一个机会。开始您将额外花费一些时间,但是如果您不再需要照看您的VPN服务器,就是值得的。

(责任编辑:陈毅东 

推广二维码
邮件订阅

如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

重磅专题