通过基于 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公有云平台 -我需要保证企业内部 ...
随机推荐
- MVC4.0系统开发新手历程(三)---数据导入计算
数据导入计算 数据的重要意义就不需要我多说了吧,本项目中的数据来源是来自荆艺系统(熟悉物流报关的朋友应该知道)导出的一张Excel,包含了一段时间内整个公司所有销售的全部记录,保密级别那是杠杠的, ...
- php 实现购物车
<?php class Cart{ public function Cart() { if(!isset($_SESSION['cart'])){ ...
- java 自定义鼠标图标
由于截图截不了,所以看不了图.源码如下: import java.awt.Cursor; import java.awt.Image; import java.awt.Point; import ja ...
- ipython with ubuntu
在Linux环境下,其实IDE环境配置比较容易配.所以建议用linux做开发. 首选启动终端:Ctrl+Alt+T sudo apt-get update sudo apt-get install p ...
- 软件project(五)——可行性研究
一.目的 用最小的代价高效率的确定问题是否可以解决. 不是去解决这个问题,而是确定问题是否值得去解决.进行可行性研究简化了系统分析和系统设计的过程. 二.任务 (1)进一步分析问题定义. (2)分析员 ...
- unbantu相关笔记
很多项目使用的系统是centos或者redhat,最近有一个项目使用的系统竟然是阿里云unbantu,不知道他们负责人怎么想的,明明有centos,非要用unbantu.抱怨到此,unbantu的学习 ...
- mysqldump备份原理
现网中数据库运维时,要经常对数据库做热备.为保证恢复时数据的完整性与一致性, 一种方法是在备份之前锁表,但锁表会影响正在运行的业务. mysqldump是当前MySQL中最常用的备份工具,通过mysq ...
- MySql 事务+异常处理+异常抛出
-- 测试用表 -- innodb 支持事务 CREATE TABLE `tb_test` ( `id` ) NOT NULL AUTO_INCREMENT, `name` ) NOT NULL, P ...
- WebApi2官网学习记录---Cookie
Cookie的几个参数: Domain.Path.Expires.Max-Age 如果Expires与Max-Age都存在,Max-Age优先级高,如果都没有设置cookie会在会话结束后删除cook ...
- linux make
linux make file 以下是转载 感谢原作者 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和 ...