DigitalOcean Ubuntu14.04 中配置L2TP/IPSec VPN服务端

    技术教程 vpnxxw 来源:atjiang 214次浏览 0个评论 扫描二维码

    网上的教程太多,今天尝试了几个后,配置成功,记录下来,方便以后参考。

    一、安装环境

    DigitalOcean VPS, $5/mo套餐,512MBMemory,1 CoreProcessor,20GBSSD Disk, 1TBTransfer。昨天选择的是网上推荐的三潘市的机房,浙江电信宽带下速度还可以,但是在浙江移动宽带下速度非常慢,ssh上去都有卡顿,换了新加坡的机房后,网速明显提升。

    二、安装说明

    使用root登录安装,若非root登录,需在下面的每个命令前添加sudo。以下出现的%YOUR_VPS_IP%都需要用你的VPS公网IP地址来替换(一共有4处)。

    安装过程中会询问你是否需要是否用X.509证书来验证IPSec的连接,选择No。

    三、安装配置步骤

    1. 更新和安装必要的软件

    apt-get update && apt-get upgrade && apt-get install openswan xl2tpd ppp lsof
    

    这里没有安装防火墙软件UFW,昨天折腾了一下没有成功。

    2. 配置防火墙,允许VPN数据流

    iptables -t nat -A POSTROUTING -j SNAT --to-source %YOUR_VPS_IP% -o eth+
    

    这里的%YOUR_VPS_IP%需要用你的VPS IP地址替换。

    3. 转发设置

    3.1 开启系统IP包转发,并禁用ICP重定向

    echo "net.ipv4.ip_forward = 1" |  tee -a /etc/sysctl.conf
    echo "net.ipv4.conf.all.accept_redirects = 0" |  tee -a /etc/sysctl.conf
    echo "net.ipv4.conf.all.send_redirects = 0" |  tee -a /etc/sysctl.conf
    echo "net.ipv4.conf.default.rp_filter = 0" |  tee -a /etc/sysctl.conf
    echo "net.ipv4.conf.default.accept_source_route = 0" |  tee -a /etc/sysctl.conf
    echo "net.ipv4.conf.default.send_redirects = 0" |  tee -a /etc/sysctl.conf
    echo "net.ipv4.icmp_ignore_bogus_error_responses = 1" |  tee -a /etc/sysctl.conf
    

    3.2 将以上设置应用到其它网络接口

    for vpn in /proc/sys/net/ipv4/conf/*; do echo 0 > $vpn/accept_redirects; echo 0 > $vpn/send_redirects; done
    

    3.3 应用配置

    sysctl -p
    

    3.4 开机自动加载

    vi /etc/rc.local
    

    在exit 0前写入以下代码:

    for vpn in /proc/sys/net/ipv4/conf/*; do echo 0 > $vpn/accept_redirects; echo 0 > $vpn/send_redirects; done
    iptables -t nat -A POSTROUTING -j SNAT --to-source %YOUR_VPS_IP% -o eth+
    

    这里的%YOUR_VPS_IP%需要用你的VPS IP地址替换。

    4. 配置Openswan (IPSEC)

    备份/etc/ipsec.conf:

    mv /etc/ipsec.conf /etc/ipsec.conf.bak
    

    新建/etc/ipsec.conf:

    vi /etc/ipsec.conf
    

    写入如下内容:

    version 2.0  
    config setup
        dumpdir=/var/run/pluto/
        nat_traversal=yes
        virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v6:fd00::/8,%v6:fe80::/10
        protostack=netkey
        force_keepalive=yes
        keep_alive=60
    conn L2TP-PSK-noNAT
        authby=secret
        pfs=no
        auto=add
        keyingtries=3
        rekey=no
        ikelifetime=8h
        keylife=1h
        ike=aes256-sha1,aes128-sha1,3des-sha1
        phase2alg=aes256-sha1,aes128-sha1,3des-sha1
        type=transport
        left=%YOUR_VPS_IP%
        leftprotoport=17/1701
        right=%any
        rightprotoport=17/%any
        dpddelay=10
        dpdtimeout=20
        dpdaction=clear
    

    这里的left=行的值需要用你的VPS IP地址替换。

    5.设置共享密钥Shared Secret,即PSK

    vi /etc/ipsec.secrets
    

    在末尾添加如下代码:

    %YOUR_VPS_IP% %any: PSK "psk_password"</pre>
    

    这里的%YOUR_VPS_IP%需要用你的VPS IP地址替换

    6. 验证IPSEC设置

    ipsec verify
    

    忽略第三行 SAref kernel support N/A,倒数第三行 Checking /bin/sh is not /bin/dash WARNING和最后一行的Opportunistic Encryption Support DISABLE,其他OK即可。

    如果碰到Two or more interfaces found, checking IP forwarding [FAILED]也没有关系,只要cat /proc/sys/net/ipv4/ip_forward返回结果是1就没事。

    7. 配置xl2tpd

    备份/etc/xl2tpd/xl2tpd.conf:

    mv /etc/xl2tpd/xl2tpd.conf /etc/xl2tpd/xl2tpd.conf.bak
    

    新建/etc/xl2tpd/xl2tpd.conf:

    vi /etc/xl2tpd/xl2tpd.conf
    

    编辑/etc/xl2tpd/xl2tpd.conf, 内容如下:

    [global]
    ipsec saref = yes
    saref refinfo = 30
    ;debug avp = yes
    ;debug network = yes
    ;debug state = yes
    ;debug tunnel = yes
    [lns default]
    ip range = 172.16.1.30-172.16.1.100
    local ip = 172.16.1.1
    refuse pap = yes
    require authentication = yes
    ;ppp debug = yes
    pppoptfile = /etc/ppp/options.xl2tpd
    length bit = yes
    

    8. 配置ppp

    在/etc/ppp目录下新建options.xl2tpd文件,

    vi /etc/ppp/options.xl2tpd
    

    内容如下:

    require-mschap-v2
    ms-dns 8.8.8.8
    ms-dns 8.8.4.4
    auth
    mtu 1200
    mru 1000
    crtscts
    hide-password
    modem
    name l2tpd
    proxyarp
    lcp-echo-interval 30
    lcp-echo-failure 4
    

    9. 添加用户

    vi /etc/ppp/chap-secrets
    

    一行即为一个用户,依次是用户名、服务、密码、IP限制,如:

    # Secrets for authentication using CHAP
    # client     server    secret        IP addresses
    aaa       l2tpd    helloworld             *
    

    10. 重启相关服务

    service ipsec restart
    service xl2tpd restart
    

    如果连接上VPN后,然后无法访问某些站点,需要把DNS设置成Google的域名服务器8.8.8.8或8.8.4.4

    Windows上的设置很简单。

    在Ubuntu12.04下,所有的DNS设置信息保存在/etc/resolv.conf文件中。

    但是/etc/resolv.conf内的内容是自动生成的,在系统重启后会被自动覆盖掉。

    #Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
    #     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
    

    设置方法:

    首先我们需要创建一个文件/etc/resolvconf/resolv.conf.d/tail:

    vi /etc/resolvconf/resolv.conf.d/tail
    

    然后我们在这个文件里写入自己要添加的DNS服务器,格式与以前的/etc/resolv.conf文件一致:

    nameserver 8.8.8.8
    nameserver 8.8.4.4
    

    接下来我们重启下resolvconf程序,让配置生效:

    /etc/init.d/resolvconf restart
    

    再去看看/etc/resolv.conf文件,自己添加的DNS服务器已经写进去了。

    anyShare分享到:

    VPN信息网 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明-VPN信息网-DigitalOcean Ubuntu14.04 中配置L2TP/IPSec VPN服务端
    喜欢 (0)
    发表我的评论
    取消评论

    表情 贴图 加粗 删除线 居中 斜体 签到

    Hi,您需要填写昵称和邮箱!

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址