在Azure上打造通往 Door of freedom的服务器之L2TP VPN服务器部署

最近发现GFW又升级了,而使用google是我们IT人员必须的工具,没有办法只有自己动手部署squid服务器,结果发现squid不是很稳定,经常说出现一会能打开,一会又打不开的情况(具体原因未知),为避免麻烦干脆在Azure上部署了一套L2TP VPN服务器,在这里将部署过程写下,希望对各位博友有帮助;

L2TP是常用的一种point-site的VPN。而目前在Azure上的VPN Gateway只支持IPsec和SSTP两种。如果客户需要L2TP服务器,需要自己在VM中搭建。本文将介绍如何在Azure上搭建基于CentOS65的L2TP服务器。

情况说明:我这里采用的是CentOS6.8操作系统,其它操作系统的操作方法大概相同;

1、购买Azure VM虚拟机

注意:不要买错了哦,NO Made in China,是.com,不是.cn

2、安装L2TP服务器

1)配置yum源
vi /etc/yum.repos.d/epel.repo
[epel]
name=epel
baseurl=http://mirrors.sohu.com/fedora-epel/6/$basearch
enabled=1
gpgcheck=0
2)yum安装PPP等
yum install -y ppp iptables make gcc gmp-devel xmlto bison flex xmlto libpcap-devel lsof
3)安装IPSEC
wget https://download.openswan.org/openswan/openswan-2.6.49.tar.gz --no-check-certificate
tar vxf openswan-2.6.49.tar.gz
cd openswan-2.6.49
make programs install

注:如果在安装之后发现无法启动ipsec服务,可以yum install -y ipsec,它会安装一些依懒上去,就可以正常启动对应服务了;

4)安装xl2tpd
yum install -y xl2tpd

3、配置相关服务

1)配置IPSEC
vi /etc/ipsec.conf
conn L2TP-PSK-NAT
  rightsubnet=vhost:%priv
  also=L2TP-PSK-noNAT
conn L2TP-PSK-noNAT
  authby=secret
  pfs=no
  auto=add
  keyingtries=3
  rekey=no
  ikelifetime=8h
  keylife=1h
  type=transport
  left=100.104.172.10 #这里的IP地址为Azure VM的内网地址;
  leftprotoport=17/1701
  right=%any
  rightprotoport=17/%any
  dpddelay=30
  dpdtimeout=120
  dpdaction=clear
2)配置IPSEC的Security(配置共享密钥)
vi /etc/ipsec.secrets
%any %any: PSK "www.obayun.com" #引号中间为密钥;
或者写成
100.104.172.10 %any: PSK "www.obayun.com"  #其中100.104.172.10 为Azure VM的内网地址;
3)配置sysctl.conf文件
vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.default.rp_filter = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.log_martians = 0
net.ipv4.conf.default.log_martians = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.icmp_ignore_bogus_error_responses = 1

通过下面的命令生效配置:

#配置内核生效NAT转发

sysctl -p
#启动IPSEC服务
service ipsec start
ipsec verify #检测IPSEC是否正常
Verifying installed system and configuration files
Version check and ipsec on-path                         [OK]
Libreswan 3.15 (netkey) on 2.6.32-642.6.2.el6.x86_64
Checking for IPsec support in kernel                    [OK]
NETKEY: Testing XFRM related proc values
         ICMP default/send_redirects                    [OK]
         ICMP default/accept_redirects                  [OK]
         XFRM larval drop                               [OK]
Pluto ipsec.conf syntax                                 [OK]
Hardware random device                                  [N/A]
Checking rp_filter                                      [ENABLED]
/proc/sys/net/ipv4/conf/lo/rp_filter                   [ENABLED]
/proc/sys/net/ipv4/conf/eth0/rp_filter                 [ENABLED]
  rp_filter is not fully aware of IPsec and should be disabled
