跟 UMU 一起玩 OpenWRT(入门篇15):ip-tiny 和 ip-full 的区别

起源

今天看到有网文《iptables+tproxy实现ss-redir的UDP转发的方法》说:“OpenWrt 做 UDP 转发需要的依赖是:iptables-mod-tproxy, kmod-ipt-tproxy 和 ip-full”。使用 opkg install ip 安装的默认是 ip-tiny,一般情况下都是够用的,不禁想弄明白两者有何区别。

探索

ip 命令对比测试:

  • ip-tiny
1
2
3
OBJECT := { link | address | route | rule | neigh | tunnel | maddress |
mroute | mrule | monitor | netns | macsec | token | ila |
vrf | sr }
  • ip-full
1
2
3
4
OBJECT := { link | address | addrlabel | route | rule | neigh | ntable |
tunnel | tuntap | maddress | mroute | mrule | monitor | xfrm |
netns | l2tp | fou | macsec | tcp_metrics | token | netconf | ila |
vrf | sr }

即 ip-full 多了这些对象: addrlabel | ntable | tuntap | xfrm | l2tp | fou | tcp_metrics | netconf。举个例子,只安装 ip-tiny 时,运行 ip xfrm 报错如下:

Object “xfrm” is unknown, try “ip help”.

相关知识:

xfrm is an IP framework for transforming packets (such as encrypting
their payloads). This framework is used to implement the IPsec
protocol suite (with the state object operating on the Security
Association Database, and the policy object operating on the Security
Policy Database). It is also used for the IP Payload Compression
Protocol and features of Mobile IPv6.

结论

实际上,转发普通 UDP 包,并不需要 ip-full,ip-tiny 即可。

Lenovo Y1S 千兆 LAN 改 WAN

需求

Lenovo Y1S 的原 WAN 口是百兆的,连接千兆网络时,WAN 口成为瓶颈,需把两个千兆 LAN 其中一个改为 WAN。

实现

UMU 一开始直接在官方 ROM 上去改 switch,却发现行不通,因为原 WAN 口被废掉后,如果不插着网线,官方 ROM 会很智能地以为路由器是没上网的,子网内终端浏览网页时,会一直被重定向到路由器设置页面。

尝试修改 /etc/config/system 还是没解决,所以……直接刷 OpenWRT 吧……三步走:

  1. 参考《newifi mini 刷 OpenWRT》。

  2. 下载 ROM。开发版地址如下,稳定版请根据当前情况自寻链接。

    https://downloads.openwrt.org/snapshots/trunk/ramips/mt7620/openwrt-ramips-mt7620-y1s-squashfs-sysupgrade.bin

  3. 刷完再改 switch,搞定。

newifi mini 刷 OpenWRT

newifi mini,即 lenovo Y1,属于不开放 SSH 的类型,越用越不爽,还是刷了吧。

先到 http://www.xcloud.cc/download.shtml 下载“路由助手”,然后到 OpenWRT 官网下载 ROM,推荐用 trunk 上的(目前是 dd),因为 bb 和 cc 都没有集成 kmod-mt76(当然你自己手动安装是可以的,opkg install kmod-mt76),下载链接:http://downloads.openwrt.org/snapshots/trunk/ramips/mt7620/openwrt-ramips-mt7620-y1-squashfs-sysupgrade.bin。目前刷完是 OpenWrt Designated Driver r47548,5G WiFi 没问题。

由于是 trunk 版,luci 可能要自己安装,请参考文章《跟 UMU 一起玩 OpenWRT(入门篇7):安装 LUCI》。

存在几个问题:

  1. 刷完,三个网口顺序和原版是颠倒的。

  2. 5G WiFi 设置参数后似乎没有办法立刻生效,UMU 都是 reboot 一下解决。

跟 UMU 一起玩 OpenWRT(入门篇10):穿透内网

UMU 把路由器放在公司,然后在家里想登陆它,这时候就有一个问题:如何穿越到公司内网呢?本文给出的一种解决方案:SSH 反向连接。涉及的软件是 autossh。

