Featureless Wireless Router + Linux Machine = VPN Wireless Router

2010/08/29 | 21:56 | 分类:Web与移动平台 | 标签: | 98次阅读

When I tried to access some oversea services on my Milestone, the connection was often reset by the "firewall". I have an OpenVPN account but the Android system only provides PPTP and L2TP connectivity (I do not want it rooted yet). Then I tried to make my laptop PC with VPN connection to be a wireless access point. It was unfortunate that my old Intel wireless network adaptor does not support the Master (Access Point) mode, while the unrooted Android system cannot connect to an Ad-hoc wireless network. I had to configure a VPN enabled wireless router as the access point...

Lots of articles teach you how to configure a VPN wireless router that can break the "firewall" transparently. These techniques are all based on some powerful firmware like OpenWrt. If your featureless router does not support these firmware, it cannot run as a VPN based proxy. But that is not a problem if you can dedicate a Linux machine to running the VPN client. An old desktop or laptop PC is enough.

1. Install the VPN client and the iptables service on the Linux machine. Connect it to the LAN of the wireless router, either by wire or wireless.

2. Configure the VPN client on the Linux machine and ensure it works well. You will see a VPN tunnel device created, like "tun0" for my OpenVPN connection.

3. Make the Linux machine to be a gateway that forwards the LAN traffic to the VPN tunnel. You should write correct IP range and tunnel device name in the command,

  1. echo 1 > /proc/sys/net/ipv4/ip_forward
  2. iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o tun0 -j MASQUERADE

and the verify them after executing.

  1. iptables -t nat -L

If you want the it to be a regular service, you can insert the VPN connecting and IP forwarding commands into /etc/rc.local or other starting-up scripts.

4. Modify the DHCP settings of the wireless router. For most routers, these settings are supplied via a web portal. The gateway should be the IP of the Linux machine that runs the VPN client, and the DNS should be an unpolluted one.
If you do not have the administrative permission to the router, you have to ask the wireless users to perform these settings on their client devices manually.

5. Try to connect to the wireless router from a client device. After connected, check the auto-allocated gateway and DNS. Then try to browse a website showing the client's IP (e.g. ifconfig.me), if it shows the VPN's IP, you made it.

将海峰五笔码表转换到 iBus 下使用

2010/05/13 | 23:09 | 分类:Linux与开源 | 标签: | 683次阅读

  Ubuntu 早已使用 iBus 取代 SCIM 作为默认的输入平台了。但我一直还在用 SCIM,原因就是 iBus 的五笔码表实在有些问题:生僻字或繁体字常常排在常用的简体字前面。它默认会自动调节词频,虽说调节词频是解决上述问题的办法,但这与很多五笔用户的习惯不符。不过其实 SCIM 也有几处用得不爽,例如不方便输入书名号、破折号等。
  我今天简单研究了一下 iBus,发现自动调节词频是可以关闭的(在码表中,而不在界面或配置文件中);而它的标点符号输入也相对自然。因此,决定找一套好用的码表替代原有码表,进而尝试用 iBus 取代 SCIM。我选择了 Windows 下的海峰五笔(86版)码表:其一,它的词库规模适中,我在 Windows 下用过感觉不错;其二,它使用标准的 Windows 码表格式,便于提取数据;其三,作者在主页上宣布“鼓励大家反编译,定制自己的专用输入法”,这种开放的态度让我选择了它。
  将海峰五笔码表转换到 iBus 下,步骤如下:
  1.在 Windows 下使用海峰五笔自带的 ImegenU.exe 工具将编译过的 Sun86.mb 码表逆转换为文本码表 Sun86.txt。不要用 Windows 自带的 Imegen.exe,在实验时发现 Imegen.exe 会产生部分错误的编码,比如“跑”字,暂不知其中原因。
  2.将基于 UTF16LE.DOS.BOM 编码的 Sun86.txt 转换为 UTF8.UNIX.NON-BOM 编码,命名为 Sun86-u.txt。在 Linux 下可使用以下命令:

  1. iconv --from-code=utf16 --to-code=utf8 --output=Sun86-u.txt Sun86.txt
  2. fromdos Sun86-u.txt

  3.编辑 Sun86-u.txt,删除头信息,只保留码表。
  4.编写一个小程序(trans),将 Windows 文本码表转换为 iBus 文本码表,命名为 Sun86-i.txt。

  1. ./trans Sun86-u.txt > Sun86-i.txt

  5.下载 iBus 码表源代码(ibus-table-xingyin),从中提取出原版五笔的文本码表 wubi.txt。
  6.使用 Sun86-i.txt 中的内容覆盖 wubi.txt 的 Table 段。可保留 wubi.txt 中以 zz 开头的一系列非汉字符号的编码定义。
  7.修改 wubi.txt,禁用词频调整:

  1. DYNAMIC_ADJUST = FALSE

  8.编译并覆盖码表:

  1. bus-table-createdb -s wubi86.txt
  2. sudo cp wubi86.db /usr/share/ibus-table/tables

  9.重新登录桌面环境,新的码表即可生效。

  另外,在使用中发现 iBus 默认没有启用无重码自动上屏的选项。Google 了一下,可参考这篇的方法。直接修改 /usr/share/ibus-table/engine/table.py,找到:

  1. self._auto_commit = self.db.get_ime_property('auto_commit').lower() == u'true'