Checking that pluto is running                          [OK]
Pluto listening for IKE on udp 500                     [OK]
Pluto listening for IKE/NAT-T on udp 4500              [OK]
Pluto ipsec.secret syntax                              [OK]
Checking ‘ip‘ command                                   [OK]
Checking ‘iptables‘ command                             [OK]
Checking ‘prelink‘ command does not interfere with FIPS [PRESENT]
Checking for obsolete ipsec.conf options                [OK]
Opportunistic Encryption                                [DISABLED]
4)配置xl2tpd
[global]
ipsec saref = no
[lns default]
#设置建立连接后,分配给客户端的ip地址
ip range = 192.168.1.128-192.168.1.254
local ip = 192.168.1.99
require chap = yes
refuse pap = yes
require authentication = yes
name = LinuxVPNserver
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes
5)配置ppp的用户名密码
vi /etc/ppp/chap-secrets
obayun * "www.obayun.com " * #前面为用户名,引号中间为密码;
6)配置Win7连接支持[可略过...]
vi /etc/ppp/options.xl2tpd
require-mschap-v2
7)配置iptables
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
iptables -I FORWARD -s 192.168.1.0/24 -j ACCEPT
iptables -I FORWARD -d 192.168.1.0/24 -j ACCEPT
service iptables save
8)启动服务
service ipsec restart
service xl2tpd restart
service iptables restart
chkconfig xl2tpd on
chkconfig iptables on
chkconfig ipsec on

4、配置终结点(配置NAT)

这个名字我怎么听都不对,我更愿意叫它NAT或防火墙,感觉更容易理解,作用就是将你的虚拟机端口映射到公网;

5、客户端配置

1)修改注册表

这里以Windows7为例,新建1.reg,将对应内容复制至此文件,双击导入注册表,然后重启电脑即可;

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent]
"AssumeUDPEncapsulationContextOnSendRule"=dword:00000002
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\Parameters]
"ProhibitIpSec"=dword:00000000
2)配置预设密钥

配置VPN客户端,设置对应的预设密钥为:前面服务器端配置的密钥即可;

3)测试连接

从此通往自由之门的路已经打开....

时间: 2024-08-02 11:00:50

在Azure上打造通往 Door of freedom的服务器之L2TP VPN服务器部署的相关文章

从Exchange 通往Office 365系列(三)Exchange CAS服务器部署及前期准备

下边开始我们先将本地的Exchange部署好,Exchange的部署如果是一个比较干净的单域环境的话是非常简单的,我这里会部署2台CAS服务器来做NLB,2台MailBox服务器来做DAG,另外再加一台边缘服务器,反向代理则由TMG担任,根据安装的角色不同,我们之前预先做的准备是不同的,这是需要考虑到的,今天我们先来部署两台CAS服务器.想了解详细架构的可以参考拓扑图 http://mxyit.blog.51cto.com/4308871/1547856 系统要求 首先并不是什么服务器都能安装E

Azure上七层负载均衡APP Gateway

Azure的SLB和ILB是最常用的4层负载均衡工具.但有些场景是7层的负载均衡,SLB和ILB就无能为力了. Azure上已经推出了APP Gateway的服务,就是7层负载均衡的负载均衡器. 如上图,APP Gateway实现用户HTTPS网站的SSL Offload,还可以实现多个VM的负载均衡.而且可以实现Cookie Affinity功能,这也是7层负载均衡的一种功能. 通过App Gateway.SLB.Traffic Manager综合使用,可以实现对应用系统的高扩展性: 可以通过

在 Azure 上使用 Docker运行 Mono

Docker 是最近相当热门的一个名词,它是一个基于 Linux Container 的轻量化的虚拟技术,而微软也相当积极与 Docker 合作,在 Azure 上支持这个火热的技术,并且提供简单的方式来建立 Docker Host,本文将会介绍如何在 Azure 上使用 Docker. Docker 简介 Docker 是一个开源的项目,主要的特点是能将应用程序包装在一个 LXC (Linux Container) 容器中,当这些应用被包装进容器后,部署.迁移都变得更为简单.与传统的虚拟化技术

