Openwrt笔记-IPv6与启动顺序
之前使用了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.orgSTART=50
USE_PROCD=1
PROG=/usr/sbin/telnetdstart_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与启动顺序的更多相关文章
- clusterware启动顺序——OHASD
Clusterware启动顺序 [root@ebsdb1 etc]# crsctl check crs CRS-4638: Oracle High Availability Services is ...
- .net core mvc启动顺序以及主要部件2
原文:.net core mvc启动顺序以及主要部件2 前一篇提到WebHost.CreateDefaultBuilder(args)方法创建了WebHostBuilder实例,WebHostBuil ...
- linux init 启动顺序
redhat init大致启动过程 第一个运行的程序是/sbin/init,该文件会读取/etc/inittab文件,并依据此文件来进行初始化工作.比如在设定了运行等级 “:id:3:initdefa ...
- [CrunchBang]修改win+ubuntu 双 系统菜单的 启动顺序 引导
说到启动就不得不说GRUB,Linux下大名鼎鼎的启动管理工具(曾经的LILO已经风光不再),当然现在已经是GRUB2了,GRUB2和GRUB最重要的区别就是,GRUB存放系统启动信息的文件为/boo ...
- linux服务开机启动顺序
今天遇到了一个问题,我们写了一个服务脚本A,该服务需要优先于mysql启动.脚本是从其他地方拷来的模板,前面的默认配置没改,只是实现了自己的功能.写完,chkconfig A on,reboot,启动 ...
- 设置U盘为第一启动顺序
本文转载:http://u.diannaodian.com/Article/1004.html 盘安装系统的首要步骤就是设置U盘为第一启动顺序.下面电脑店官网就来说说到底如何来设置U盘启动顺序吧. ...
- LINUX启动顺序
Linux 启动顺序: 1. BIOS自检 (服务器硬件启动的第一步,坑定的啦) 2. 运行系统内核并检测硬件(这个是看系统了,redhat等相关版本是通过/boot/vm进行启动 vmlinuz) ...
- Android学习笔记——Activity的启动和创建
http://www.cnblogs.com/bastard/archive/2012/04/07/2436262.html Android Activity学习笔记——Activity的启动和创建 ...
- openstack学习笔记一 虚拟机启动过程代码跟踪
openstack学习笔记一 虚拟机启动过程代码跟踪 本文主要通过对虚拟机创建过程的代码跟踪.观察虚拟机启动任务状态的变化,来透彻理解openstack各组件之间的作用过程. 当从horizon界面发 ...
随机推荐
- fir.im Weekly - iOS/Android 应用程序架构解析
假如问你一个iOS or Android app的架构,你会从哪些方面来说呢? 本期 fir.im Weekly 收集了关于 iOS/Android 开发资源,也加入了一些关于 Web 前端方面的分 ...
- 【java并发】传统线程技术中创建线程的两种方式
传统的线程技术中有两种创建线程的方式:一是继承Thread类,并重写run()方法:二是实现Runnable接口,覆盖接口中的run()方法,并把Runnable接口的实现扔给Thread.这两种方式 ...
- IDEA开发多项目的示例
前言:慢慢习惯用IDEA了,觉得用起来确实还不错,有VS的感觉,但是缺点就是每次启动慢,如果修改以后反应也需要好久,这方面做得不好.但是职能提示个人觉得要比Eclipse好太多.好了现在我用IDEA来 ...
- mac下网页中文字体优化
最近某人吐槽某门户网站在mac下chrome字体超丑,然后发现虽然现在mac用户越来越多,但是大家依然无视mac下的字体差异,于是研究了下mac下网页中的中文字体,和大家分享. 看了一遍国内各大门户和 ...
- 【博客美化】05.添加GitHub链接
博客园美化相关文章目录: [博客美化]01.推荐和反对炫酷样式 [博客美化]02.公告栏显示个性化时间 [博客美化]03.分享按钮 [博客美化]04.自定义地址栏logo [博客美化]05.添加Git ...
- CSS实现水平垂直同时居中的5种思路
× 目录 [1]水平对齐+行高 [2]水平+垂直对齐 [3]margin+垂直对齐[4]absolute[5]flex 前面的话 水平居中和垂直居中已经单独介绍过,本文将介绍水平垂直同时居中的5种思路 ...
- EntityFramework系列:MySql的RowVersion
无需修改实体和配置,在MySql中使用和SqlServer一致的并发控制.修改RowVersion类型不可取,修改为Timestamp更不可行.Sql Server的RowVersion生成一串唯一的 ...
- 使用Ambari安装hadoop集群
最近需要做些spark的工作,所以弄了几台dell7500就这么准备开始搭建集群,之前用过几台更破的台式机搭建过一次,折腾了半个月之久,终于成功搭建,这次不想走老路,所以网上查了一下,发现一个神器AM ...
- double保持精度,防止小数点后数字的丢失的小方法
一般情况下,输入带小数点的字面值,编译器会把它解析成double 类型. 例如:一个字面值被直接放到代码中,由于带小数点所以,默认值为double类型 输出结果是:1.12345678912345 ...
- SQL Server优化器特性-动态检索
前段时间我写的文章SQL Server 隐式转换引发的躺枪死锁 中有的朋友评论回复说在SQL2008R2测试时并未出现死锁,自己一测果然如此,因此给大家带来的疑惑表示抱歉,这里我就解释下其原因. 回顾 ...