-
WR720N 安装 Openwrt–刷机和基本配置
几年前为了出差方便,买了一个TP-Link的便携式路由器,型号是WR720N V3.带两个网口,还带一个USB口,支持USB网卡使用3G网络。 后来因为家里的无线覆盖有死角,所以就用这个迷你路由器覆盖死角,一直用到现在。 本着折腾的心态,一直想给这个WR720N装上Openwrt,之前官方一直没有支持,但是似乎有一些牛人在网上流传一些自己编译的版本。不过好像刷机还是有点麻烦,就一直没有尝试。直到看到网上林国锋的这篇文章,才知道官方已经支持了WR720N了,非常惊喜,我猜想为什么官方会支持这个型号的路由器,可能主要还是因为它恰好带了一个USB口吧。这样一来,仅仅4M的flash空间再也不是问题,可以折腾的空间变得异常的辽阔。 于是还是参考林国锋的这边文章,给我的WR720N刷了机,基本上就是按照他文章里面的内容来操作的.流程其实也很简单,其实openwrt网站上的文档系统做的已经非常好,也可以直接参考openwrt上的操作流程。 第一步:下载专用固件 目前openwrt的最新版本15.05的Chaos Calmer已经支持WR720N.所以我们可以下载最新的版本(我的WR720N还是用的老版本的14.07的Barrier Breaker,还没升级到最新版本) http://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/openwrt-15.05-ar71xx-generic-tl-wr720n-v3-squashfs-factory.bin 第二步:升级固件 在TP-Link自带的管理网页上(应该是192.168.1.1?)提供了选项进行固件升级,看起来就跟下面的图类似(盗图自林国锋). 选择下载下来的固件,然后点击升级之后,WR720N就进入了刷机,过程需要多长时间忘记了,那么依然盗用参考林国锋的描述,大概一两分钟吧,升级就完成了。 第三步:配置无线 升级完成了,默认无线是没有打开的,我们需要首先通过网线连上路由器,然后telnet上去打开无线。 刷机过程大概一两分钟,路由重启后使用 @telnet@ 命令连接路由 telnet 192.168.1.1 默认应该是不用帐号密码的,如果需要就是admin。接着就是开启无线,命令 # vi /etc/config/wireless 删除 @option disabled 1@ 即可 修改密码并开启ssh # passwd 输入两次密码即可,现在重启 # reboot 第四步:设置拨号上网 如果没有记错的话,更改了password之后,openwrt的ssh服务就自动开启了,等到路由器重启完成之后,就可以使用ssh通过无线连接上WR720N了。自然接下来需要让路由器连接上外网(不然的话,这样的路由器有个鸟用?。。)我家的光猫没有设置路由模式,所以我的WR720N需要自己拨号上网,那么可以按照下面的方法来操作。如果openwrt路由器是作为二级路由配置的话(openwrt不需要自己拨号,直接被分配了内网IP),那么请不要按照下面的方法操作(配置更简单,但是懒得去搜了,自己去openwrt的官网上搜吧)。 # vi /etc/config/network 将配置改成下面这样的: config interface ‘loopback’ option ifname ‘lo’ option proto ‘static’ option ipaddr ‘127.0.0.1’ option netmask…
-
昨天跑了21公里
最近一段时间,有机会的话,就会在翠屏上上跑跑,一般如果是工作日的话,就会跑一个小圈,大概一圈下来六公里多点。如果是周末的话,会从另外一个条路下来,这样的话,一圈下来大概是8公里多点。上上周和上周的周末,想想要不就凑个整吧,于是从翠屏上再转去将军山走一段,这样一圈下来的话,大概就是10公里多点。 我感觉,10公里的距离,还是能适应的,而且只要早上不是什么东西都不吃的话,反而到了后程,会觉得跑起来更加的轻松。Jacky说他早上一般跑个14-15公里,又一次还跑了二十几公里。我想想,那不就是相当于跑了个半马吗?真是强人,尤其还是这样的强度是每天都跑(最近似乎他脚有点受伤,在休息)。有时也想想,我能不能也跑个半马?感觉有点悬。 昨天早上跑步的路上,突然想,要不就试试吧?看看什么样的情况,能不能跑下来,跑下来的话时间是多少?于是就这么愉快的决定了。翠屏山加将军山绕了一圈,差不多11公里,然后剩下的部分是在南航的操场上跑圈。前10公里其实还好,而且因为早上是吃了早饭出来的,明显感觉到体力比之前不吃早饭跑要有劲的多,进入状态也早,连上山爬坡的时间都缩短了。后面的11公里,在操场绕圈的,实际上还是蛮烦的,主要是太枯燥了,完全没有在山上跑有趣。而且一想要跑二十几圈,首先就有点遥不可及的畏惧感。总之,我觉得在操场跑圈,除了锻炼身体这个好处之外,真的是一件特别无趣的事情。好歹还是坚持下来了。我发现,跑二十公里,我的体力还是能跟的上的,回来之后查看配速,后面的10公里,基本上配速都还能保持稳定。可是跑到最后的时候,膝盖有点吃不消了,跑完之后,感觉就跟瘸了一下,左腿大小腿连接的那个地方,每走动一次,都疼的不得了,估计还是姿势不正确。 不管怎么样,还是坚持下来了,虽然时间花了2个小时2分钟,还是蛮高兴的,毕竟不管快慢如何,还是能跑完半马的! 期待明年继续锻炼!
-
补记一下2016年初的这场雪和低温
前两天下雪了,天气预报还预警了,表示可能会有暴雪。大家都还蛮期盼的。按照一个同事转的段子的说法是,南京人民等待暴风雪的心情是:像一个初恋的少女等待男友,怕他不来,又怕他乱来。。。 可是,雪虽然是来了,但是并没有期待中的暴雪,20号夜里下了一夜的雪,没怎么积下来,21号很快又化掉了,本以为不会再下雪了,结果22号又下了一下午带一夜的雪,但是第二天一看,虽然积下来了,但是规模也不大。所谓的暴雪,真的没乱来,但是也没来。。 但是,天气预报中的预警的另外一项,却是扎扎实实的来了,一点没犹豫,那就是降温。天气预报号称要降到零下10度,结果今天真的就到了零下10度。在我的记忆中,好像除了在斯德哥尔摩,在南京或者老家的冬天,就没有经历过这么低的气温。对零下10度的体验是,真的冷,屋外就不是人待的地方。今天出去的时候,还好带着帽子,脑袋和耳朵是没问题了,但是忘了带手套,结果发现双手裸露在空气中就一会儿,那都是一种无法忍受的痛苦,而且冷风直接呛得几乎不能开口说话。江苏这边的人还真是没有见过这种世面,真的是有点吃不消。还好这个天气就持续两三天,很快就要回温了。快暖和起来吧。 贴几张去翠屏山赏雪的照片,翠屏山上的雪还是蛮好看的。昨天大早上跟晓舌去看的时候,满山的大雪(虽然没那么大),还发现一个老外,就穿一件短袖和短裤,在翠屏山上跑步!真是服了。
-
成为房奴
经过了这么多年,终于不可避免的成为了房奴。 现在还无法预料到生活会发生什么样的变化,但是,今天,下雪了。。
-
2015-12-25
Merry Christmas ! 2015年的圣诞节到了。昨天跟同事交流,发现我居然没给果果准备圣诞节的礼物,好像大家都会给小孩子准备礼物,没有失败的感觉,只是感觉又点out了。本来就没觉得圣诞节是我们应该过的节日,这个日子跟中国人有半毛钱关系呢?不过大家都赶这个热闹,于是自己就out了。 圣诞到了,表示元旦也就是一个礼拜后的事了,当然2015眼瞅着就要over了。按照惯例,每年的这个时候都会感慨一下时光飞逝,年华老去。今年想了一想,确实还是这样的感受。没什么成绩,但是时间已经又没了,一年转眼就又到头了。能够看的到的变化,一个是爱立信的颓势越来越明显,另外一个就是果果的成长还是很快的。 anyway,又是一个圣诞节了,过几天又是一个元旦节。 双节愉快吧。
-
Openwrt使用DNSPod服务做动态域名解析(ddns)–一些优化
一个基本的使用DNSPOD提供的API来实现ddns的脚本已经能够工作了,这是一个基础的脚本,实现的是最基本也是最直接的工作。 除了基础功能的需求,我的wr720n上运行脚本之后,发现了我还有一些其他的额外的需求,脚本需要针对这些需求j来做一些改进和优化。 这些额外的需求是: 我的wr720n上安装了多播的软件(我设置的是3播),所以wrt720上会同时获取3个外网地址。由于有负载均衡,每次访问api网页的时候,可能会从3个接口中的任意一个出去,这实际上是没必要的,因为这会导致多次调用脚本的时候,实际上是一直在三个ip中切来切去。我希望每次更新ip的时候,访问api网页都是通过同一个网络接口出去的。 脚本中使用的验证机制是用户名+密码的机制,这个机制比较的原始。而DNSPOD是支持使用token的机制的。使用token机制看起来会比较的更加安全一点。 执行脚本的时候,先检查一下当前的ip地址跟DNS解析出来的ip地址是否一致,如果不一致才更新ip地址。 每次向服务器更新ip的时候,都要通过调用两次api接口分别用于查询domain_id和record_id,而这其实是一个比较费时间的过程。实际上domain_id和record_id对于某个特定的域名来说是固定的,就是说只要查询一次,下次直接使用就可以了。可以做优化缓存domain_id和record_id。 针对第一个需求,其实使用的方法也很简单。因为脚本使用curl命令去访问DNSPOD的API的,而curl命令是支持指定特定的网络接口的,添加一个选项”–interface xxx”就可以了。wr720n上,比如我希望每次访问api去更新ddns的ip的时候使用”pppoe-VWAN1″接口,那么脚本中的dnspod_update_record_ip()函数可以修改为: dnspod_update_record_ip(){ options=”login_email=${ACCOUNT}&login_password=${PASSWORD}”; curl -k -s –interface pppoe-VWAN1 https://dnsapi.cn/Record.Ddns -d “${options}&domain_id=${DOMAIN_ID}&record_id=${RECORD_ID}&sub_domain=${RECORD_NAME}&record_line=${RECORD_LINE}”; 针对第二个需求,其实解决方法也很简单,参考DNSPOD的API的官方手册就可以了。首先要做的是在DNSPOD的账号里面申请一个token.申请成功之后,在DNSPOD的账户中能够察看到token_id和token.然后在脚本中将所有的使用login_email和login_password组合的地方改为下面的格式即可: login_token=token_id,token 针对第三个需求, 确定DNS解析出来的域名的ip地址的方法,可以使用”nslookup”命令查询,这个命令能够返回查询域名的当前解析出来的ip地址。 而确定当前路由器上的ip地址的方法主要有两种。 一种是网络上有一些提供检测ip地址的网页,只要访问这些网页,就能够返回当前访问者自己的ip地址。 一种是直接使用ifconfig(或者ip命令)命令直接查询openwrt本机上的外网ip地址。 这两种方法各有优势,第一种方法的优点是无论路由器的ip地址是怎么配置的,总能够得到路由器的ip地址,缺点是不能够保证网络上提供ip地址解析服务的网站一直都能提供服务,说不定哪一天就停止服务了。而且是通过网络查询,经过实际测试,速度比较慢。 第二种方法的优点是速度快。但是缺点是,在路由器上,必须配有外网地址。如果openwrt是二级路由器之类的,也就是只配有”192.168.x.x”这样的机器,那就不行了,使用本机的ifconfig命令不能够直接获取到外网的ip地址。 我的wr720n机器是直接通过pppoe连接到外网的,所以是能够通过本机命令获取ip地址的。所以我使用了第二种方法。在脚本中增加下面的一个函数dnspod_is_record_updated(): dnspod_is_record_updated(){ #Format is “Address 1: 117.89.152.129″ record_ip=`nslookup home.proudj.com |tail -n 1 |cut -d ” ” -f 3`; # #Format is ” inet 117.89.152.129 peer 61.155.116.217/32 scope…
-
Openwrt使用DNSPod服务做动态域名解析(dans)–基本功能
ddns的用处自然不用多说了。凡是在家里跑的什么盒子啊,板子啊的,都希望给他们一个域名,这样从外网就能直接访问机器上的各种服务和资源了。家里面的网络,一般都是动态分配IP的,ISP会不定期的改变分配给我们的IP,那么这就需要机器定期的向ddns服务器更新家里面的实时的IP,从而保证域名能够解析到正确的IP地址上。 有很多的ddns的服务都可以使用,花生壳,3322,还有国外的一大堆如no-ip这样的免费ddns的服务可以使用。但是有一个限制就是如果使用他们的免费的服务的话,分配给你的域名一般是服务商自己的二级域名,比如使用3322的服务的话,分配给我的域名就是像”proudj.3322.net”这样的域名。如果想给家里的机器分配一个自己手上拥有自己的域名的二级域名,比如我想给家里的路由器分配一个我自己的proudj.com这个域名的二级域名home.proudj.com,那么一般的服务商要么不支持,要么要收费。 有没有免费的方案呢?我的proudj.com这个域名是在DNSPod做解析的,Google了一下发现,实际上DNSPod是开放了ddns的API的。也就是说是支持ddns的功能的。但是我对如何使用DNSPod的API根本不了解,所以就开始搜搜看有没有一些现成的客户端。网上有不少客户端,基于各种语言实现的都有,但是因为我是想用在WR720N上,就想用shell脚本模式的,一来openwrt上本来就自带shell环境,二来如果是Python这样的客户端,不知道运行起来,WR720N这样的32M内存是不是吃得消。于是在网上搜索shell脚本的实现,实际上网上也有不少版本的shell脚本,但是跑在我的openwrt上,总是会有各种各样的问题。之前因为脚本内容比较长,根本就没看怎么实现,这几天大概看了一下别人的脚本的实现,发现要实现一个简单的DNSPod的ddns的客户端,实际上很简单。 需求: 给家里的openwrt路由器分配一个叫做”home.proud.com”的域名。这样,以后访问路由器的服务和资源的时候,就不需要知道路由器当时的IP地址了,可以直接通过域名进行操作。 实现原理: 在openwrt本机访问链接“https://dnsapi.cn/Record.Ddns”,DNSPod服务器端在收到这个连接请求后会记下访问者的IP地址并用它来更新域名的IP地址。 使用工具: 命令行的curl工具。 curl可以作为http的客户端,去访问链接,还能够返回服务器的相应内容。是很方便的一个命令,在Openwrt上需要单独安装。 所以,实际上DNSPod上使用ddns是非常简单的。只要访问指定的链接就OK了!仅此而已,其他什么事情都不用做了!! 但是,什么都有个但是。这件事情说来确实简单,不过在使用上面的链接的时候,我们还得输入几个参数。这是很容易理解的,既然原理是通过访问api提供的链接,而DNSPod服务器通过解析发送者的IP来确定我们的IP。如此而已,那么我们显然要在访问这个链接的带上上指明了这个解析出来的IP是给哪个域名使用的,不是么?要不然DNSPod是解析出来了我们的IP,但是它哪里知道这个IP是用来更新哪个域名的呢? 那么,查一下DNSPod的API,就会发现实际上访问上面的链接的完整的格式是如下: curl -X POST https://dnsapi.cn/Record.Ddns -d ‘login_email=api@dnspod.com&login_password=password&format=json&domain_id=2317346&record_id=16894439&record_line=默认&sub_domain=www’ 上面的链接中有几个重要的参数: login_email/login_password: DNSPod的账户的用户名和密码,访问上面的链接,是需要做验证的,你必须要证明自己是某个域名的拥有着才行,要不然的话,大家可以随便随便更新,那有人恶性的想篡改别人的域名咋办呢。 domain_id/record_id: 如果我想访问上面的链接,目的是home.proudj.com这个域名更新IP。那么能想到的最简单的方法就是在链接里面把这个域名作为一个参数直接带上。但是,API没有采用这个方式,而是采用了domain_id/record_id的方式。我们在DNSPod可能托管了好多个域名解析,那么每一个域名都有一个唯一的数字,就是domain_id(代表proudj.com)。那对于某个域名,我们可能设置了好多的二级域名。那么对于每一个二级域名都有一个唯一的数字,就是record_id(代表home)。所以实际上可以看出来,domain_id+record_id就能够代表上面的”home.proudj.com”这个完整的二级域名了。 那么,怎么获取domain_id和record_id呢,其实也很简单,还是需要访问API提供的链接就行了,不过是不同的链接。 简单的流程就是,通过获取用户的域名列表能够得到属于你的所有的域名,同时也就能得到每个域名的id,查找到目标域名的domain_id之后,通过另外一个链接查找目的域名的record,能够找到所有的record。得到目的record_id之后就能够调用上面的链接更新IP啦! 下面的这个脚本就是简单的一个实现(这个脚本是 别人抄来的,但是找不到作者了): #!/bin/sh # usage: ./dnspod.sh ddns.conf #contents of file “ddns.conf” defines some variables which is like below: #ACCOUNT=”XXX” #PASSWORD=”XXX” #DOMAIN=”XXX” #RECORD_LINE=”默认” if [ “$#” != 1 ];then echo “param…
-
陪果果
由于晓舌的要求,他外婆上周带他到南京来了。 这一周陪伴果果的时间还是满长的。晓舌调了岗,工作日也能休息,我也顺势就休个假,我们俩就能带果果出去转转。 算一算这周下来,也去了好几个地方,周二去了红山动物园,周五去爬了翠屏山,昨天去早教班补了一节课,今天还去了将军山,日子过的还是相当的充实。 整体上感觉,跟爸爸妈妈在一起,果果玩的还是很开心的。 总体上感觉,果果依然还是那样的皮,是一个很皮以及及其好动的小孩子,但是作为老爸老妈,感觉除了皮之外,果果还是不错的。 但是,这一段时间果果的睡眠一直不好,夜里面经常哭醒,怎么哄都哄不住,有两天的夜里,闹了一个多小时。这是之前一直都没有的情况。 原先的果果,除了月子里的两个月以外,睡的都满不错的。 不知道是咋情况,再留待观察观察吧。 贴几张今天去将军山拍的照片。 果果看几个大妈在投篮,好奇的不得了。 玩了一个多小时,再也支撑不住,倒下了。
-
惊闻lx去世了
今天上午听dj说起,感觉还很诧异,后来跟Wcy联系之后,再次间接印证了这个事实。下午在扬中的班级群里面,这个事情得到了最终的确认。昨天下午已经病逝了,应该是胃癌。感觉很震惊,虽然在上学的时候,我们之间就没有什么接触,在我的印象中,她写的作文很有想象力,虽然似乎不太受老班赏识,但是对于我还是印象比较深刻。而且,这个当年我们班的班花,Wcy,jjy,配子和亮子等人心中的美丽女神,突然就这么走了,实在是让人感到非常的惋惜。晓舌说,这就叫红颜易逝吧。 跟汪二要了lx的微博,wcy也要了去,说是在上班的时候,躲在厕所里苦的稀里哗啦的。虽然他跟lx的生活基本上也没有什么交集,不过lx依然是他心中的女神以及精神的支柱。他对lx的感情,我是直到大四快毕业的时候在一次聚餐结束之后才从他的口中知道,然后他说她对lx,从高中时代就已经爱的无可救药。之前一直是在心中默默的爱着,深怕别人知晓,自从大四那次暴露之后,wcy也不再掩饰,逢人便说lx。我有点不是很理解他的这份感情。不知道这份单相思的情感,到底为什么对他来说这么重要。 当年lx的爱慕者,如今或为人父,或为人夫,听到这个消息,我不知道他们心中除了震惊和惋惜,是不是还有一些的不舍呢。 晚上翻看了lx的微博,14年1月6号她去医院检查算起,到5月26号离开,整整4个月。一开始看着她的微博,有一种很怪异的感觉,明明已经知道她已经离开,但是看着她发的文字,似乎她还是在网络的另一头活生生的存在,敲击着键盘,发表着感慨。似乎刚刚检查出病的那些日子,还经常的发着微博,她似乎以为自己只是重度的胃溃疡,突然2月初之后很长的一段时间都再也没有更新,再后来在三月底发了最后一个微博,没有提及任何关于生病的事情。之后就再无微博更新了。对于我来说,这个将近两个月的空白,想起来感觉满恐怖的。不知道这两个月里她经受了怎样的痛苦,是否得知了自己的病情,又是如何去面对的。 lx的离去,对于她父母的打击,无疑是终身都无法弥补的吧。人生的打击,可能来的越吃,越难以招架吧。原本平静幸福的生活,再也回不去了。