腾讯副总裁姚星:腾讯AI Lab将致力打造通往AGI之路

背景:3月15日,腾讯AI Lab第二届学术论坛在深圳举行,聚焦人工智能在医疗.游戏.多媒体内容.人机交互等四大领域的跨界研究与应用.全球30位顶级AI专家出席,对多项前沿研究成果进行了深入探讨与交流. 今天,腾讯副总裁姚星在腾讯AI Lab主办的第二届学术论坛上表示,AI Lab未来将致力于发展通用人工智能(AGI, Artificial General Intelligence),通过攻克通用人工智能这一难题,使AI技术和应用能够克服目前仍处于早期阶段的各种局限. 姚星表示,当前人工智能的发

在Azure上创建MYSQL服务

Azure和所有的云服务一样,也提供了MYSQL数据库,在Azure中叫mysql database on azure.下面我们来一起在Azure上创建一个Mysql数据库. 在新建--> 数据服务,Mysql database on azure当中选择,快速创建,并填写数据库的响应信息. 1.png 注意:名称只能是全小写. 创建成功后,可以到仪表盘当中看到数据库的响应信息. 2.png 如果需要,可以在帐户 Tab当中添加所需要的帐户,帐户格式为databasename%username,

Azure上A/D系列虚拟机到DS系列迁移(1)

有一些用户在刚开始的时候创建了A7,D14等虚拟机来跑一些IO要求比较高的应用,比如Oracle数据库,MySQL数据库,等到用户量上来之后,性能不够,需要升级数据磁盘到SSD固态硬盘,但是问题是: Azure的固态硬盘SSD磁盘属于高级存储Premium Storage A系列,D系列的虚拟机无法使用高级存储作为数据磁盘 只有DS,DSv2,GS系列的虚拟机才可以使用SSD作为数据磁盘 A系列,D系列虚拟机无法直接升级为DS/GS系列 GS系列暂时在中国没有上线 那么在这种情况下,除了创建高级

Azure上批量创建OS Disk大于30G的Linux VM

Azure上VM的OS盘的大小在创建时是固定的.Windows是127G,Linux是30G.如果需要批量创建的VM的OS Disk有更大的容量.可以考虑用下面的方法实现. 1 创建一台有Data-disk的CentOS VM,对其进行客户化,安装软件,挂载磁盘 2 扩大OS Disk的容量 3 在VM内resize OS Disk的容量 4 把这台VM捕获成Azure的Image 5 通过这个Image批量创建VM.创建VM的OS Disk容量是刚刚调整的容量 本文将采用Azure CLI 2

远程调试 Azure 上的 Website

让我们先检查一下使用的 Azure SDK 版本和 Visual Studio 版本.根据MSDN的介绍,Azure 的远程调试功能是在 Azure SDK 2.2 中加入的,所以请确保您的机器上安装了2.2或者是更新的 Azure SDK. 关于 Visual Studio 的版本问题,MSDN上的描述也很有趣.大意是使用 Visual Studio 2012 已经可以远程调试 Azure 上的 Website 了,但是 Visual Studio 2013 又对此做了很多的提升.个人理解最好

在Azure上实现Linux Server故障转移

要充分利用公有云的弹性扩展和高可用, 首先要在应用系统层面支持横向扩展(scale out),这个说起来很容易,或者说对新开发的应用系统而言已经成为标配.但是对已有的.老旧的应用系统来说,这就比较困难了,不是每个应用系统都能实现/支持横向扩展的.从客户的角度来说,基本上很难接受为了把应用系统迁移到公有云上而去额外投入修改应用系统代码.虽然我们都心知肚明,本质上这是在“偿还技术债”,修改应用系统代码也是为了更好地利用公有云的优势... 对于应用系统的横向扩展而言,“状态”是最大的拦路虎,要支持横向