分类 路由器 下的文章

小米路由器 购买到吐槽

从想买到想退

之前玩了1年的 DualWan, 感觉基于 openWRT 的路由器还是很好玩的, 首先它是一个 linux, 是一个在公网上的 linux, 他可以低功耗的下载东西不用关机, 可以建立 DLNA Server, 局域网内音影共享, 可以设立打印机共享, 可以安装 nginx+mysql+php, 可以安装 ruby, 等. 所以很期待小米路由器. 期待它的内存更大, CPU 更高, 期待它的 DLNA 支持字幕, 期待它能提供摄像头驱动, 期待一家大公司背后的软件维护团队.
相信自己从来不会有1圆预约的狗屎运, 就老老实实的等到第一次开放购买, 同事们都去吃饭了, 我等到12点, 点击抢购, 排队1分钟过后, 显示抢到. 等到付款的时候, 犹豫了, 实事求是的想, 它能替代我现在的 DualWan 吗? 没有付款, 去吃饭, 吃饭回来, 想想就当买个玩具算了, 就付款了. 付款过后, 迟迟不发货, 周六去小米路由器论坛逛了逛, 发现论坛上多人都说是 "半成品", 各种功能都没有. 心里很失落, 于是点击了申请退款, 可是他妈的, 刚点2分钟,手机收到短信: 您的路由器已发货..., 发货发了1天多的顺风, 周一上午才到上海. 期间逛了好几次论坛, 期待有托讲讲好的地方, 妈的, 竟然没有. 只好安慰自己, 有硬件, 软件明天会更好.

第一次把玩

再怎么不期待, 还是要打开看看的. 才开纸盒(尼玛, 我的大木箱呢?), 里面有个路由器, 一个充电器. 都不用自己安装了. 插电, 发现路由器声音比较大, 多大呢? 反正比我笔记本声音要大许多许多. 发现 WIFI, 2.4G 和5G wifi 各一个. 连上, 设置密码.
开始查看基本的功能:

  1. 默认的 ip 段 分配的是 192.168.31.*, 不是以前的 192.168.1.1, 所以路由器是
    192.168.31.1 登录. 不过这个可以登录之后重新设置.
  2. 登录的时候, 默认是 小米帐号登录, 还有可选的 管理密码登录, 对此, 我想对路由器的产品经理说, 你脑子里全是屎吗?
    买你家路由器就一定要使用你们家帐号么? 就一定要联网么? 即便如此, 为什么默认不是管理密码登录?
  3. 看到菜单, 我必须要真心的夸一下小米的残品经理, 这菜单做的真不错, 很是间接, 和我 DualWan
    上面看到10几个大菜单不一样,很清爽, 清爽的什么功能都没有...
  4. 点开主菜单: 应用管理. 收到消息 你现在处于管理密码登录状态,管理应用需要用小米账号登录,是否登录. 并且这个地方必须要小米帐号登录, 如果不用的话, 你的应用是看不到的, 也就是说我必须联网, 才能玩我的 LAMP 么? 如果 DLNA 开关, 重新扫描也在这里面, 我必须联网到 xiaomi, 才能观看我路由器上的共享视频么? 尼玛的, 你们也太坏了...
  5. 看到了 UPnP, 没有看到 DLNA, 不过在后台的bin 目录看到了 dlna;
  6. 默认没有开 telnet, 如果要登录, 必须要在 url 后面输入 #!pro/lamp, 然后点击 Start dropbear, 结果,悲剧的是, 点击根本没反应. 这个路径下,点击创建 LAMP sandbox 也是没反应.
  7. 论坛上问, 得知要访问一个专门的 URL 才能开启 ssh, 指想知道这样的隐秘 URL 到底有多少?
    是不是有些就是做后门的? 今天我登录你们的论坛, 你记住了我的 IP, 然后你就悄悄的控制了我的路由器.....
  8. 登录之后, 发现路由器竟然叫 xiaoqiang, 太贱了, 果断改名叫 home;
  9. 搜一下: lighttpd, nginx, mysql, 全找不到, 这那里要是创建 LAMP 的节奏? 不可能什么 web server 都没装啊, 至少管理界面开着呢. 终于找到, 尼玛的, 竟然把 nginx 改名为 sysapihttpd, 放在/usr/sbin/sysapihttpd, 然后把 配置文件改为 /etc/sysapihttpd/sysapihttpd.conf. 去看了下这个配置文件, 里面改的惨不忍睹, 开了好几个端口, 配置了不同的访问策略和路径.
  10. 好吧, 我自己要装 mysql 了, 看了下, ipkg 没装, apt-get, yum 更不可能装了, 装的是 opkg, 直接 opkg update, 失败. 然后看 repo 地址(/etc/opkg.conf), 竟然是一个不存在的URL: http://downloads.openwrt.org/attitude_adjustment/12.09/brcm4709/generic/packages. 看到有 brcm47xx, 就改了, 结果能更新, 却是架构不对, 不能安装, 又改过来. 为什么要给一个不存在的路径? 你们以后要发布到这个路径? 还是你们以后自己建 repo?






