最近我家不知为啥,pppoe拨号基本上每天晚上都会断一次,而重连之后由于ip地址变更,6to4的tunnel就中断了,一次两次就算了,每天都一次的话就不能靠手动,等靠自动化来维护。

参考:

https://wiki.mikrotik.com/wiki/Manual:Scripting-examples

https://gist.github.com/pklaus/960672

最开始是打算看看RouterOS能不能在接口启动之后触发运行一次脚本,但是ppp的profile里面的那个up down的scripts触发并没有效果(或许是我用法不对?)于是只能换一种思路,定时检查ip有没有变更,如果变更了,就触发一次配置更新。

两个脚本大概是这样:

脚本check_ip_change:检查ip有没有出现变更:

:global currentIP;
:local newIP [/ip address get [find interface="wan"] address];
:if ($newIP != $currentIP) do={
 /system script run update_sit;
 :set currentIP $newIP;
}

脚本update_sit:执行更新interface属性以及向tunnelbroker通知客户端节点地址变更:

local ipaddr
local users "someuser"
local key "somekey"
local tunnelid "sometunnelid"
:set ipaddr [/ip address get [/ip address find interface=wan] address]
:set ipaddr [:pick $ipaddr 0 ([len $ipaddr] -3)]
/interface 6to4 set sit1 local-address=$ipaddr
/tool fetch url="https://$users:$key@ipv4.tunnelbroker.net/nic/update?hostname=$tunnelid&myip=$ipaddr" mode=https keep-result=no

然后定制每分钟执行一次check_ip_change,然后在下次ip地址变更之后,就可以在1分钟内完成自动修复了。

参考:https://my.oschina.net/CandyMi/blog/500882

首先,你需要一个公网的ipv4地址,至少是能ping通的,那种能ping得到但是在防火墙后面的情况,我也没试过,这里就不多说。

以下是步骤:

1:前往https://www.tunnelbroker.net/注册一个账号,操作过程不详述;

2:登陆成功后在左侧选择新增一个tunnel

在ipv4的节点上填写你的ipv4地址,截图我是直接扒原博文的,看来他是已经搭好了tunnel再去访问的

根据你的链接速度来选择对应的服务器,选好后create tunnel就可以完成创建了。

3:完成tunnel的创建,接下来就是配置,在example configurations页可以选择大部分系统的配置命令,选择mikrotik的,可以直接给出配置的命令,方便的很。

到此,RouterOS已经能得到一个/64的地址块,可以用这个地址块来分ipv6给内网的设备了。

4:现在你手里已经有了一个/64的地址块,需要注意的是分配给你的地址块和tunnel的客户端地址不属于同一个/64地址块,tunnel的信息页面上有加粗标识,不要搞混了,Routed IPv6 Prefixes才是给子网用的。

在/ipv6/pool新增一个地址池,名字随便起一个,比如说sit,然后把你得到的这个/64地址块拷进去,保存。

5:然后就可以新增一个ipv6的dhcp服务器,pool选择sit,选好应用的接口,至此,RouterOS就可以承担dhcp服务器的作用了,给客户端分配公网的ipv6地址。

6:最后,在/ipv6/route中添加ipv6的默认路由,然后RouterOS以及下面的整个子网都可以访问ipv6网络了。

SMB自从openwrt的barrier_breaker对ipv6的支持变得非常好之后,开始对自己房间的网络更新到ipv6。

不得不说,ipv6的本地地址是个好东西,这个fe80开头的地址,由于继承了MAC地址的唯一性,所以可以直接使用而不会产生冲突。这时候,使用ipv6就不需要考虑ipv4地址是否已经配置这种问题,真正的即插即用,无需配置。

这种情况下,只要开机之后网卡起来了,SSH就能连通,过去把机器的网络配置弄错导致连不上的问题就再也没有了。

于是渐渐的将链接迁移到ipv6上。而骨干路由用的是石像鬼的固件,很遗憾,石像鬼对ipv6基本上没有支持,于是只能用在我的房间里面了。

既然SSH换过去了,Samba也自然得升上去,切换成ipv6。

经过了一番google,找到一个方法:

使用一个特别的dns服务器,将域名解析成ipv6地址,由于smb能够在ipv6上工作,这就能通过一个折中的办法,来达到访问ipv6的SMB服务器。

然而,这种办法相当的不便,因为该服务器为整个互联网服务,这意味着你必须连接到外部网络才能使用他们的服务,为毛我用自家的服务还非得跑出去一趟不可?网络延迟不说还要经一次GFW。

 

也考虑过在OptenWrt上自行设置 DNS解释记录,但是dnsmasq似乎不能处理ipv6的本地 hosts记录,于是最后还是放弃了使用ipv6。