修改为:

  1. self._auto_commit = False

然后使用以下 python 程序:

  1. import py_compile
  2. py_compile.compile(r'table.py')

将其 table.py 编译为字节码文件 table.pyc 即可。

  编译好的海峰五笔(86版)for iBus 码表以及上面提到的 trans 程序源代码可在以下位置下载:
  http://files.linjian.org/c_cpp/SunWB-iBus.tar.gz
  http://www.linjian.cn/files/c_cpp/SunWB-iBus.tar.gz

使用智器 V5 实现山寨 MiFi

2010/05/04 | 23:30 | 分类:Web与移动平台 | 标签: | 915次阅读

  上个月 iPad 上市后,我就常听到 idealeeheqian 同学鼓吹 MiFi 及其类似设备。说白了,那就是一个 3G-to-WiFi Adaptor。只要有一台同时支持 3G 和 WiFi 的设备,并且其系统相对开放,实现 MiFi 的功能就不难。笔记本电脑当然可以,不过体积大了点。正好我年前购入一台智器 V5,就用它来山寨一台 MiFi 吧。
  智器 V5 的三个系统中,只有 Ubuntu 预装了 3G 驱动和拨号程序,那就在 Ubuntu 中实现。首先使用 USB OTG 连接 3G Modem,我这里是华为的 WCDMA Modem。智器最新版的固件不需要显式拨号,Modem 插入之后自动联网。然后使用 NetworkMananger 创建新的无线网络,为其设定名称(“miffy”如何?)和密钥,这样一来智器摇身一变成了无线 AP。现在试用笔记本电脑搜索周围的无线网络,很快就会发现智器的信号。连接之,密钥校验通过之后笔记本和智器便构成了局域网,使用 /sbin/ifconfig 可查看各自的 IP(在我这里为 10.42.43.*)。Ping 一下,连接正常。

使用智器 V5 实现山寨 MiFi

  下一步理应在智器上配置 iptables,将来自笔记本的数据包转发到 WCDMA 网络。智器的 Ubuntu 中虽然有 iptables 命令,然而运行后才发现这个 Linux Kernel 中的 ip_tables 模块已被裁减。用不了 iptables,就先找点简单的办法连接外网,比如 SSH 转发。智器的 Ubuntu 中预装了 OpenSSH 服务端,使用 sudo /etc/init.d/ssh start 命令启动即可。在笔记本上使用 ssh user@10.42.43.1 -D 7474 登录智器(不知道密码?那就先用 sudo passwd user 设置一下密码),然后将浏览器的 Socks 代理服务器设置为本地的 7474 端口。实验一下,访问网页正常。
  智器电力相当有限,特别是同时打开 WiFi 和 3G 的时候。要把它当 MiFi 用的,最好加一个移动电源,比如我用的这块 4400mAh 锂电池。最终三个设备加其来的体积比 MiFi 大不少,但比起笔记本电脑还是可以接受的。其续航能力与笔记本相当,当然比不过专业的 MiFi。

使用智器 V5 实现山寨 MiFi

  哪位朋友有空研究着重新编译一下智器的 Linux Kernel,加入 ip_tables 模块?这样我们山寨的 MiFi 就更加完美易用了。从智器粉丝团的相关帖子看应该不难,有个 Mer-SmartQ 可用,需要的可能只是经验和时间。
  附,iptables 可用之后,数据包转发所需要的配置:

  1. sudo su
  2. iptables -F
  3. iptables -P INPUT ACCEPT
  4. iptables -P FORWARD ACCEPT
  5. iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
  6. echo 1 > /proc/sys/net/ipv4/ip_forward