- 阅读剩余部分 -

ext3 文件系统报错 bad entry in directory

买一超级便宜U盘: usb 2.0, 512G 40RMB. 直接插电脑, 写入速度1.3 ~ 3.6 M/s.
格式化为 ext3, 快速硬盘检查, 无问题. 接到路由器的USB hub, 开始aria2 文件下载.
arias 配置文件, 及 downloads 目录创建正常.
几分钟后, downloads 目录无法写入, 所有bt下载全部被删除.
telnet 登上去, touch 文件显示: : Input/output error
查看读写权限, 全有, 并且使用root来写入, 排除权限问题.

查看系统日志, 显示:
EXT3-fs error (device dm-0): ext3_readdir: bad entry in directory #5556142: rec_len is smaller than minimal - offset=0, inode=2553887680, rec_len=0, name_len=0

根据google 结果, 修复:
http://www.novell.com/support/kb/doc.php?id=3554036

Situation

At reboot, or mount of an EXT3 file-system, an error similar to the one below is seen:
EXT3-fs error (device dm-0): ext3_readdir: bad entry in directory #5556142: rec_len is smaller than minimal - offset=0, inode=2553887680, rec_len=0, name_len=0

Resolution

This error is caused by a file that has been marked as a directory. This is a non-fatal error and can be fixed by removing the file in question.
1) Mount the file-system in question
2) Locate the file that has been corrupted. The file's inode is the number after "bad entry in directory" Using the example error code the file would be found by typing

find /MOUNT_POINT-inum 5556142

3) Delete the file identified in step two
4) Umount the file-system
5) Check the disk, and check for errors.

fsck/dev/PHYSICAL_DEVICE

6) Repeat step 5. If no errors, the file-system is clean.

Could not get any response

路由器上的网站从 Http 到 Https

http: Hypertext Transfer Protocol
http 协议解决了客户端和服务器端的通信问题, 位于七层网络协议模型中的应用层, 是一个无状态的明文传输协议. 默认使用80端口, 但是可以使用其他端口.
由于使用明文传输, 所以中间人可以截获消息包, 并且修改, 然后还可以假装源, 重新发出去.

https: Hypertext Transfer Protocol Secure
https 是 http 在它的下一层使用 SSL 或 TLS 来加密, 保证传输的安全性. SSL 又分为 SSL record 协议和SSL 握手协议.

由于家里的 IP 地址的80端口被联通封了, 但是443端口是开放的, 所以使用 https 协议能避免端口非80的问题, 比如使用 https://home.tianxiaohui.comhttp://home.tianxiaohui.com:90/ 要好看一点.
既然使用 https, 那就需要证书, 证书可以自己签发, 就比如 12306现在那种, 不过每个浏览器都会弹出一个警告窗口, 告诉用户这个证书不受信任. 另外一种就是让 CA 签发一个证书, 现在能签发证书的CA 还是比较多的.

1) 对于 Windows 系列的 OS (操作系统某些时候也是需要证书的) 及 IE 浏览器 , 可以签发证书的 CA 列表: http://social.technet.microsoft.com/wiki/contents/articles/14215.windows-and-windows-phone-8-ssl-root-certificate-program-member-cas.aspx

2) 对于Mozilla Firefox 系列, 可以签发证书的 CA: http://www.mozilla.org/en-US/about/governance/policies/security-group/certs/included/

3) Apple 的 OS 及 safari: http://www.apple.com/certificateauthority/ca_program.html

4) Chrome : http://www.chromium.org/Home/chromium-security/root-ca-policy

