通过基于 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公有云平台 -我需要保证企业内部 ...
随机推荐
- jQuery自定义函数验证邮箱格式
jQuery.fn.checkEmail = function() { // 自定义jQuery方法 var email_val = $(this).val(); reg = /^\w+([-+.]\ ...
- cf492A Vanya and Cubes
A. Vanya and Cubes time limit per test 1 second memory limit per test 256 megabytes input standard i ...
- THINKPHP之控制器
如何新增控制器? 在Lib/Action中新增一个控制器:ProductAction.class.php: <?php class ProductAction extends Action{ ...
- jQuery的ajax jsonp跨域请求
了解:ajax.json.jsonp.“跨域”的关系 要弄清楚以上ajax.json.jsonp概念的关系,我觉得弄清楚ajax是“干什么的”,“怎么实现的”,“有什么问题”,“如果解决存在的问题”等 ...
- android实现计算器功能
设计一个简单的计算器. 第一个Activity的界面. 第二个Activity显示算式和计算结果. 第一个Activity代码: import android.app.Activity; import ...
- LoadRuner性能测试之内存分析方法及步骤(Windows)
1.首先观察Available Mbytes(可用内存),至少要>=1/2的内存空间 2.然后观察Pages/sec值是不是很大 3.再观察Page Faules/sec是不是很大,其值表示 ...
- Dynamics CRM 2016 使用Plug-in Trace Log调试插件
1.写插件 首先,让我们写一个简单的插件来测试新插件跟踪日志功能.请注意,在下面的示例代码中,我们增加ITracingService的一个实例,以及记录有关插件的执行信息记录的一些键值: 2.注册插件 ...
- oracle SQL语句练习MERGE、模糊查询、排序、
Oracle支持的SQL指令可分为数据操作语言语句.数据定义语言语句.事务控制语句.会话控制语句等几种类型:1.数据操作语言语句数据操作语言语句(Data manipulation language, ...
- VS2015 添加DNX SDK
第一次运行VS2015,添加第一个ASP.NET 5程序时会报一个错误“DNX SDK版本 “dnx-clr-win-x86.1.0.0-beta5”无法安装. 解决办法: 打开CMD :输入 @po ...
- POJ 1011 - Sticks DFS+剪枝
POJ 1011 - Sticks 题意: 一把等长的木段被随机砍成 n 条小木条 已知他们各自的长度,问原来这些木段可能的最小长度是多少 分析: 1. 该长度必能被总长整除 ...