通过基于 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公有云平台 -我需要保证企业内部 ...
随机推荐
- Java高级软件工程师面试考纲
如果要应聘高级开发工程师职务,仅仅懂得Java的基础知识是远远不够的,还必须懂得常用数据结构.算法.网络.操作系统等知识.因此本文不会讲解具体的技术,笔者综合自己应聘各大公司的经历,整理了一份大公司对 ...
- java多个listener监听
java 多个listener 监听方法 在class 名称上一行添加@Listeners 括号中用逗号隔开 @Listeners({com.example.MyListener.class,com. ...
- python ctypes小例子
import time import ctypes import ctypes.wintypes SEE_MASK_NOCLOSEPROCESS = 0x00000040 SEE_MASK_INVOK ...
- Oracle的sql语句中case关键字的用法 & 单双引号的使用
关于sql中单引号和双引号的使用,来一点说明: 1. 查询列的别名如果含有汉字或者特殊字符(如以'_'开头),需要用双引号引起来.而且只能用双引号,单引号是不可以的. 2. 如果想让某列返回固定的值, ...
- PHP设计模式笔记三:三种基本设计模式(工厂模式、单例模式、注册树模式) -- Rango韩老师 http://www.imooc.com/learn/236
一.工厂设计模式 index.php $db = IMooc\Factory::createDatabase(); 使用工厂类的静态方法直接创建一个dababase对象,当类名发生修改时,在工厂里修改 ...
- js推断元素是否隐藏
if( document.getElementById("div").css("display")==='none') if( document.getEl ...
- AVL旋转树
执行插入操作可能出现不平衡的情况,当平衡二叉树.AVL这树是一种自平衡二叉树,使二叉树又一次保持平衡.而且查找.插入和删除操作在平均和最坏情况下时间复杂度都是O(log n) AVL树的旋转一共同拥有 ...
- [计算机组成原理][实验十.R-I-J型指令CPU设计实验总结]
总算解决一大心头之患了,比想象中容易,通宵两夜,刷完了十个实验,这个实验就是最后的了.感慨颇多.特地写篇总结. 想做一件事,就立马去做把.你会发现没那么困难,往往最大的困难,是心里的困难. 培养了HD ...
- VCS仿真生成fsdb文件(Verilog)
VCS仿真生成fsdb文件(Verilog) 一.环境 Linux 平台 csh环境 VCS 64bit Verdi3 二.开始仿真 1. 联合仿真环境配置 a.在testbench中加入如下语句: ...
- 给linux设置grub密码
一.明文加密:vim /etc/grub.conf在hiddemenu下面新增一行,输入:password 密文然后:wq保存退出 在开机出现退数菜单的时候,按任意键,就会出现启动选择菜单,这时下面的 ...