大概浏览一下, 发现中国的 CA 只有这2家公司: http://www.cnnic.cn/ & http://www.sheca.com/ 但是发现后者签发的某些证书在ff 还是显示警告.

这些 CA 中有一家 CA 提供的 certificate 是免费的: https://www.startssl.com/ 作为个人可以申请 class1的 certificate, 是免费的.
certificate 分为 class1, class2, class3, 和 Extended Validation 这4种. 区别看这里: http://weekend.blog.163.com/blog/static/74689582012030840165/

EV 证书能在浏览器显示一个绿色的区域, 里面显示认证的公司名字之类的信息, 让用户更加信任, 当然得到的成本也比较高.

nginx 安装证书
安装比较简单, 把获取的证书的 cert 和 key, copy 到服务器的某个目录, 然后修改 nginx 配置文件, 使用443端口.

使用中的问题: 一旦使用 https, 那么原来使用百度 CDN 的 js 库, bootstrap 的库, 就不能用了, 因为 https 的文档中不能使用http 的请求, 包括那些 js, css, image, fonts文件等.

路由器上面设置 DNS Server 导致网络访问变慢

路由器上面有个设置: 可以选择使用宽带提供商默认的 DNS, 或者自己指定 DNS server, 当时听说 google 的8.8.8.8 和 4.4.4.4 比较好用, 就设置成这2个指定的了.

有时候访问 ebay 站点的时候, 发现家里特别慢, 有些页面都打不开. 后来就怀疑 ebay 和联通的宽带接入有问题. 有时候为了访问, 不得不开手机流量. 后来有一天, 发现其实页面访问变慢, 主要是页面的 js 出现问题. js 迟迟 load 不下来. 发现几个类是这个: ir.ebaystatic.com 的 URL, ping 一下, 发现大多数都是 timeout. 想想这些静态的东西, 都是有 CDN 加速的, 怎么可能这么慢呢? CDN 应该是每个运营商都有加速的才对. 查一下 ping 的这个 ip, 竟然是一个美国的 ip, 那么这个 ping 解析的 ip 地址是有问题的. 终于想到家里用的路由器上面的 DNS 使用的是 google 的 DNS 解析服务器. 改回来之后果然快很多.

解析域名的 DNS 命令: nslookup ir.ebaystatic.com 8.8.8.8 或者使用默认的试试: nslookup ir.ebaystatic.com

一个例子:
LM-SHC-00355872:~ xiatian$ nslookup facebook.com 8.8.8.8
Server: 8.8.8.8
Address: 8.8.8.8#53

Non-authoritative answer:
Name: facebook.com
Address: 78.16.49.15

LM-SHC-00355872:~ xiatian$ nslookup facebook.com
Server: 192.168.1.1
Address: 192.168.1.1#53

Non-authoritative answer:
Name: facebook.com
Address: 243.185.187.39

网站转发 部分解决80端口被屏蔽问题

现在家用的宽带,一般来说80端口都是被屏蔽的(443 一般都没有被屏蔽,所以 https 还是可以用的). 所以从外部访问都要加一个其他端口,比如我的是90: http://home.tianxiaohui.com:90/blog/. 如此一来, 每次访问都要人工添加端口, 很是麻烦. 对于不熟悉的用户, 很是难解释为什么还有个端口数字在这里. 但是一旦用户进入网站之后, 他就不关心端口了, 他只需要从内部点链接. 所以关键点是用户输入网址的时候.

如何解决首次输入不需要输入端口的问题呢? 如果用户真正到达你的网站之前, 有个地方可以自动给你加上你的端口号, 那么问题就解决了. 首先你想到的是 DNS 记录文件. 在 DNS 文件中, A 记录只能是一个 IP 地址, 所以不可能加端口号. 那么 cname 呢? cname 只能是一个域名, 也不能加端口号.

但是专门有这样的网站, 自动做转发的, 他能给你中间加一个端口号. 比如 你的域名是 tianxiaohui.com. 那么你可以加一个 cname: www 指向这个转发网站提供的域名 urlMapping.exmaple.com. 那么这个转发网站可以301 指向你真正的带端口的网站. 所以当客户访问 www.tianxiaohui.com 的时候, 那么先路由到 urlMapping.example.com, 然后在301 指向带端口的: home.tianxiaohui.com:90/blog/. 所以是部分解决了80端口被屏蔽的问题.