您需要准备一台有固定外网 IP 的服务器,UMU 使用的是某某云主机(避免广告嫌疑就不说了,呵,广告位招租),如果不想出钱购买,可以用家庭 ADSL + 动态域名代替,效果可能差一些,但基本可用。

为了更清晰地说明,列一下各个角色:

  1. 控制端:UMU 的笔记本,不管在什么网络,都要求能够连接到放在公司的路由器;

  2. 中转服务器:一台某某云主机,固定 IP,用 cloud_ip 表示;

  3. 被控端:放在公司的路由器,内网 IP,用 internal_ip 表示。

基本原理:让被控端主动连接中转服务器,然后控制端连接中转服务器,就可以间接连接被控端了。

被控端安装、设置,主要参考:http://wiki.openwrt.org/doc/howto/autossh

1
2
3
4
opkg update
opkg install autossh
dropbearkey -t rsa -f /etc/dropbear/id_rsa
dropbearkey -y -f /etc/dropbear/id_rsa | grep ssh-rsa

把上面最后一行命令的输出复制下,注意只有一行,待会儿要上传到中转服务器。或者也可以把最后一条命令改为打印到文件,再用 WinSCP 下载到本地。

1
dropbearkey -y -f /etc/dropbear/id_rsa | grep ssh-rsa > /tmp/pubkey

查看一下 autossh 配置:

1
uci get autossh.@autossh[0].ssh

如果没有问题,就把中转服务器的信息设置上去:

1
2
uci set autossh.@autossh[0].ssh='-i /etc/dropbear/id_rsa -f -N -T -R 2222:localhost:22 <user>@<cloud_ip>'
uci commit

接下来登录到中转服务器(Linux Server,如果是 OpenWRT,要把以下的 ~/.ssh/authorized_keys 换成 /etc/dropbear/authorized_keys),把公钥(/tmp/pubkey)上传:

1
2
3
4
5
6
7
8
echo "key 内容" >> ~/.ssh/authorized_keys
# 或者
#cat pubkey >> ~/.ssh/authorized_keys
chmod 0700 ~/.ssh/
chmod 0600 ~/.ssh/authorized_keys
vi /etc/ssh/sshd_config
# 改为允许证书登录
service sshd restart

/etc/ssh/sshd_config 需要打开的有:

1
2
3
4
5
6
7
RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys

GatewayPorts yes

到路由器上测试:

1
ssh -i /etc/dropbear/id_rsa -f -N -T -R 2222:localhost:22 <user>@<cloud_ip>

如果成功则大功告成,以后只需要 ssh 到中转服务器的 2222 端口就等于连接到路由器了。最后配合本地端口转发,可以连接很多内网机器了。如下图:

Putty

再加一台路由器,用于做本地端口转发,就可以让 Surface、iPad 之类的设备也能快乐地穿透到内网了。

如意云使用经验

优点

玩了好多个路由器,有传统,有所谓智能,还是比较赞赏如意云,相反的,之前已经吐槽过小米和圾路由。下面就来说说如意云的好处吧!

  1. 生态完善,支持的移动设备多,连 WP8/8.1 都支持了,UMU 主要手机是 Lumia 822,这个很满足,还有 PC 客户端,方便 PC 和移动设备之间同步数据。插件齐全,虽然很多插件没具体玩过,但至少看数量是不输圾路由的。

  2. 很好滴继承 OpenWRT 的开放性,天生 root 了,或者专业点说,SSH 服务没关闭,直接连,省去很多烦恼,用小米或圾路由,老是怕一升级就要重新 root,好讨厌的感觉……还可以刷 PandoraBox:http://downloads.openwrt.org.cn/PandoraBox/RY-1/

  3. 性价比不错,RY-01 才 81 元,从配置、功能、稳定性来比,差不多价位的传统路由完全不必考虑了。虽说运行内存和外壳材料方面不如圾 1S,但 USB 接口带来不少扩展性是圾 1S 没有的,而且 1S 要 109 元。

  4. 观其高配版 RY-02 配置也不落人后,后劲十足。

    这不是广告:要买的话,千万不要去迅雷商城,那边是 99 元,苏宁还是 81 元。

