转自:http://wiki.openwrt.org/zh-cn/doc/howto/connect_by_l2tp

http://wiki.openwrt.org/doc/howto/connect_by_l2tp

许多在俄罗斯,乌克兰,以色列及其他一些国家的ISP提供L2TP(第二层隧道协议)的接入方式以连接Internet。在许多情况下,内部资源(FTP,论坛等)位于ISP提供的“本地”网络中。用户可以通过P2P程序在“本地”网络交换文件。“本地”网络是流量免费或者是不限速度的,但访问Internet则需要通过L2TP进行再次拨号,这就是所谓的双重接入。

而在天××××----×××××朝,大多数网友使用VPN的最主要目的是游戏加速或者是翻*××墙。

OpenWrt提供两个包来进行L2TP拨号:openl2tp和xl2tp。在这里只介绍xl2tp,因为这个包已经能和netifd完美配合。

准备工作
需要安装的包:

xl2tpd
opkg install xl2tpd
具体配置
由于是双重连接,所以需要新建一个接口用于第二连接,下面是对/etc/config/network添加接口的例子:

config interface 'vpn'
        option ifname 'vpn1'
        option proto 'l2tp'             #与/lib/netifd/proto/l2tp.sh相关
        option username 'usr'           #l2tp拨号用户名
        option password 'pwd'           #l2tp拨号密码
        option server 'xxx.xxx.xxx.xxx' #l2tp拨号服务器域名或IP地址
为了使L2TP隧道生效,还需要在/etc/config/firewall中的"wan"区域添加前面新建的接口:

config zone
option name 'wan'
option network 'wan vpn'
option input   REJECT
option forward REJECT
option output  ACCEPT
option masq    1
在确认第一连接已经正确建立并可以与L2tp拨号服务器正常通信的前提下,使用以下命令来建立l2tp连接:

ifup vpn
使l2tp可以开机自动拨号:

/etc/init.d/xl2tpd enable
故障排除
通过ifconfig或route命令查看连接是否正确建立。如果没有生成对应的接口或者没有到l2tp拨号服务器的默认路由,那连接就没有建立成功。

此时可以修改/etc/ppp/options打开PPP的日志文件以及调试开关:

debug 1
logfile /var/log/ppp.log
……

重新拨号再对拨号日志做详细分析。

Many ISP's in Russia, Ukraine, Israel and other countries offer connection using Layer 2 Tunneling Protocol. In many cases ISP provides a "local" network, where internal resources of ISP are located (ftp, forums, etc.) Also users can exchange files through "local" network by P2P programs, like Direct Connect|. Traffic in "local" network is free or not limited by speed. This is called Dual Access.

The only OpenWrt package which uses the kernel to pass L2TP traffic is openl2tp. This guide will help to configure OpenWrt to connect to ISP using this package.

Preparation
Required Packages
openl2tp-full
Installation
opkg install openl2tp-full
Configuration
Create openl2tpd script in /etc/init.d/
#!/bin/sh /etc/rc.common
 
 
START=90
STOP=10
 
USER='login'
# Next line L2TP server domain name or IP
L2TPSERVER=''
 
L2TP='openl2tpd'
OPTS='-u 1701'
CONF='l2tpconfig'
RPC='portmap'
MOD='pppol2tp'
export L2TP_HISTFILE='/dev/null'
 
 
start() {
  echo -n "Checking for $L2TP... "
  L2TP_PROG=`which $L2TP`
  if [ -n "$L2TP_PROG" ] && [ -x $L2TP_PROG ]; then
    echo "yes"
  else
    echo "no"
    return 1
  fi
 
  echo -n "Checking for $CONF... "
  CONF_PROG=`which $CONF`
  if [ -n "$CONF_PROG" ] && [ -x $CONF_PROG ]; then
    echo "yes"
  else
    echo "no"
    return 1
  fi
 
  if ! pidof $RPC 1> /dev/null 2> /dev/null; then
    echo -n "Starting $RPC... "
    RPC_PROG=`which $RPC`
    if [ -n "$RPC_PROG" ] && [ -x $RPC_PROG ] && start-stop-daemon -q -S -x $RPC_PROG; then
      echo "done"
    else
      echo "failed"
      return 1
    fi
  fi
 
  echo -n "Checking WAN status..."
  while [ -z "$(uci_get_state network wan up)" ] ; do
     sleep 1
  done
  echo "done"
 
  echo -n "Starting $L2TP... "
  if ! start-stop-daemon -q -S -x $L2TP_PROG -- $OPTS; then
    start-stop-daemon -q -K -x $L2TP_PROG
  fi
  echo "done"
 
  echo -n "Establishing tunnel... "
  ( echo "peer profile modify profile_name=default lac_lns=lac"
    echo "ppp profile modify profile_name=default mtu=1460 auth_pap=no auth_eap=no default_route=yes auth_none=no lcp_echo_interval=10"
    echo "tunnel create tunnel_name=corbina dest_ipaddr=$L2TPSERVER framing_caps=sync"
    echo "quit" ) | $CONF_PROG 1> /dev/null 2> /dev/null
  if [ $? -ne 0 ]; then
    echo "failed"
    rm -f /var/run/$L2TP.pid
    return 1
  fi
  ( echo "session create tunnel_name=corbina session_name=corbina user_name=$USER"
    echo "quit" ) | $CONF_PROG 1> /dev/null 2> /dev/null
  if [ $? -ne 0 ]; then
    echo "failed"
    rm -f /var/run/$L2TP.pid
    return 1
  fi
  echo "done"
 
}
 
