前言
这篇文章并不是Anyconnect系列将要写的文章里面的入门教程,而是最后一步,Ocserv的进阶应用(
本文章适用的环境(要求):
- 路由器/路由器下的DHCP/静态IP客户端可以正常使用ipv6上网
- 路由器获得的公网IPv6是以(光猫桥接)路由器pppoe拨号的形式分发的
- 路由器具有公网IPv4
- 有在没有IPv6的地区,获取IPv6的需求
- 路由器已安装ocserv服务端,并可以手动修改配置文件及执行shell命令
正文
众所周知(强行),电信宽带会强制48小时重新拨号。经过我的测试,重新拨号之后,ipv4会变,ipv6也会变,而ocserv里面的ipv6配置是固定的设置。
如果路由器获取到的ipv6变了,而ocserv的配置没有修改,连接anyconnect获取到的ipv6是无效的(除非你用本地ipv6,此处不作讨论)
还是讨论一下吧,本地ipv6不能被公网访问,而分配的公网ipv6则能被公网访问。所以能用公网就尽量用公网。
如何实现重新拨号后修改配置
答:(此处)使用openwrt的hotplug事件处理
众所周知(不知道的自己百度),当openwrt接口上下线的时候会触发hotplug事件,触发hotplug事件的时候,会执行一系列hotplug的脚本,这些脚本存放于:
/etc/hotplug.d/iface/
所以,现在我们需要编写一个hotplug脚本,在wan接口重新拨号的时候,自动修改ocserv配置文件,并且重启ocserv使配置生效
所以,脚本写好了,用就行了嘛。将以下代码复制,修改, 修改 , 修改,然后放置于hotplug文件夹下,就完事了。
#!/bin/bash # ifup为端口上线时事件的类型 [ "$ACTION" = ifup ] || exit 0 # 请将此处的wan修改为实际的wan接口名(不带pppoe的短的那个) [ "$INTERFACE" = wan ] || exit 0 # 通过获取ipv6的API来获取路由器当前的ipv6 ip=$(curl ipv6.api.rw) # 替换ocserv配置文件 # 60请修改为大于等于ISP分配给你的ipv6后缀的数字 # 请修改/etc/ocserv/ocserv.conf为你的ocserv配置文件所在 sed -i "s/^ipv6-network =.*/ipv6-network = $ip\/60/g" /etc/ocserv/ocserv.conf > /dev/null 2>&1 # 干掉ocserv killall ocserv > /dev/null 2>&1 # 重新启动ocserv ocserv > /dev/null 2>&1 # 非必须,为了知道脚本是否正常运行 echo $ip > /tmp/ip.txt
将以上代码保存命名为 22-ocserv,搞定。
后记
本文是ocserv的进阶应用,具体如何安装ocserv,如何配置ocserv,如何办法/吊销ocserv所使用的证书,这些会在后面的文章逐一介绍,敬请期待。
hso图(并不)

非技术的路过。
可以给我一些好看的壁纸嘛
妹子图好看