Ubuntu上搭建 L2TP/IPSec VPN的步骤详解

1.L2TP第二层隧道协议 是需要证书的一种访问方式。需要在VPN服务器内网安装一证书服务器,然后让VPN服务器信任该证书颁布机构,然后发布证书服务器,下载证书。VPN客户端需要访问需要先下载安装证书才可进行连接

2.IPSEC网际安全协议 是智能卡访问模式。 
Linode使用有一段时间了,上面一直都搭着PPTP作为翻墙VPN,实际上使用蛮少的。最近想躺在床上就可以通过ipad翻墙看看新闻,但是查了下方法,大家都一直建议使用L2TP/IPSec VPN。

翻阅了不少人博客上的搭建方法,本来以为蛮简单的一个事情,还是折腾了2个晚上才搞定。我试着记录下这次折腾的步骤,或许可以减少大家的误操作。
 
我搭建的基础环境如下:
Linode VPS
Ubuntu Server 12.04
以 root 用户登录
1. L2TP/IPSec扫盲
L2TP/IPSec 就是 L2TP over IPSec:L2TP Over IPSec VPN是将L2TP 协议和IPSec 协议结合使用,利用L2TP协议对用户进行认证并分配内网IP地
址,利用IPSec协议对通信进行加密,提供整体的point-to-site VPN解决方案。
有兴趣可以去看看Hillstone L2TP Over IPSec VPN技术解决方案白皮书, 不清楚也不影响后面的搭建。
 
2. IPSec的部署
2.1 安装IPSec
一般都是通过使用openswan来实现IPSec,网上流传了很多自己编译源码的步骤,但是我试了下,貌似还是有问题,所以还是简单点,直接使用最新的发行包安装就行。
apt-get install openswan
 
2.2 修改IPSec配置文件/etc/ipsec.conf
config setup
    nat_traversal=yes
    virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
    oe=off
    protostack=netkey
 
conn %default
    forceencaps=yes
 
conn L2TP-PSK-NAT
    rightsubnet=vhost:%no,%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= 填入自己linode的IP
    leftprotoport=17/1701
    right=%any
    rightprotoport=17/%any
 
2.3 设置 PSK 预共享密钥
       编辑/etc/ipsec.secrets,插入下面一行内容:
       服务器的公网IPv4地址  %any: PSK “wangyuxiong.com”
 