stop() {
  echo -n "Checking for $L2TP... "
  L2TP_PROG=`which $L2TP`
  if [ -n "$L2TP_PROG" ] && [ -x $L2TP_PROG ]; then
    echo "yes"
  else
    echo "no"
    return 1
  fi
 
  echo -n "Checking for $CONF... "
  CONF_PROG=`which $CONF`
  if [ -n "$CONF_PROG" ] && [ -x $CONF_PROG ]; then
    echo "yes"
  else
    echo "no"
    return 1
  fi
 
  echo -n "Deleting tunnel... "
  ( echo "session delete tunnel_name=corbina session_name=corbina"
    echo "quit" ) | $CONF_PROG 1> /dev/null 2> /dev/null
  if [ $? -ne 0 ]; then
    echo "failed"
  else
 
    ( echo "tunnel delete tunnel_name=corbina"
      echo "quit" ) | $CONF_PROG 1> /dev/null 2> /dev/null
    if [ $? -ne 0 ]; then
      echo "failed"
    else
 
      echo "done"
    fi
  fi
 
  echo -n "Stopping $L2TP... "
  if ! start-stop-daemon -q -K -x $L2TP_PROG; then
    echo "not running"
    return 1
  else
    rm -f /var/run/$L2TP.pid
    echo "done"
  fi
 
}
 
restart() {
  stop
  sleep 10
  start
}
The sсript has a lot of debug, which can be removed.
Insert your username and server name or IP address into this script.
Give permission to execute the script:
chmod 755 /etc/init.d/openl2tpd
Enter user name and password to /etc/ppp/chap-secrets:
"username" * "password"
Create scripts to add and delete routes to L2TP server
/etc/ppp/ip-up.d/addroute
#!/bin/sh

. /etc/functions.sh
. /lib/network/config.sh

GW="$(uci_get_state network wan gateway)"
WAN="$(uci_get_state network wan ifname)"

route add $PPP_REMOTE gw $GW dev $WAN
route del $PPP_REMOTE dev $PPP_IFACE
/etc/ppp/ip-down.d/delroute
#!/bin/sh

route del $PPP_REMOTE
Give permissions to execute these scripts:
chmod 755 /etc/ppp/ip-up.d/addroute
chmod 755 /etc/ppp/ip-down.d/delroute
Add string replacedefaultroute and ipparam vpn to /etc/ppp/options. (ipparam is not needed for trunk).
Create new interface in /etc/config/network
...
config 'interface' 'vpn'
option 'ifname' 'ppp0'
option 'proto' 'none'
...
Add reqopts to wan section of /etc/config/network (msstaticroutes option works only in trunk).
option reqopts 'staticroutes msstaticroutes'
They are needed to get static routes from ISP. Which reqopts to choose depends on ISP. They mean which dhcp option to use.
* "staticroutes" = option 121 
* "msstaticroutes" = option 249 
* "routes" = option 33 (This is non yet implemented in default.script See Ticket 10294).
Add vpn interface to zone wan in /etc/config/firewall:
option network 'wan vpn'
Now after reboot you can start openl2tp.
/etc/init.d/openl2tpd start
To start openl2tp on boot
/etc/init.d/openl2tpd enable
Keepalive
Option persist in pppd not always works correctly. that is why I made a keepalivel2tp script to reconnect.

/etc/ppp/keepalivel2tp

#!/bin/sh

if [ ! -f /var/run/openl2tpd.pid ]; then 
while [ ! -f /var/run/ppp0.pid ]; do
{
/etc/init.d/openl2tpd restart
sleep 60
}
done
fi 
To use this script you need to give permission to execute the script and setup cron to start it periodically.

