一、实验简介

VPN ,中文翻译为虚拟专有网络,英文全称是 Virtual Private Network 。现在 VPN 被普遍定义为通过 一个公用互联网络建立一个临时的、安全的连接,是一条穿过混乱的公用网络的安全、稳定隧道,使用这条隧道可 以对数据进行深度加密达到安全使用互联网的目的,被广泛使用企业办公当中。

简单的说,VPN 就是为了大家在 互联网的连接和使用中,开辟一条临时的通道,最大程度保证传输数据的便捷以及安全性。本实验将介绍一些 VPN 服务器软件,以及安装配置一台 pptp 服务器。

1.1 知识点
  • VPN 介绍
  • 常见的 VPN 软件介绍
  • pptp 安装和配置
  • 简要介绍代理服务器
1.2 效果截图

二、VPN 概述

VPN 最初主要是针对企业内部网络的扩展,后来发展到可以帮助远程用户、公司分支机构、商业伙伴及供应商同公 司的内部网建立可信的安全连接,用于经济有效地连接到商业伙伴和用户的安全外联网、虚拟专用网,由于 VPN 是在 Internet 上临时建立的安全专用虚拟网络,用户就节省了租用专线的费用,在运行的资金支出上,除了购买 VPN 设备,企业所付出的仅仅是向企业所在地的 ISP(Internet Service Provider,互联网服务提供商,也就是电信,联通等等)支付一定的上网费用,提高了管理效率,安全性,也节约了一定的成本。

2.1 VPN 实现方式

虚拟专用网络能够利用 Internet 或其它公共互联网络的基础设施,将 IP 报文加密封装在另一个 IP 报文中的方式为用户创建一个通信的隧道,让两个没有实际物理连接的节点却在在逻辑上直接连接通信,以达到高效、安全的通信方式

2.2 为什么要使用VPN
  • 需要访问的资源受限
  • 内外网因防火墙而无法直接通信
  • 专有网太贵
2.3 常见的VPN软件介绍
  • OpenVPN: OpenVPN 是一款基于 SSL 的开源 VPN 软件,它实现了利用 OpenSSL 加密库中的SSLv3/TLSv1协议函数库 来保证网络通讯安全性的目的,并且允许参与建立VPN的单点使用共享金钥,电子证书,或者用户名/密码来进行身份验证。同时避免了传统 SSL VPN 仅提供简单的 Web 应用的不足,它具有支持各种应用协议,以及支持 Windows,Linux,BSD,MAC OS 等多平台的特点。 通过阅读在ubuntu上安装OpenVPN 这篇文章,我们可以在自己的电脑搭建一台属于自己的 OpenVPN 服务器。

  • PPTP: 点对点隧道协议 (PPTP) 是由包括微软和 3Com 等多家公司组成的 PPTP 论坛开发的一种点对点隧道协,基于拨号使用的 PPP 协议使用 PAP 或 CHAP 等的加密算法,或者使用 Microsoft 的点对点加密算法 MPPE 。使其能通过跨越基于 TCP/IP 协议簇的数据网络结构创建 VPN,实现了按需的、多协议的虚拟专用网络,让远程客户端到专用企业服务器之间数据的安全传输。我们可以通过这篇学习安装配置PPTP服务器

  • L2TP: 第 2 层隧道协议 (L2TP) 是 IETF 基于 L2F ( Cisco 的第二层转发协议)开发的 PPTP 的后续版本。是一种工业标准 的 Internet 隧道协议,其可以为跨越面向数据包的媒体发送点到点协议 (PPP) 框架提供封装。PPTP 和 L2TP 都使用 PPP 协议对数据进行封装,然后添加附加包头用于数据在互联网络上的传输。

    • PPTP 只能在两节点间建立单一隧道。 L2TP 支持在两节点间使用多隧道,用户可以针对 不同的服务创建不同的隧道。
    • L2TP 可以提供隧道验证,而 PPTP 则不支持隧道验证。但是当 L2TP 或 PPTP 与 IPSEC 共同使用时,可以由 IPSEC 提供隧道验证,不需要再在第2层协议上验证隧道
    • PPTP 要求互联网络为 IP 网络。L2TP 只要求隧道媒介提供面向数据包的点对点的连接,L2TP 可以在 IP(使用 UDP ),桢中继永久虚拟电路(PVCs),X.25虚拟电路(VCs)或 ATM VCs 网络上使用

三、搭建一个 pptp 服务器

在我们的环境里可以搭建一台 pptp 服务器,但由于实验环境的限制,客户端的拨号连接无法实现,感兴趣的同学想要实现服务器端与客户端连接,可以在实验后用自己的环境搭建 pptp 的客户端与服务端,同时能够加强理解。

3.1 安装 pptpd
  • 打开终端。输入:
#安装 pptp 服务端
sudo apt-get install pptpd
  • 然后打开并修改该文件 sudo vim /etc/pptpd.conf,添加以下几行:
localip 192.168.10.1
remoteip 192.168.10.100-120

localip 是指服务器的 IP 地址,remoteip 是指分配给连接它的客户端的地址

  • 接着在 sudo vim /etc/ppp/chap-secrets 中添加用户和密码,用于连接时的一些控制信息。
