之前使用了nat6方案和x3c8021x实现了校园网上网和IPv6连接;但实际使用时经常出现莫名奇妙的问题。IPv6状态要么是无法连接网络,要么是无法连接Internet;经过研究,发现大概是自启动项的问题。

P.S. luci (web管理界面)里的startup自启项管理经常不起作用,估计是uci仅仅是enable了启动项而没有真正把启动项添加进自启动目录rc.d,可能是没有规范各程序的自启动命令);所以,以下操作都是SCP+SSH(telnet)的操作

类似于linux的启动方式,openwrt的启动主要有两个来源,/etc/rc.d/ 和 /etc/rc.local

一  /etc/rc.d/ 目录是一些 链接,链接到/etc/init.d/command 然后链接自身的文件名格式例如 S50telnet,链接到 /etc/init.d/telnet,表示启动顺序为50,解析/etc/init.d/telnet文件;(具体解析方式可能与/etc/rc.common 有关,里面定义了start,stop,restart,boot等,所以sh文件里的start,boot过程都可以被识别然后被启动);贴一个例子

S50telnet :

link to /etc/init.d/telnet

/etc/init.d/telnet:

#!/bin/sh /etc/rc.common
# Copyright (C) 2006-2011 OpenWrt.org

START=50

USE_PROCD=1
PROG=/usr/sbin/telnetd

start_service() {

#……
   }

二 /etc/rc.local 文件,类似sh,直接写即可

对于openwrt这种系统来说,启动顺序非常重要。在校园网中,有一些基本的逻辑顺序。比如x3c认证应该在network初始化完毕后开始,至少得到mac之后;IPv6虽然可以直接获取到地址(NDP/cache?)但没有通过802.1x认证,对于交换机来说端口仍然是down的,除认证包外数据包不通,所以nat6应该在802.1x认证之后开始。不过Lan口的IPv6地址和Wan6的地址可以提前获取/分配(DHCPv6),这对于nat6来说又是一个前提。个人理解nat6的核心应该在lan-wan的路由表上,所以应该在一切外围工作完成后开始。最后,解决方案:

/etc/init.d/nat6:

#……

# Maximum number of attempts before this script will stop in case no IPv6 route is available
# This limits the execution time of the IPv6 route lookup to (MAX_TRIES+1)*(MAX_TRIES/2) seconds. The default (15) equals 120 seconds.
MAX_TRIES=150
#default 15;change to 150 增大尝试次数,相当于容错
 
# An initial delay (in seconds) helps to avoid looking for the IPv6 network too early. Ideally, the first probe is successful.
# This would be the case if the time passed between the system log messages "Probing IPv6 route" and "Setting up NAT6" is 1 second.
DELAY=15
#default 5 change to 15 增大延迟,相当于延迟启动

#……

boot() {
        [ \$DELAY -gt 0 ] && sleep \$DELAY

     #忽视这个转义\,希望cnblogs关掉mathjax的inline单\$转义
         pre_x3c
         #ADD 802.1x auth preparation 在延迟之后加了一句

#注意boot的引导很早,必须延时sleep

#……
         exit 0
}

pre_x3c()  {
    if `pgrep x3c8021x > /dev/null 2>&1`; then
        logger -t NAT6 "Preparation ready;x3c8021x is already running"

else

(/etc/init.d/x3c8021x start)
        logger -t NAT6 "Start x3c8021x;x3c8021x is now running"
    fi
}

#用的x3c8021x的status脚本,判断x3c是否运行

#另外logger & logread 这两个命令很好用

链接S55nat6,同前

测试效果还可以;不过要有耐心的等一下,IPv6发现可能比较慢。前提是wan6获得真正的IPv6地址(全球单播?可以去bgp.he.net查)

#EOF