使用L2TP进行双重接入相关推荐

  1. 强叔拍案惊奇 出差员工使用手机通过L2TP over IPSec接入总部

    强叔最近开始在"侃墙"系列连载VPN了,许多小伙伴们看后大呼不过瘾,希望强叔能加快更新速度.但强叔也不是三头六臂,也需要一笔一笔来写啊.为了满足小伙伴们对VPN的浓厚学习兴趣,强叔 ...

  2. ## 使用strongswan和xl2tpd配置l2tp over ipsec和Xauth

    使用strongswan和xl2tpd配置l2tp over ipsec和Xauth yum install -y strongswan xl2tpd 编辑 /etc/strongswan/ipsec ...

  3. 广域网安全建设的思路和部署

    文/孙松儿 广域网安全建设的特点分析 在企业的广域网建设过程中,分布在不同位置的远程企业分支作为广域网络的重要组成部分,是客户完成与企业大多数业务往来的主要场所.从政府.金融银行.大企业.零售业等行业 ...

  4. 1、防火墙的基础知识

    1.1.防火墙的概念 一种网络安全设备,通过各种配置,拒绝非授权的访问,保护网络安全. 通过访问控制.身份验证.数据加密.VPN技术等安全功能,形成一个进出屏障. 1.2.防火墙的发展历史 主要经历了 ...

  5. cisco 模拟器安装及交换机的基本配置实验心得_软考网络工程师级配置题总结 | 交换机配置、路由器配置、广域网接入配置、L2TP配置、IPSec配置、PIX防火墙配置...

    软考网络工程师级配置题总结 一. 交换机配置 1. 交换机的基本配置 Enable 进入特权模式 Config terminal 进入配置模式 Enable password cisco 设置enab ...

  6. 移动用户远程接入L2TP配置详解

    移动用户远程接入L2TP-vpn配置详解 学会查找参考文档,和官方资料很重要 华为企业产品技术支持网站 - 华为 1.话不多说先上图: 图为模拟环境的基础环境配置 模拟软件:ensp 系统环境:win ...

  7. 基于云的SD-WAN骨干接入服务

    软件定义WAN,大家对WAN已经不陌生了,这里就不多说了.主干接入服务并非新事物,而是更加传统的网络服务.而且云中枢访问服务,包含了两个新的概念:SD-WAN,云融合.这个新的概念将为企业用户带来哪些 ...

  8. L2TP协议笔记1---L2TP概念及协议流程分析

    这个协议是早前做防火墙测试工作时主要负责测试的协议,虽然只做了几个月,但感觉如果把当时的一些学习笔记和经验整理好放在网络中,不仅可以使自己的协议理解得到巩固,也让自己有机会在和别人交流中互相学习.   ...

  9. 实例协议分析RFC1483:AAL5和几种常见ADSL接入技术

    注:文中部分内容摘自RFC1483文档和肖建国<ADSL调制与业务承载技术> 我们先建立一个ADSL通用模型: PC(LAN)--ATU-R--DSLAM(ATM)--BRAS --WAN ...

最新文章

  1. [开发工具]借助dillinger.io,在博客园写markdown
  2. 036、Linux下ipmitool命令
  3. 索引,表增删改统计,加锁查具体情况(推荐)
  4. boost::multiprecision模块tommath相关的测试程序
  5. linux ctrlc 退出循环_linux按行读取 (while read line与forloop)
  6. linux安装grpc占用空间大,grpc linux安装-Go语言中文社区
  7. a5d27 emmc启动 修改1
  8. oracle层级关系按列存储_几张图看懂列式存储
  9. 清华来了第二位菲尔兹奖得主,是丘成桐力荐的老朋友Caucher Birkar
  10. Flutter延时任务、Flutter通过Future与Timer实现延时任务
  11. DnsFookup:一款功能强大的DNS重绑定工具
  12. 基于SuperMap iDesktop制作天地图1--10级详细说明
  13. STL容器的底层数据结构
  14. Linux解压tar.gz和tar.bz2的命令
  15. 【Python】英文字符频率统计
  16. ADI元器件封装下载及使用
  17. java什么都听过_【Java】程序员最大的悲哀是什么?
  18. DDD(领域驱动设计)分层架构
  19. 中外保险公司服务创新差异的比较研究
  20. php 点阵 汉字,PHP 文字生成点阵图

热门文章

  1. 【操作系统】请写出最多允许4人同时进餐的哲学家进餐问题的算法(视频中的代码有点错误)
  2. 蓝桥杯 单片机原理及应用-试题汇总及答案
  3. 全都上市了又能怎样?网贷一人功成万骨枯。。。
  4. 5-13 日K蜡烛图
  5. 全球与中国佐米曲普坦鼻喷雾剂市场深度研究分析报告
  6. FIT2CLOUD飞致云发布开源Linux面板项目1Panel
  7. 实验三 图像复原(源代码一站式复制粘贴)
  8. delphi 自定义控件_Delphi中的自定义组件开发
  9. ASD系列开关柜综合测控装置 安科瑞 时丽花
  10. mysql 监控指标