通过基于 Linux 的软件 VPN 设备连接到 Windows Azure 虚拟网络

摘要
本文章将说明如何通过使用软件
VPN 设备,将本地办公室或站点连接到 Windows Azure
虚拟网络。在构建原型或在构建可以尽快利用云的“开发/测试”工作流时,软件VPN
设备特别有用。事实上,即使在 Windows Azure
虚拟网络团队中,我们也采用这些技术在生产环境中自动测试(TiP,or Test in Production)代码,因为Azure
平台每天都在不断地变化。本文章将说明如何在Linux
上配置
OpenSwan
VPN,以连接到在 Windows Azure
中托管的虚拟网络。
Linux
对于
Linux,我们将使用在 Windows Azure
内部创建的虚拟机连接到托管其他 Linux
虚拟机的虚拟网络,从而说明该连接过程。
![]()
第一步是创建托管 OpenSwan VPN
的新虚拟机。在本示例中,我使用带有特小CPU核的
Ubuntu 14.04 平台映像,但可以使用任何 Lunix
映像,您当然也可以使用自己的 VHD。
![]()
创建
VM后,还要确保端口500
和(都是UDP
端口)在防火墙的允许列表中,因为
IPSec 依赖于这些端口。在门户 UI
中,有两个有趣的项目需要注意,分别是公共虚拟 IP(VIP)
和内部 IP。我们可以使用这些属性为虚拟网络创建本地站点,然后将其连接到新的虚拟网络。记住这些属性后,继续并在门户的“网络”部分下创建新的本地站点。
单击门户中的“网络”选项卡,然后单击“本地网络”部分,开始添加本地网络过程:
![]()
![]()
将公共 IP
添加为 VPN
设备 IP,继续并将内部
IP 用作本地站点。您可以对本地站点使用单个 /32
子网;如要使场景更为逼真,可随意使用更大的子网,尽管在更宽的子网中不可以路由这些IP,除非其与虚拟机处于相同的租户中。您还可以将某些额外网络接口添加到虚拟机,以说明如何使用更宽的子网。单击左侧的新建按钮,添加新的本地网络。
![]()
![]()
在本示例中,我们指定了一个 /24
子网,门户显示我们在此子网中拥有 255
个 IP,但仅托管“本地站点”的
VM 的内部 IP
地址可寻址,因为 Azure
的安全模式不允许数据包进入子网中的其他 VM。但您可以在子网中使用其自己的
IP 将多个网络接口添加到 VM,以模拟更多的
IP。此操作完成后,创建虚拟网络,确保配置虚拟网络,以便与刚刚创建的本地站点通信,
方法是:
选中复选框并保存更新。
![]()
![]()
这些步骤完成后,通过门户创建静态路由(IKEv1)
网关。在创建网关的过程中(几分钟时间),我们可以开始使用正确的设置来配置OpenSwan VPN
服务器,以便连接到Windows Azure
虚拟网络。
![]()
配置Linux VPN
第一步是使用类似 PuTTy
的安全外壳客户端,并连接到您的 Linux
虚拟机。连接完成后,您要实际安装 OpenSwan
软件并进行配置。可通过如下所示的“apt-get”命令(不同的Linux分发可能有所不同-
所以要选择适当的命令)来完成:
sudoapt-get install openswan
如果询问是否将 X509
证书用作认证方法,选择“否”,因为我们要使用共享秘钥来保护
IPSec 通道。如果安装成功,快速检查本地路径说明已安装名为 ipsec
的程序:
whichipsec
/usr/sbin/ipsec
您也可以根据需要从源代码安装 OpenSwan,但需要安装所有必要的构建工具(默认情况下不在
Azure 平台映像上安装)。
要配置 VPN
本身,我们需要编辑以下文件
sudovi /etc/ipsec.conf
您将看到以下内容:
config setup
protostack=netkey
virtual_private=%v4:100.88.124.0/24
oe=off
#
不得设置调试选项来调试配置问题!
# plutodebug / klipsdebug =“all”、“none”或以下组合之一:
# "raw crypt parsing emitting control klips pfkey natt x509 dpdprivate"
#
例如:
# plutodebug="control parsing"
#
此外:仅在开发人员要求时启用 plutodebug
或 klipsdebug
#
#
启用以按照对等机获取日志
# plutoopts="--perpeerlog"
#
#
启用内核转储(可能需要系统更改,例如 ulimit -C)
#
这是abrtd
正常运行的必要条件
#
注意:不正确的 SElinux
策略可能会阻止 pluto
编写内核
dumpdir=/var/run/pluto/
#
#
支持NAT-TRAVERSAL,请参见
README.NAT-Traversal
nat_traversal=yes
#
通过添加 %v4:!a.b.c.0/24
排除用于服务器端的网络
#
美国境内为 T-Mobile,加拿大境内为
Rogers/Fido
plutostderrlog=~/swan.log
include /etc/ipsec.d/*.conf
更改配置使其如上所示,仅需更改为本地站点创建的子网,以匹配为本地站点步骤创建的内容,本示例中为100.88.124.0/24。
如要查看本地 IPSec
日志,请取消 plutodebug
选项的注释。
您需要对连接特定设置做出如下更改:
conn vpn
authby=secret
auto=start
type=tunnel
left=100.88.124.18
leftsubnet=100.88.124.0/24
leftnexthop=%defaultroute
right=137.117.136.XXX
rightsubnet=192.168.0.0/20
ike=3des-sha1-modp1024,aes128-sha1-modp1024
esp=3des-sha1,aes128-sha1
pfs=no
高亮部分表示门户中虚拟网络 UI
提供的两个属性(参见上方的屏幕截图)。第一个条目“right”表示所创建网关的
VIP,另一个条目“rightsubnet”表示创建时用于虚拟网络中的
IP 空间。您还必须在此处配置 crypto
设置,关闭完美转发保密 (PFS)
选项。还要注意到,配置语法将视所用 OpenSwan
版本的不同而各异。有关具体参考,请运行命令:
manipsec.conf
![]()
![]()
![]()
最后一步是从 Azure 门户收集预共享密钥 (PSK),并在 Linux VM 上进行配置。复制 PSK,然后编辑以下文件:
sudo vi /etc/ipsec.secrets
具体的语法如下所示:LocalIP GatewayVIP :PSK ‘’Shared Key‘’
#include/etc/ipsec.d/*.secrets
100.88.124.18 137.117.136.230 : PSK "XXXXXXXXXXXXXXXXXXXX
完成后,运行以下命令,将 PSK
加载到运行的 IPSec
服务,然后重新启动服务,再检查通道是否可用。
1. sudo
ipsec secrets
2. sudo
service ipsec restart
3. sudo
service ipsec status
IPsecrunning – pluto pid: 63791
plutopid 63791
1tunnels up
someeroutes exist
将通道连接到网关后,您将看到
Azure 门户 UI
更新反映了这一情况(UI
中的绿色链接),您可以将虚拟机部署到虚拟网络,开始对网络执行测试。
以下示例将 Linux VM
部署到虚拟网络,说明了从托管 OpenSwan
的计算机中我的本地网络子网 (100.88.124/24)
到 Azure (192.168.0.0/20)
中虚拟网络内部的虚拟机 (192.168.0.4)
的网络连接。
在 Azure
门户 UI
中使用时,您还可以看到数据是如何输入和输出虚拟网络的。
![]()
![]()
![]()
通过基于 Linux 的软件 VPN 设备连接到 Windows Azure 虚拟网络的更多相关文章
- 连接到Windows Azure Point to Site VPN
Windows Azure支持两种模式的VPN接入: Site to Site,接入端需要有固定的公网IP地址,用于连接局域网和Windows Azure的虚拟网络. Point to Site,客户 ...
- 使用 Azure CLI 管理 Azure 虚拟网络和 Linux 虚拟机
Azure 虚拟机使用 Azure 网络进行内部和外部网络通信. 本教程将指导读者部署两个虚拟机,并为这些 VM 配置 Azure 网络. 本教程中的示例假设 VM 将要托管包含数据库后端的 Web ...
- 如何实现Azure虚拟网络中点到站VPN的自动重连
在Windows Azure早期版本中,用户要在某台Azure平台之外的机器与Azure平台内部的机器建立专用连接,可以借助Azure Connect这个功能.当前的Azure版本,已经没有Az ...
- 基于VPN搭建混合云架构需要考虑的网络因素
Joy Qiao from MSFT Wed, Jan 21 2015 8:44 AM 很多用户在搭建混合云架构时,会使用到微软Azure虚拟网络中的 VPN功能,来实现Azure中的虚拟网络与用户 ...
- 跨云应用部署第一步:使用IPSEC VPN连接AWS中国版和Windows Azure中国版
随着公有云的普及,越来越多的客户将关键应用迁移到云端.但是事实证明,没有哪家云服务提供商可以提供100%的SLA,无论是例行维护还是意外中断服务,对于客户的关键应用而言,都会受到不同程度的影响.此外, ...
- 使用Openswan接入Windows Azure Site to Site VPN
Winodows Azure的Site to Site VPN支持主流的防火墙和路由器等接入设备.具体型号和系列请参考下表: VENDOR DEVICE FAMILY MINIMUM OS VERSI ...
- 使用 Puppet 在 Windows Azure 中配备 Linux 和 Windows 环境
发布于 2013-12-11 作者 Ross Gardler 微软开放技术有限公司 (MS Open Tech) 很高兴地宣布发行新的 Windows Azure Puppet 模块.通过这个模 ...
- 运行预构建 Linux 映像的 Windows Azure 虚拟机中的交换空间 – 第 1 部分
本文章由 Azure CAT 团队的 Piyush Ranjan (MSFT) 撰写. 随着基础结构服务(虚拟机和虚拟网络)近期在 Windows Azure 上正式发布,越来越多的企业工作负荷正在向 ...
- Windows Azure Virtual Network (8) 创建Azure Point-to-Site点到站点 VPN
<Windows Azure Platform 系列文章目录> 我们在使用Azure的时候,常常有这样的需求: -我需要将企业内网的主机连接到微软Azure公有云平台 -我需要保证企业内部 ...
随机推荐
- JVM基础和调优(六)
JVM设置过程中的一般的规范 在JVM的设置中,年轻代的设置比较的重要,因为年轻代存储空间分配的比较的块,可以说触发GC的机会比较的大. 默认的情况下:-XX:NewRatio 默认为2 说明:年轻 ...
- Javascript:作用域 学习总结
作用域(scope): 变量与函数的可访问范围,控制着变量与函数的可见性和生命周期 作用域分类: javascript中,变量的作用域分为:全局作用域,局部作用域 局部变量的优先级大于全局变量,或 ...
- Qt Mac 下软件Release 公布dmg
1.首先当然是用Qt Creator.编译一个Release版本号的软件 注意到编译出来的大小非常小,才420KB,由于一些类库还没包括进去的原因.如今还仅仅能在你本地执行,复制到其它Mac电脑就不能 ...
- 找工作笔试面试那些事儿(10)---SQL语句总结
SQL语句中常用关键词及其解释如下: 1)SELECT 将资料从数据库中的表格内选出,两个关键字:从 (FROM) 数据库中的表格内选出 (SELECT).语法为 SELECT "栏位名&q ...
- Dynamics CRM 常用 JS 方法集合
JS部分 拿到字段的值 var value= Xrm.Page.getAttribute("attributename").getValue(); Xrm.Page.getAttr ...
- 验证docker的Redis镜像也存在未授权访问漏洞
看到了这篇老外的博客:Over 30% of Official Images in Docker Hub Contain High Priority Security Vulnerabilities于 ...
- C#基础:C#4.0权威指南 杂笔一
1.c#中数组初始化的几种不同用法 int[] name = new int[NUM]; int[] name = {1, 2, 3, 4, 5, 6}; int[] ...
- js调用百度地图搜索功能
引用百度jsApi <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&a ...
- 学习okhttp wiki--Connections.
Connections 尽管你只提供了URL,OkHttp使用三种类型来创建它和你的web服务器的连接:URL,地址(Address)和路由(Route). URLs URLs (例如 https:/ ...
- hdu Phone List
Problem Description Given a list of phone numbers, determine if it is consistent in the sense that n ...