带有特殊符号的 SCIM 五笔码表

2010/03/17 | 22:23 | 分类:Linux与开源 | 标签: | 640次阅读

  今天有朋友向我询问在 SCIM 的五笔输入法下如何输入各种特殊符号。我们知道,SCIM 五笔所在的 scim-tables-zh 输入引擎功能并不强大,没有 Windows 下常见的软键盘等辅助功能。SCIM 五笔中也只对少数符号设置了编码,如“●”是编码是“pnll”(“实心圆圈”四字的编码),无法输入多数特殊符号。不过作为开源软件,SCIM 的码表扩展还是比较方便的。恰好我以前也被相同的问题困扰过,当时通过扩展编码的方式将区位码表加入了 SCIM 五笔码表。既然有人需要,那就把我修改过的码表略加完善,提供给需要的朋友使用。

  从这里下载带有特殊符号的 SCIM 五笔码表:
  http://files.linjian.org/c_cpp/Wubi-quwei.tar.gz
  http://www.linjian.cn/files/c_cpp/Wubi-quwei.tar.gz

  如果懒得研究,则直接用解压后的 Wubi.bin 替换系统原有的 /usr/share/scim/tables/Wubi.bin。重新加载 SCIM 之后,可用以下编码输入区位码表中的特殊符号:

  第1区 符号 xxxf(“符”)
  第2区 数字 xxxs(“数”)
  第3区 英文字母 xxxy(“英”)
  第4区 日文平假名 xxxp(“平”)
  第5区 日文片假名 xxxq(与“p”相反的字母“q”)
  第6区 希腊字母 xxxl(“腊”)
  第7区 俄文字母 xxxe(“俄”)
  第8区 拼音注音 xxxi(“音”的韵首)
  第9区 制表符号 xxxb(“表”)
  GBK扩展符号A8区 xxxu(代表符号“╙”、“〒”)
  GBK扩展符号A9区 xxxo(代表符号“㊣”、“〇”)

  这里没有像 Windows 下的很多五笔输入法那样用“z”作为特殊编码的首字母,目的是为了保留“z”的万能查询功能。scim-tables-zh 并不能做更高级的定制,使“z”在不同场合下发挥不同作用。我选择使用“xxx”开头的几个空的编码位置容纳特殊符号,并尽量保证编码的名称有易于记忆的含义。
  如果想改变为其它编码方式,可以修改上面包中提供的 mkquwei.c 文件,并参考以下方式重新生成 Wubi.bin:

  1. gcc mkquwei.c -o mkquwei
  2. ./mkquwei > quwei.txt
  3. iconv -f=gbk -t=utf8 -c -o quwei-u.txt quwei.txt
  4. grep -v -P '\t\t' quwei-u.txt > quwei-f.txt
  5.  
  6. scim-make-table /usr/share/scim/tables/Wubi.bin -o Wubi.txt
  7. sed -i '$d' Wubi.txt
  8. cat quwei-f.txt >> Wubi.txt
  9. echo 'END_TABLE' >> Wubi.txt
  10. scim-make-table Wubi.txt -b -o Wubi.bin
  11. sudo cp Wubi.bin /usr/share/scim/tables/Wubi.bin

智器(SmartQ)V5 使用半月杂记

2010/02/26 | 23:45 | 分类:IT杂谈 | 标签: | 2,860次阅读

  年前购入一台 智器(SmartQ)V5,使用已有半月。
  我购买 MID 的目的比较明确:折腾为主,实用为辅。
  ● 折腾方面,自然要安装通用的、开放的操作系统,既方便安装应用,也方便开发调试。同时需要提供简单的刷写机制以便在系统级做点文章。同时我对 Android 系统挺有兴趣,也想借此了解学习一下。
  ● 实用方面,主要是在外出或长途旅行时方便上网。WiFi 当然是 MID 的标配,不过国情所限,WiFi 的羽翼在绝大多数户外场合无处施展。因此,3G 网络成为我考虑的重要因素。
  最后是价格,1500 元之内。如果不考虑价格,确实有不少基于 Atom 的、内置 3G 模块的 MID 或 UMPC 可供选择。但我的原则还是应将经济因素列为硬性指标。
  基于这些限制,我最终选择了国产非知名品牌的智器 V5。
