什么是VPN?看运维专家聊聊VPN的那些事儿
副标题[/!--empirenews.page--]
《什么是VPN?看运维专家聊聊VPN的那些事儿》要点: VPN对各位来说肯定是非常熟悉的,比如在家里加密访问公司后台,或者在特殊场景做权限控制,还有就是可以让移动设备拨vpn之后利用tc做弱网模拟,或者是在国内访问google服务等,不过听说google学术已经开始重返中国,以后可以在国内直接访问到了. VPN技术可以做的远不止如此,今天我们来随便聊聊VPN身边的那些事情. 一、概述我们这里说的VPN主要是关于企业应用常见相关,不涉及到非法跨网. VPN有很多种,比如Linux上最常用的pptp类型的vpn,稍微复杂点的openvpn,还有学cisco时候实验用的EASY VPN,还有些看起来高大上的Juniper VPN. 其实远远不止这些,在实际环境下如果要兼容各个网络运营商和终端设备的话,就非常推荐SoftEtherVPN这个vpn盒子了. 下面来挑点东西和大家分享下. 二、VPN实现2.1 GRE隧道 这个gre隧道是Linux上一个最简单的”vpn”,远远比pptp简单,但是并不那么出名,因为他不直接和用户接触,一般是属于服务器或者网络设备之间的”vpn网络”. 在A、B两个异地机房,有两个内网需要连接起来,我们不需要用vpn,直接用Linux自带属性即可完成. 首先在A、B服务器上互加IP白名单,然后在A服务器上操作:
在B服务器上操作:
两边都敲完的话就有个隧道网段生成了,红色地方是本段和对端的公网IP,下面两个就是生成的隧道网段的IP了: 然后在这两个服务器互相用route命令加上对方内网的路由表走这个对端IP就可以了. 要断掉这个隧道网络的话直接删掉这个隧道网卡即可:
在服务器之间用这个的话,比pptp搭建个vpn方便点点. -_- 2.2 Socket代理 简单介绍下web的代理,如果无法访问vpn的时候,这个可能有用武之地,比如某后台只允许了某台服务器的IP,我们可以在这个服务器上临时搭建个代理服务,然后终端用户可以通过这个跳板来访问后台了. 这个代理我们一般是用于访问web流量,比如用squid或者ssh新建一条隧道,这里普及下,原先可能大家都认为squid做代理的时候因为没有目的站点的证书,是无法代理https流量,但其实不是这样,可以利用stunnel结合来做https流量的代理,或者sniproxy也行. 不过squid搭建起来也比较麻烦,这里简单介绍下ssh一条命令来创建代理:
在目的服务器上运行之后会监听7070端口,在浏览器设置这个代理之后,web流量的出口就可以是这个服务器了. 这个可以快速在多台服务器上创建多个用于频繁改变用户出口IP的代理,在某些场合下可能用得到,比如“帮朋友投下票”. 2.3 PPP协议 PPP协议的vpn有几种实现方式,勉强归类一下,包括pptp、sstp、l2tp. 大家接触linux时候一般都是用这个pptp类型的vpn,也很简便,但我们在某些特殊场合下面把这个vpn的功能给升级了. 这个vpn有别的打开方式能让我们点赞. 首先是认证控制,原先认证只可以用帐号和密码认证,但是其实还可以加上源IP校验. 再有的是权限的自动化控制,强调自动化是因为我们的场景是在后台管理帐号、用户源IP和拨vpn之后对应的权限甚至是进行抓包备案. 实现这两个功能利用的是/etc/ppp/ip-up这个文件,这个是在校验帐号密码之后调用的一个脚本文件,我们在这里可以自定义一些逻辑来实现我们需要的功能. 通过加入sh -x来调试这个脚本,可以发现会传入6个参数,其中就有我们需要的变量信息:
有了这些我们就可以另外写一个提供复杂逻辑的脚本来给ip-up调用. 比如先在ip-up里面加入日志,然后调用add_iptables.sh来做复杂的认证和权限控制,到最后放入一个tcpdump来在后台抓包做备用审计. add_iptables.sh逻辑也比较简单,利用传入的参数来跟我们后台提供的数据进行对比然后调用IPTABLES处理相关的复杂权限控制即可. 同理,还有另外一个/etc/ppp/ip-down的脚本是在用户断开vpn的时候自动调用的一个脚本,在这里可以删除掉之前IPTABLES做的控制,然后还可以自动分析之前的tcpdump数据包然后写入mysql. 上面说的是pptp类型的vpn,但是自从IOS设备已经弃用了pptp,在这个场景下我们可以再加入l2tp的vpn.同样是在/etc/ppp目录,我们只需要再安装配置ipsec(libreswan)和xl2tpd即可. 注意l2tp对外开放端口时候需要加多个,有udp的500、4500、1701这3个端口和esp协议,而且l2tp和pptp的逻辑和帐号文件是同一套,所以非常顺利就兼容了之前的那些方案,具体搭建方案就不再多阐述了. 2.4 OpenVPN 曾经这个vpn类型在某些场合很流行,因为看起来比pptp那些高大上些,甚至是可以让每个用户必须有专有的证书才可以拨上这个openvpn,需要各种私钥、公钥、客户端,给人一种靠谱的感觉. 有很多经过二次开发的商业化的VPN客户端也是采用了类似的三层tun虚拟隧道或者tap的虚拟网卡原理来实现内部逻辑. openvpn也比较灵活,比如可以用auth-user-pass-verify来调用权限控制脚本等,很长一段时间我们也在一些场合下用这个openvpn方案. 不过不打算深入讲下去,因为我们之后有更加实用的选择. 2.5 SoftEtherVPN盒子 这个vpn (地址:https://github.com/SoftEtherVPN/) 是集中了多个vpn协议的软件,兼容性非常强,有多强呢?看图: 几乎是所有类型的终端都可以找到合适的vpn协议来连接这个server. 同时支持用vpncmd命令行管理和客户端管理: (编辑:开发网_开封站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |