zoukankan      html  css  js  c++  java
  • 另类L2TP Tunnel

    说到L2TP VPN,大家肯定会想到xl2tpd和openswan的组合,这是传统L2TP VPN所需要的组件。安装配置步骤相对比较复杂。通常用作Point to Site模式,即:多个接入点(PC、服务器或者移动设备)连接(拨号)到一个服务器。传统L2TP VPN的兼容性非常好,主流操作系统原生支持L2TP协议。
    Linux内核从3.2开始内置了L2TP Tunnel功能,安装和配置简单,不需要任何第三方的组件。缺点是只能支持Site to Site模式,和GRE Tunnel、IPIP Tunnel类似。这种L2TP VPN还有一个最大的优势就是:接入服务器可以位于NAT设备后面,使用UDP协议通讯,因此非常适合在各种公有云上使用(特别是网络功能不怎么健全的Microsoft Azure)。
    我们使用Ubuntu Server 16.04 LTS为例,在Microsoft Azure日本西和腾讯云广州之间搭建L2TP Tunnel。将Microsoft Azure日本西作为服务器,腾讯云广州作为客户端。客户端的部分网络流量经过L2TP Tunnel从服务器端发出。

    服务器端配置

    #开启L2TP Tunnel功能,执行一次即可
    sudo modprobe l2tp_eth
    sudo ip l2tp add tunnel tunnel_id 3000 peer_tunnel_id 4000 encap udp local [服务器内网IP地址] remote [客户端公网IP地址] udp_sport 5000 udp_dport 6000
    sudo ip l2tp add session tunnel_id 3000 session_id 1000 peer_session_id 2000
    sudo ip link set l2tpeth0 up mtu 1488
    #设置Tunnel网卡地址
    sudo ip addr add 10.99.1.1 peer 10.99.1.2 dev l2tpeth0
    #开启ip转发
    sysctl -w net.ipv4.ip_forward=1
    #开启SNAT伪装
    sudo iptables -t nat -A POSTROUTING -s 10.99.1.0/24 -j SNAT --to-source [服务器内网IP地址]

    客户端配置

    #开启L2TP Tunnel功能,执行一次即可
    sudo modprobe l2tp_eth
    sudo ip l2tp add tunnel tunnel_id 4000 peer_tunnel_id 3000 encap udp local [客户端内网IP地址] remote [服务器公网IP地址] udp_sport 6000 udp_dport 5000
    sudo ip l2tp add session tunnel_id 4000 session_id 2000 peer_session_id 1000
    sudo ip link set l2tpeth0 up mtu 1488
    #设置Tunnel网卡地址
    sudo ip addr add 10.99.1.2 peer 10.99.1.1 dev l2tpeth0

    注意上述配置中,服务器和客户端的[tunnel_id]和[peer_tunnel_id],[session_id]和[peer_session_id],[udp_sport]和[udp_dport]是“对调互换”的。两边Tunnel网卡地址和peer地址也是类似的“对调互换”;服务器端需要开启IP转发功能和SNAT;客户端要根据具体的需求配置静态路由规则(使用route add命令);还有就是记得为两边的服务器开启对应的UDP端口,通常是在云平台的Security Group功能中进行配置。本例中要开放UDP 5000和UDP 6000端口。
    至此一个高效快捷的L2TP Tunnel就创建完成了,像配置GRE Tunnel一样简洁迅速,同时又具备良好的公有云环境兼容性。

  • 相关阅读:
    成长历程
    读书笔记javascript基本数据类型
    箭头函数
    sql server管理 这些你懂吗?
    索引的创建原则
    VisualStudio2012新特性[路边社通稿]
    第一节 MongoDB介绍及下载与安装
    sql server复灾 你懂了吗?
    错误处理:......标记为系统必备,必须对其进行强签名 收藏
    那么什么是好的代码呢?
  • 原文地址:https://www.cnblogs.com/hunterxue/p/6393330.html
Copyright © 2011-2022 走看看