user1 pptpd 123 *
user2 pptpd 123 *
3.2 在 pptpd-options 中添加 DNS 服务器:
  • 在 linux 中可以通过 cat /etc/resolv.conf 查看本机的 DNS 服务器 ip 地址:

  • 然后添加到 sudo vim /etc/ppp/pptpd-options
ms-dns 10.202.72.116
ms-dns 10.202.72.118
  • 完成了以上的配置,就可以打开 pptp 服务了:
sudo service pptpd restart

  • 设置 ip 转发: 出于安全考虑, Linux 系统默认是禁止数据包转发的。现在打开系统的转发功能(本环境里默认是打开转发的)
less /proc/sys/net/ipv4/ip_forward,#该文件内容为0,表示禁止数据包转发,1表示允许,将其修改为1。
echo "1" > /proc/sys/net/ipv4/ip_forward #修改文件内容,及时生效,重启网络服务或主机后效果不在。
echo "1" > /proc/sys/net/ipv4/ip_forward #写入启动脚本 /etc/rc.d/rc.local 中便可永久生效
  • 给iptables 创建一个 NAT 规则(本实验环境不用加这步,但是在自己的电脑上需要)
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE && iptables-save
3.3 安装客户端

以下操作只能在自己的电脑上运行了:

  • 安装 pptp 客户端
#安装 pptp 客户端
sudo apt-get install pptp-linux
  • 添加必要的 kernel 模块:
# ptpsetup 脚本在运行时会检查核心是否支持 MPPE 模块,以及 PPP 是否支持 MPPE 加密。用以下命令检查内核是否支持MPPE补丁
modprobe ppp_mppe
  • 创建一个文件 sudo vim /etc/ppp/peers/pptpserver 并且添加以下几行(其中用户名与密码请自定义,若是本地搭建的服务端便是用127的 ip 地址,若不是请输入自己的 服务器端 ip 地址):
pty "pptp 127.0.0.1 --nolaunchpppd"
name user1
password 123
remotename PPTP
require-mppe-128
  • 然后打开客户端,连接我们的服务器:
pppd call pptpserver

四、搭建一个代理服务器

进入内部网络,访问公司内部服务器,除了采用 VPN 的方式,也可以采用代理服务器的方式。

代理服务器英文全称是(Proxy Server),其功能就是作为用户的中转站去获取网络信息。代理服务器就好象一个大的 Cache,这样就能显著提高浏览速度和效率。这次介绍一个代理服务器的软件 Shadowsocks。 Shadowsocks 以下简称 ss ,它和 VPN 是有区别的,这里先介绍一下,我们主要是学习安装配置客户端和服务器端的流程。

4.1 Shadowsocks 介绍

Shadowsocks 是将以前通过 SSH 创建的 Socks5 协议拆开成 Server 端和 client 端,下面这个原理图能简单介绍其原理,基本上和利用 SSH tunnel 大致类似:

PC 客户端(即你电脑客户端)发出基于 Socks5 协议请求与 SS-Local 端进行通讯,SS-Local 和 SS-Server 两端通过多种可选的加密方法进行通讯,SS-Server 将收到的加密数据进行解密,还原初始请求,再发送到用户需要访问的服务网站,获取响应原路再返回 ,返回的数据包内容依然使用了加密,而 IP 报文看起来依然是普通 TCP 包,可成功穿过防火墙。 因此,Shadowsocks 的优点在于它解决了防火墙通对 IP 报文中一些特定的目的地址的排除,从而干扰的问题。

4.2 安装配置 ss 服务器端
  • 由于 ss 加入了 python 官方的源,所以打开终端,输入以下命令安装即可:
sudo apt-get update
sudo apt-get install python-pip   #实验楼的环境已安装了 pip
sudo pip install shadowsocks

  • 使用方法 :
sudo ssserver -p 443 -k password -m aes-256-cfb   -p 是指服务器端口 -k 输入密码 -m 加密的方式

  • 在后台运行 ss:
sudo ssserver -p 443 -k password -m aes-256-cfb --user nobody -d start
  • 停止运行:
sudo ssserver -d stop
  • 查看日志:
sudo less /var/log/shadowsocks.log
4.3 安装配置 ss 客户端

ss 有 android,ios,Mac os,openWRT,linux 的客户端,能够让不同平台的人使用。 本次实验只使用终端,不用客户端,所以通过 firefox 的插件来检验效果。

  • 建立配置文件 sudo vim /etc/ss.json:
{
    "server":"server_ip",
    "server_port":443,
    "local_port":1080,
    "password":"password",
    "timeout":600,
    "method":"aes-256-cfb"
}
  • 开启 ss 客户端:
sslocal -c /etc/ss.json

  • 火狐浏览器配置: 设置→首选项→高级→网络→链接→设置→手动配置代理→socks主机:127.0.0.1 端口:1080→确定

  • 在终端查看效果

  • 关于chrome 安装SwitchySharp,情景模式→删除原有的情景模式,新建情景模式(原有的情景模式无socks代理)→手动配置→SOCKS代理:127.0.0.1 端口1080→保存 →ok。

