通过基于 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公有云平台 -我需要保证企业内部 ...
随机推荐
- THREE.JS + Blender(obj、mtl加载代码)
2016-11-04 09:23:17 THREE.REVISION "81dev" Blender "2.78" 1.加载OBJ.MTL文件 // T ...
- Windows系统下nodejs安装及配置
关于nodejs中文站,眼下活跃度最好的知识站应该是http://www.cnodejs.org/ ,而http://cnodejs.org/则活跃度较低.Express.js是nodejs的一个MV ...
- oracle 使用sql获取数据库表,表的字段
--第一种方法: 查询dba_tab_columns select COLUMN_NAME,DATA_TYPE,DATA_LENGTH from dba_tab_columns where t ...
- js+css实现模态层效果
在做web前端的时候,有些时候会涉及到模态层,在此提供一种实现思路.希望对大家实用.先贴效果吧: 模态层效果 以下说说在写模态层的时候的思路:通过可配置的參数width,height,title以及c ...
- c/c++ 复习基础要点01-const指针、指针函数 函数指针、new/delete与malloc/free区别与联系
1. 引用本身是有指针实现的:引用为只读指针 例子: int d=123; int& e=d; //引用 int * const e=d; //只读指针,e指向d,不可修改e指 ...
- 超长英文(代码)自动换行的样式(CSS)
如何想让一连串文字在显示可以自动换行,而不会把在代码中使用的容器撑开,则在文章的CSS样式处加上以下代码即可: table-layout: fixed; word-wrap:break-word;或者 ...
- Linux 统计代码行数命令
wc -l `find . -name '*.js'` wc -l `find . -regex ".*\.js"`
- 黑马程序员—— Java SE(3)
----<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训 ...
- spark-shell启动集群
使用spark-shell 启动spark集群时的流程简析: spark-shell->spark-submit->spark-class 在sprk-class中根据条件会从不同的入口 ...
- (转)jQuery插件开发模式
要说jQuery 最成功的地方,我认为是它的可扩展性吸引了众多开发者为其开发插件,从而建立起了一个生态系统.这好比大公司们争相做平台一样,得平台者得天下.苹果,微软,谷歌等巨头,都有各自的平台及生态圈 ...