槽点

  1. 很丑……一股廉价感,还真是对得起价格;

  2. 如意云的 WiFi 密码不能用,.#&等特殊字符,好撒币的做法……

  3. WiFi 信号不如极路由 1S,虽然差距不大,但 UMU 还是通过实测数据挖掘出这个真相。

跟 UMU 一起玩 OpenWRT(入门篇7):安装 LUCI

UMU 不推荐安装 LUCI,还是多打命令好,可以学习更多东西,而且 LUCI 比较浪费存储空间!

1
2
opkg update
opkg install luci-ssl

推荐使用 SSL 版本,比较安全,但比较大,如果装不下可以试试不带 SSL 的:

1
opkg install luci

您可能不习惯默认的主题(luci-theme-bootstrap),Flash 够大的话,还是装个常用的:

1
opkg install luci-theme-openwrt

开启服务:

1
/etc/init.d/uhttpd start

设置开机自动运行(不推荐):

1
/etc/init.d/uhttpd enable

小米路由使用经验

槽点

小米路由比极路由 1S 还早买,但用了一周后就决定把他收起来了……

  1. 0.4.58 的版本,下载功能根本不能用,人品真差,同样的种子,1S 就可以下载!有朋友也这样,看来不是个例。

  2. 发烧……您说替代 NAS 吧,就一个硬盘而已,缓存还只有 8MB,一天就开机 9 小时左右,每天下班都是暖手宝。

  3. 太 TM 贵了,收起来还有点浪费啊!

优点

话说回来,UMU 是看好小米路由的,配置真心高,虽然大部分人不需要,但也提一下优点:

  1. 千兆网口啊!高富帅家里怎么能没有千兆独享的宽带?

  2. USB 啊!尼玛,插个 USB 声卡就可以做窃听器了,您造吗?扩展性超高,堪称智能……前提是 root。

  3. 信号超好啊!虽然天线内置,但有 4 根啊,秒杀极路由 1S。重点还很稳定,Windows、MAC OS、Android、iOS、WP 各种设备都一起连上来,MAC OS 和 iOS 都不会掉线哦!

  4. 11AC 超快啊!干扰少啊!

  5. 黑色垃圾桶的造型,让您放在角落也毫无违和感,它真的很像另一个角落的垃圾桶。(风扇有声,放角落才不会吵)

极路由 1S 使用经验

优点

基本全在硬件上:

  1. 不贵,性价比不错;

  2. 铝合金外壳,体型小巧,散热性好;

  3. MicroUSB 电源接口,停电时可以用移动电源供电(最近宿舍跳闸停电三次,还不得不提一下,这绝对是优点!);

  4. 两根天线,信号还行,虽然不如小米路由,但考虑到价格还是过得去。

  5. 可以插 SD 卡,这个能秒杀很多传统路由。

缺点

主要缺点在软件上:

  1. 不稳定,每个开发版都应该吐槽,办公室的 MAC OS 机器一连上来就出现一天死一次的问题,CPU 占用率超高!

  2. 定位很忽悠。您说智能吧,只是界面和使用流程得到一点点优化,再说面向极客吧……极客需要那些给小白用的界面?这明显是面向装逼的初级技术人员。一天死一次,就不要说极客了……

  3. 服务态度问题。App 不支持 Windows Phone。注册个账号哟手机,然后 UMU 手机换号了,联系了官方客服、在论坛上问了,都不让改,让 UMU 再注册一个账号……逛了几周的论坛,发现各位坛友大部分是小白,所以官方不断发一些扫盲的科普文,品质和逼格都不高,可以说根本没有极客间的交流。

硬件上的明显缺点:

  1. 不贴防滑贴在办公桌上很容易滑……设计硬伤!

  2. 没有 USB,明显少了很多扩展性,还敢自称智能?

个人观点

最近有朋友让 UMU 推荐路由器,UMU 还是建议他们买极路由 1S,回来刷 OpenWRT,自己整吧!