智器(SmartQ)V5 使用半月杂记
  我最早了解智器这个品牌是在山寨机网,因此智器给我留下的第一印象便是山寨厂商。这次选机时才发现智器原来是一家有地址、有电话、有网站的相对正规的公司。智器 V5 相比同类产品性价比很高:1000 元出头,配置 ARM11 600MHz 处理器、256MB 内存、2G 闪存、4.3 寸 WVGA 触屏、WiFi、蓝牙、USB(Host Mode & On-The-Go)、HDMI、SD(SDHC),预装 Ubuntu、Windows CE、Android 三系统。虽然没有内置 3G 模块,但可以通过 USB 连接 3G 上网卡,应急时也可使用蓝牙连接手机 GPRS 上网。三个系统各取所长,实用性与可折腾性得到平衡。
  不过这个价位的产品,缺点还是有不少。在购买之前我就已经从其论坛上做了仔细了解:产品做工不佳,尤其是 SD 卡插口无法合上的盖子以及手感明显不一的几个按键。单点触摸的电阻屏,不利于保护屏幕,也无法享受到 Android 的一些高级用户体验。续航能力有限,2000mAh 的电池用来上网也就 2、3 小时,而看视频的话几乎不能保证一部电影的时间。操作系统配置粗糙,预装软件杂而不精,响应速度慢,感觉很“卡”,等等。对于做工的问题,国产小品牌就不要强求了,我们要体谅中国的制造业。电阻屏的问题,主要还是受限于我所划定的价位,贴个膜防划伤吧。电池的问题,看视频不是我的主要需求,长途旅行时可以使用外置电池盒,也将就着吧。至于软件配置和响应速度,我倒认为不是问题。系统和软件是可以配置修改的,而像我这种在 Nokia 6600 上运行一堆后台程序,在五年前买的笔记本上跑 Windows 7 或 Compiz 的用户,对“卡”的敏感度远低于潮人们。
  购入之后,我自然为之选配了 3G 上网卡与外置充电电池(这些也涵盖于 1500 元预算之内)。3G 选择联通 WCDMA,主要还是考虑过年回家的网络覆盖情况。4400mAh 外置充电电池可以保证我 30 小时左右的车程不至于太无聊(充电线 DIY)。注意照片中还有一个 USB 有线网卡,这个遗留资产遇到智器时还是能够发挥一点余热的,特别是在没有 WiFi 覆盖的宿舍里。
  【实用场景一】 回家的 T69 列车上,用智器上网兼测试铁路沿线的 WCDMA 覆盖。京广、陇海沿线,有城镇乡村的地方半数以上能够搜到 WCDMA 信号。列车行驶中网络连接畅通,即使信号一时中断,也能自动恢复,无需重新拨号。而兰新线以及返程 K44 所走的包兰、京包沿线的情况则要差一些,当然这一线的城镇密度也远低于东部地区。
  【实用场景二】 打的从嘉峪关到酒泉的路上,嘉峪关本地的司机不甚清楚我家的所在的小区怎么走(事实上在酒泉居住总时间不到半年的我,也不清楚应该怎么走)。这时我打开智器,联网秀出地图,司机随即确定了路线。
  【实用场景三】 边从电视上看春晚,边从智器上看推友的热议。在看到推友贴出的刘谦魔术揭秘视频链接时,旋即点击播放。
  作为成天与 Linux、Windows 及 Symbian 打交道的用户,使用智器一项重要体会就是 Android 的用户体验。在单点触摸、无重力感应、无 GPS、无电话功能的设备上,Android 的易用性依然远优于并非为掌上设备定制开发的 Ubuntu 和 Windows CE。特别是移动版的 Google 应用令我这个坚守了 S60v2 五年的用户眼前一亮(虽然玩过无数同学的 iPhone,但手里拿着一个属于自己的设备,这种“指”点江山、“掌”控天下的感觉才算最得意的)。
  至于折腾场景,等闲下来再着手研究。从智器论坛上看,还是有不少闲人在智器的早期产品上玩出些花样的。权当它是一个功能完善的 ARM 开发板吧。

页面存档: 上页 1 2 3 4 5 下页