• Ubuntu16.04的搭建l.2.t.p.d(宿舍访问公司内网)


    主要的实现步骤

    1. openswan(ipsec) : 提供一个密钥
    2. ppp :提供用户名和密码
    3. xl2tpd : 提供L2TP服务
    4. sysctl : 提供服务器内部转发
    5. iptables : 提供请求从服务器内部转向外部,外部响应转向服务器内部(内网需要在路由器做映射)

    安装开始

    1.安装openswan

    apt-get install openswan

    如果出现报错 Package ‘openswan‘ has no installation candidate 请执行以下命令,如果顺利安装请直接看第二步

    vim /etc/apt/sources.list.d/lzu.list
    #创建一个源

    粘贴如下代码到lzu.list文件

    deb http://mirror.lzu.edu.cn/ubuntu/ precise main restricted universe multiverse
    deb http://mirror.lzu.edu.cn/ubuntu/ precise-security main restricted universe multiverse
    deb http://mirror.lzu.edu.cn/ubuntu/ precise-updates main restricted universe multiverse
    deb http://mirror.lzu.edu.cn/ubuntu/ precise-proposed main restricted universe multiverse
    deb http://mirror.lzu.edu.cn/ubuntu/ precise-backports main restricted universe multiverse
    deb-src http://mirror.lzu.edu.cn/ubuntu/ precise main restricted universe multiverse
    deb-src http://mirror.lzu.edu.cn/ubuntu/ precise-security main restricted universe multiverse
    deb-src http://mirror.lzu.edu.cn/ubuntu/ precise-updates main restricted universe multiverse
    deb-src http://mirror.lzu.edu.cn/ubuntu/ precise-proposed main restricted universe multiverse
    deb-src http://mirror.lzu.edu.cn/ubuntu/ precise-backports main restricted universe multiverse
    

    更新一下源

    apt-get update

    安装openswan

    apt-get -y install openswan
    #安装出现提示框,选择NO回车

    好了vim
    /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 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=xxx.xxx.xxx.xxx(你的服务器地址)
        leftprotoport=17/1701
        right=%any
        rightprotoport=17/%any
    配置密钥文件 vim /etc/ipsec.secrets 

    然后把下面的内容放到新建的配置文件中:

    xxx.xxx.xxx.xxx %any: PSK "YourPsk"
    

    上面的xxx.xxx.xxx.xxx是服务器的IP,而后面的"YourPsk"中的YourPsk就是密钥的内容。你可以改为自己的任意字符串。反正在你连接登录VPN的时候,是需要这个PSK的。

    运行ipsec.

     ipsec setup restart

    PPP

    PPP就是一个拨号软件,用来提供用户登录的用户名和密码验证用的。所以在上面那篇文章里,PPTP搭建的VPN也会用到PPP。所以,实际上,PPTP和L2TP是可以共存在一台服务器上的,而且它们还可以共享用户登录账号信息,因为它们都用PPP作为用户登录连接。

    apt-get install ppp
    

    一般服务器都是OK的,如果你的PPP没有安装成,记住我上面提供的另外两种安装方式。虽然我们现在还没有搭建起整个VPN,但是可以先在PPP中把要用来登录的用户名和密码先安排好:

    vim /etc/ppp/chap-secrets
    

    在上面的文件中新增一行:

     
    czl *  czl  *
    有两个星号,第一个表示以后所有使用PPP作为用户认证的服务,都可以使用这个用户名和密码,包括PPTP和L2TP都可以使用loginname。第二个星号表示这个用户可以从任何IP登录。如果你希望控制一下,可以把星号改成具体的值来限制。

    xl2tpd

    就像pptp和pptpd一样,L2TP也依赖于xl2tpd。

     
    apt-get install xl2tpd

    安装好xl2tpd之后,我们进行配置。它的配置文件有两个,一个是/etc/xl2tpd/xl2tpd.conf一个是/etc/ppp/options.xl2tpd(也有可能没有,我们自己创建一个就可以),其实第一个文件把第二个文件包含进来而已。

    vim /etc/xl2tpd/xl2tpd.conf
    

    把下面的内容写进去:

     
    [global]
    ipsec saref = yes
    listen-addr = xxx.xxx.xxx.xxx(你的服务器地址)
    [lns default]
    ip range = 192.168.1.2-192.168.1.100
    local ip = 192.168.1.1
    refuse chap = yes
    refuse pap = yes
    require authentication = yes
    ppp debug = yes
    pppoptfile = /etc/ppp/options.xl2tpd
    length bit = yes

    再配置vim /etc/ppp/options.xl2tpd
    

    写入下面的内容:

    ipcp-accept-local
    ipcp-accept-remote
    require-mschap-v2
    ms-dns 114.114.114.114
    ms-dns 8.8.4.4
    asyncmap 0
    auth
    crtscts
    lock
    hide-password
    modem
    debug
    name l2tpd
    proxyarp
    lcp-echo-interval 30
    lcp-echo-failure 4
    mtu 1400
    noccp
    connect-delay 5000

    这样,xl2tpd的配置就好了

    sysctl

    sysctl的功能是开启转发。它能够将服务器内部的ip地址关系进行转发和映射,从而实现我们链接VPN之后的用户,能够通过内部的一些端口进行请求的转发。

    vim /etc/sysctl.conf
    

    找到下面几个选项,并把值改为:

    net.ipv4.ip_forward = 1
    net.ipv4.conf.default.rp_filter = 0
    net.ipv4.conf.default.accept_source_route = 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.all.accept_redirects = 0
    net.ipv4.conf.default.accept_redirects = 0
    net.ipv4.icmp_ignore_bogus_error_responses = 1

    执行:

    sysctl -p
    

    这样配置就生效了。

    iptables(根据自己的来)

    iptables --table nat --append POSTROUTING --jump MASQUERADE
    iptables -t nat -A POSTROUTING -s 10.0.0.0/22 -o eth0 -j MASQUERADE
    iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
    iptables -I FORWARD -s 10.0.0.0/22 -j ACCEPT
    iptables -I FORWARD -d 10.0.0.0/22 -j ACCEPT
    iptables -A FORWARD -j REJECT
    iptables -A INPUT -p udp -m state --state NEW -m udp --dport 1701 -j ACCEPT
    iptables -A INPUT -p udp -m state --state NEW -m udp --dport 500 -j ACCEPT
    iptables -A INPUT -p udp -m state --state NEW -m udp --dport 4500 -j ACCEPT
    mkdir /etc/iptables
    iptables-save > /etc/iptables/iptables.rules

    启动 IPSEC 服务并检测 IPSEC 是否正常工作

    /etc/init.d/ipsec start
    #使用如下命令确认 ipsec 是否工作正常
    ipsec verify
    #注意:只要没有Faild就可以了
    

    如果出现错误请参考以下命令

    #错误1.Checking /bin/sh is not /bin/dash   [WARNING] 输入以下代码
    dpkg-reconfigure dash
    #按英文提示,选择no
    
    
    #错误2.pluto is running [FAILED]
     /etc/init.d/ipsec start
    
    
    #错误3:NETKEY: Testing XFRM related proc values [FAILED]
    for each in /proc/sys/net/ipv4/conf/*
    do
        echo 0 > $each/accept_redirects
        echo 0 > $each/send_redirects
    done
    
    
    #错误4:Pluto listening for IKE on udp 500 [FAILED]
    apt-get install lsof
    
    
    #错误5:Hardware RNG detected, testing if used properly            [FAILED]
    apt-get install rng-tools

    下面是正常的截图

     最后重启 service ipsec restart

    重启l2tp service xl2tpd restar

    客户端连接测试 手机 win mac 使用l2tp协议

     
  • 相关阅读:
    Nmap参数详解(含扫描参数原理解释)
    为什么服务器突然回复RST——小心网络中的安全设备
    Security+学习笔记
    《HTTPS权威指南》读书笔记——PKI
    [Android 搞机]Twrp 中清除 data 和搞机清除的区别
    [C语言学习笔记五]复合语句和操作符的区分
    [C语言学习笔记四]变量与系统的交互
    [C语言学习笔记三]格式化输出和输入
    [C语言学习笔记二] extern 函数的用法
    [C语言学习笔记一]基本构架和变量
  • 原文地址:https://www.cnblogs.com/bbox/p/10718568.html
Copyright © 2020-2023  润新知