2.4 对系统的网络策略进行一些调整
for each in /proc/sys/net/ipv4/conf/*
do
    echo 0 > $each/accept_redirects
    echo 0 > $each/send_redirects
done
 
     将上面这段代码完整地复制一次,加入到 /etc/rc.local 中,使其在每次系统启动时都生效。
 
2.5 重启一次 IPSec 服务
 service ipsec restart
 
2.6 运行ipsec verify,结果如下:
root@metaboy:~# ipsec verify
Checking your system to see if IPsec got installed and started correctly:
Version check and ipsec on-path                                                [OK]
Linux Openswan U2.6.37/K3.13.7-x86_64-linode38 (netkey)
Checking for IPsec support in kernel                                           [OK]
SAref kernel support                                                                    [N/A]
NETKEY: Testing XFRM related proc values                               [OK]
         [OK]
         [OK]
Checking that pluto is running                                                       [OK]
Pluto listening for IKE on udp 500                                                 [OK]
Pluto listening for NAT-T on udp 4500                                           [OK]
Two or more interfaces found, checking IP forwarding                  [OK]
Checking NAT and MASQUERADEing                                          [OK]
Checking for ‘ip’ command                                                             [OK]
Checking /bin/sh is not /bin/dash                                                   [OK]
Checking for ‘iptables’ command                                                   [OK]
Opportunistic Encryption Support                                                  [DISABLED]

3. L2TP的部署
  3.1. 安装L2TP
        apt-get install xl2tpd
 
  3.2 编辑 L2TP 配置文件 /etc/xl2tpd/xl2tpd.conf
     文件内容替换为下面的内容:
[global]
; listen-addr = 192.168.1.98
[lns default]
ip range = 10.1.1.2-10.1.1.255
local ip = 10.1.1.1
require chap = yes
refuse pap = yes
require authentication = yes
name = LinuxVPNserver
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes

 
4. 配置PPP
4.1 安装PPP
      apt-get install pop
 
4.2 配置/etc/ppp/options.xl2tpd
    先从 xl2tpd 文档中复制一个配置文件样例到我们的配置文件目录:
    cp /usr/share/doc/xl2tpd/examples/ppp-options.xl2tpd /etc/ppp/options.xl2tpd
    编辑/etc/ppp/options.xl2tpd,内容如下:
ipcp-accept-local
ipcp-accept-remote
ms-dns  8.8.8.8
ms-dns  8.8.4.4
noccp
auth
crtscts
idle 1800
mtu 1410
mru 1410
nodefaultroute
debug
name l2tpd
lock
proxyarp
connect-delay 5000
 
注意下这个name很重要,需要记住,后面需要用到。
 
4.3. 添加用户账户,“账户”都在 /etc/ppp/chap-secrets 中
# Secrets for authentication using CHAP
# client        server  secret                       IP addresses
user             l2tpd   wangyuxiong.com          *
 这里的server与步骤4.2配置中的name必须保持一致。
 
4.4 重启xl2tpd
       service xl2tpd restart
 
5. 转发设置
5.1 启用转发设置:
       编辑/etc/sysctl.conf,找到net.ipv4.ip_forward=1这一行,将前面的#去掉,然后运行sysctl -p令其生效。
 
5.2 永久生效
      编辑/etc/rc.local,添加下面一行:
      iptables -t nat -A POSTROUTING -s 10.1.1.0/24 -o eth0 -j MASQUERADE
      在终端运行一次上述 iptables 命令,即可令转发立即生效。
 
搞完这几个步骤,就可以体验下墙外的生活了。

时间: 2024-09-30 16:00:21

Ubuntu上搭建 L2TP/IPSec VPN的步骤详解的相关文章

企业路由器IPSEC VPN配置方法详解

需求介绍 某公司总公司位于深圳,在北京.上海.广州三地有分公司,现需要组建一个网络,要求实现分公司都能够安全的访问公司内部邮件服务器和文件服务器,本文将通过一个实例来展示TL-ER6120的解决方案和配置过程. 网络规划 深圳总公司局域网网段为"192.168.0.0/24": 北京分公司为"192.168.1.0/24": 上海分公司为"192.168.2.0/24": 广州分公司为"192.168.3.0/24". 拓扑如

linux搭建vpn服务器步骤详解

PPTP 的配置主要有下面五个步骤: 验证内核是否加载了 MPPE 模块 安装所需的软件包 配置 PPP 和 PPTP 的配置文件 打开内核的 IP 转发功能 启动 pptpd 守护进程 配置 iptables 防火墙放行和转发规则 详细步骤 1.验证内核是否加载了MPPE模块: 基本都安装过了,所以略过 2.安装所需的软件包: ppp PPTP 使用 PPP 协议对用户数据进行封装,然后将 PPP 数据帧封装在 IP 数据报里,经由 IP 网络传播.因此首先需要支持 PPP 协议,下面命令安装

fedora 20搭建vpn服务器步骤详解

安装pptp server yum install pptpd -y 编辑 vim /etc/ppp/chap-secrets 加入一行 用户名 pptpd 密码 * 启动pptpd service pptpd start 到客户机上尝试连接,建立一个pptp连接,记住一定要进入高级设置,打开 use MPPE Encryption,否则连不上 连上后,没法上网了,先断开,后面还有工作要做. 设定vpn ip 段 echo "localip 192.168.0.1" >>

ShadowSocks多用户管理系统搭建(moeSS+manyuser)步骤详解

之前有分享<Shadowsocks一键安装脚本(CentOS6,7.Ubuntu.Debian)>,适合单用户个人用.如果你的手上有多个墙外vps可以搭建一个Shadowsocks分享平台.前端面板(moeSS,建议使用ssl加密)和后端(shadowsocks-manyuser),教程如下: 1. Shadowsocks多用户前端moeSS安装环境:CentOS-6.6-x86_64-minimal.iso PHP环境配置 安装lnmp环境(必须安装Nginx.MySQL.PHP5.4+),

在ubuntu 14.10 64bit安装mac主题步骤详解[图]

一. 先上两张图看看 二. 具体安装方法 1. 设置软件源,这些源在国外,速度有点慢 sudo add-apt-repository ppa:noobslab/themes sudo add-apt-repository ppa:noobslab/apps sudo add-apt-repository ppa:docky-core/ppa sudo apt-get update 2. 安装Ubuntu tweak,用它来设置主题和图标 sudo apt-get install unity-tw

Ubuntu系统搭配nginx+php网站环境步骤详解

如果安装源慢(使用国内机器/虚拟机/连接国外网络环境不佳),则替换安装源(可选). 替换安装源 sudo vim/etc/apt/sources.list # 替换资源为阿里云 :0,$s/us.archive.ubuntu.com/mirrors.aliyun.com/ 如果是测试环境的虚拟机,安装好之后如果没有开sshd,需要安装 openssh,开启远程SSH. 开启远程SSH sudo apt-get install openssh-server 安装完毕,检查是sshd否运行: ps-

ubuntu上apache加载配置curl模块详解

一.安装curl相关模块 sudo apt-get install curl libcurl3 libcurl3-dev php5-curl 二.配置curl模块 sudo vi /etc/php5/apache2/php.ini 在extension下面加上 extension=curl.so 三.重启apache sudo service apache2 restart

CentOS上搭建PHP服务器环境的步骤与方法_服务器其它

本文实例讲述了CentOS上搭建PHP服务器环境的步骤与方法.分享给大家供大家参考,具体如下: 安装apache: yum install httpd httpd-devel 启动apache: /etc/init.d/httpd start 此时输入服务器的IP地址,应该看到apache的服务页面,端口不用输,apache默认就是使用80端口 安装mysql: yum install mysql mysql-server 启动mysql: /etc/init.d/mysqld start 安装

vpn-我在国外的一台机器亚马逊AWS EC2上搭建了 一个VPN服务,用国内的网络去访问,显示超时。

问题描述 我在国外的一台机器亚马逊AWS EC2上搭建了 一个VPN服务,用国内的网络去访问,显示超时. 日志如图所示 解决方案 这种服务,早就被墙了,没有做混淆的服务,基本连一天都用不了 解决方案二: 请教大神,也就是说企图用这种方式进行翻墙是不可行的啦? 解决方案三: http://www.fj.xinhuanet.com/2015-01/28/c_1114164074.htm