Openwrt笔记-IPv6与启动顺序的更多相关文章

  1. clusterware启动顺序——OHASD

      Clusterware启动顺序 [root@ebsdb1 etc]# crsctl check crs CRS-4638: Oracle High Availability Services is ...

  2. .net core mvc启动顺序以及主要部件2

    原文:.net core mvc启动顺序以及主要部件2 前一篇提到WebHost.CreateDefaultBuilder(args)方法创建了WebHostBuilder实例,WebHostBuil ...

  3. linux init 启动顺序

    redhat init大致启动过程 第一个运行的程序是/sbin/init,该文件会读取/etc/inittab文件,并依据此文件来进行初始化工作.比如在设定了运行等级 “:id:3:initdefa ...

  4. [CrunchBang]修改win+ubuntu 双 系统菜单的 启动顺序 引导

    说到启动就不得不说GRUB,Linux下大名鼎鼎的启动管理工具(曾经的LILO已经风光不再),当然现在已经是GRUB2了,GRUB2和GRUB最重要的区别就是,GRUB存放系统启动信息的文件为/boo ...

  5. linux服务开机启动顺序

    今天遇到了一个问题,我们写了一个服务脚本A,该服务需要优先于mysql启动.脚本是从其他地方拷来的模板,前面的默认配置没改,只是实现了自己的功能.写完,chkconfig A on,reboot,启动 ...

  6. 设置U盘为第一启动顺序

    本文转载:http://u.diannaodian.com/Article/1004.html 盘安装系统的首要步骤就是设置U盘为第一启动顺序.下面电脑店官网就来说说到底如何来设置U盘启动顺序吧.   ...

  7. LINUX启动顺序

    Linux 启动顺序: 1. BIOS自检 (服务器硬件启动的第一步,坑定的啦) 2. 运行系统内核并检测硬件(这个是看系统了,redhat等相关版本是通过/boot/vm进行启动 vmlinuz) ...

  8. Android学习笔记——Activity的启动和创建

    http://www.cnblogs.com/bastard/archive/2012/04/07/2436262.html Android Activity学习笔记——Activity的启动和创建 ...

  9. openstack学习笔记一 虚拟机启动过程代码跟踪

    openstack学习笔记一 虚拟机启动过程代码跟踪 本文主要通过对虚拟机创建过程的代码跟踪.观察虚拟机启动任务状态的变化,来透彻理解openstack各组件之间的作用过程. 当从horizon界面发 ...

随机推荐

  1. 关于Lua优质文章链接

    Lua 语言 15 分钟快速入门(博客-伯乐在线) http://blog.jobbole.com/70480/

  2. Atitit 发帖机实现(4 )- usbQBM1601 gui操作标准化规范与解决方案attilax总结

    Atitit 发帖机实现(4 )- usbQBM1601 gui操作标准化规范与解决方案attilax总结 1.1. 根据gui的类型使用不同的gui调用api1 1.2. Script化1 1.3. ...

  3. 基于 flow.ci 实现 PHP 项目自动化持续集成

    高效程序员的习惯之一--让开发流程自动化.Automating shapes smarter future. 这是一个关于如何快速实现 PHP 项目自动化持续集成的快速指导.无论你是否使用过持续集成, ...

  4. Web应用安全之文件上传漏洞详解

    什么是文件上传漏洞 文件上传漏洞是在用户上传了一个可执行的脚本文件,本通过此脚本文件获得了执行服务器端命令的功能,这种攻击方式是最为直接,最为有效的,有时候,几乎没有什么门槛,也就是任何人都可以进行这 ...

  5. java持久层框架mybatis如何防止sql注入

    看到一篇很好的文章:http://www.jfox.info/ava-persistence-framework-mybatis-how-to-prevent-sql-injection sql注入大 ...

  6. poj 2777(线段树的节点更新策略)

    /* 之前的思想是用回溯的方式进行颜色的更新的!如果用回溯的方法的话,就是将每一个节点的颜色都要更新 通过子节点的颜色情况来判断父节点的颜色情况 !这就是TLE的原因! 后来想一想没有必要 !加入[a ...

  7. maven -- 学习笔记(二)之setting.xml配置说明(备忘)

    setting.xml配置说明,learn from:http://pengqb.javaeye.com,http://blog.csdn.net/mypop/article/details/6146 ...

  8. 修改NLS_DATE_FORMAT的四种方式

    一. 在用户环境变量中指定(LINUX) 在用户的.bash_profile中增加两句: export NLS_LANG=AMERICAN ---这一句必须指定,否则下一句不生效.export NLS ...

  9. spring源码分析之spring-core-io

    1. 看一下源码整体结构: 抓住主要点Resource.ResourceLoader和ResourceEditor 其中Resource作用 Interface for a resource desc ...

  10. Jeet – 先进,直观,灵活的 CSS 网格系统

    Jeet 是一个先进的,直观的 CSS 网格系统.通过使用预处理器的强大功能,我们现在可以通过实际分数(或者浮点数)来生成一个基于百分比宽度和间隔的网格.让你用更少的代码,更快的速度构建页面布局. 您 ...