五、实验总结

本实验介绍了一些常见的 VPN 软件 ,并安装配置了一下 pptp 服务器和 ss ,ss 和 VPN虽然都能完成我们的目的,但是原理并不相同。有兴趣的同学可以更深入的了解其原理,本实验仅介 VPN ,所有想进一步了解 VPN 的安装配置,可以在自己的电脑上安装试试。 ss 作为代理服务器工具,安装很简单,使用效果也不错。想进一步了解的,可去 github 查看。

参考资料

Linux安装配置VPN服务器的更多相关文章

  1. centos6.4安装配置vpn服务器步骤详解

      centos6.4安装配置vpn服务器步骤详解,从安装VPN到配置VPN服务器.配置VPN服务器的路由转发功能,每一步都很详细   一.VPN服务器环境说明 操作系统:CentOS release ...

  2. Linux 安装配置 tftp 服务器

    1.安装TFTP服务 安装服务端 sudo apt-get install tftpd-hpa 安装客服端 sudo apt-get install tftp-hpa 2.创建TFTP服务器目录 cd ...

  3. linux 安装配置NFS服务器

    一.Ubuntu安装配置NFS 1.安装NFS服务器 sudo apt-get install nfs-kernel-server 安装nfs-kernel-server时,apt会自动安装nfs-c ...

  4. Linux安装配置SVN服务器【转】

    1. 安装SVN服务器: 检查是否已安装 # rpm -qa subversion 安装SVN服务器 # yum install httpd httpd-devel subversion mod_da ...

  5. Linux安装配置SVN服务器

    1. 安装SVN服务器: 检查是否已安装 # rpm -qa subversion 安装SVN服务器 # yum install httpd httpd-devel subversion mod_da ...

  6. Linux安装配置Nginx服务器

    如有需要可以加我Q群[308742428]大家一起讨论技术,有偿服务. 后面会不定时为大家更新文章,敬请期待. 喜欢的朋友可以关注下. 前言 今天搭建nginx服务器,来访问静态资源文件. Nginx ...

  7. suse linux 10 下配置vpn服务器(pptp)

     一.安装所需的软件包:      pptpd-*.rpm      ppp-*.rpm      pptp-*.rpm     一般情况下系统已经将pptp和ppp包安装好了,所以只需安装pptpd ...

  8. linux上安装配置samba服务器

    linux上安装配置samba服务器 在linux上安装配置samba服务器 在这给大家介绍一个不错的家伙,samba服务.如果您正在犯愁,如何在Windows和Linux之间实现资源共享,就请看看这 ...

  9. CentOS 6.3安装配置LAMP服务器(Linux+Apache+MySQL+PHP5)

    服务器系统环境:CentOS 6.3 客户端系统环境:Windows 7 ultimate(x86)sp1 简体中文旗舰版 ※  本文档描述了如何在Linux服务器配置Apache.Mysql.PHP ...

随机推荐

  1. 关于nodejs的require顺序

    --------------------------------------- check /home/somebody/node_modules/othermodule check /home/so ...

  2. 并发数据(锁)ReaderWriterLockSlim

    ReaderWriterLockSlim 类 ReaderWriterLockSlim 类支持三种锁定模式:Read,Write,UpgradeableRead.这三种模式对应的方法分别是 Enter ...

  3. JAVA基础--toString, equals方法

    ==比较的是地址 equals比较的是内容. 所以要重写object的equals方法. public class TestEquals { public static void main(Strin ...

  4. Mycat 安装配置

    下载https://github.com/MyCATApache/Mycat-download Mycat 需要jdk 环境,首先安装 jdk 安装完 jdk 环境以后 下载 mycat server ...

  5. 控制流之break

    break语句是用来 终止 循环语句的,即哪怕循环条件没有称为False或序列还没有被完全递归,也停止执行循环语句.一个重要的注释是,如果你从for或while循环中 终止 ,任何对应的循环else块 ...

  6. mysql trouble shooting---- 从库停止同步lock_wait_timeout_exceeded_try_restarting_transaction

    问题描述: 数据库从库停止同步. 问题分析: show slave status\G;(也可使用show full processlist) 显示 某个update语句出错,Lock wait tim ...

  7. POJ 3421 X-factor Chains

    线型素数筛+质因素分解+组合数. AC后发现这样做效率有点低..766ms. #include<stdio.h> #include<string.h> #include< ...

  8. (中等) UESTC 360 Another LCIS ,线段树+区间更新。

    Description: For a sequence S1,S2,⋯,SN, and a pair of integers (i,j), if 1≤i≤j≤N and Si<Si+1<S ...

  9. python遍历字典元素

    a={'a':{'b':{'c':{'d':'e'}},'f':'g'},'h':'i'} def show(myMap): for str in myMap.keys(): secondDict=m ...

  10. 10天学会phpWeChat——第八天:Form类,丰富表单提交的字段类型

    通过前面七讲的系列教程,我们完成了一个包含后台并自适应PC+h5移动端的文章管理模块. 在实际的生产环境中,文章投稿.商品上传等操作并不会简单局限于一个text和textarea组成的表单.在实际中, ...