用USB-Serial連接La Fonera 2100,并啟用SSH

Posted by – 2010/07/06

不知道什麼原因路由器裡修改過的配置都被抹掉了。那晚打雷,還停電了…

-----------------

2007年中文網誌年會,我狗屎運的得了一個很漂亮的La Fonera 2100路由器,一直用著沒出啥問題。

La Fonera 2100

有一天我去網通網站隨便看看,突然測試強迫症發作,想試試修改ADSL用戶名。網通規定修改用戶名時,新用戶名必須以“*” – 星號開頭。改唄,貌似也沒啥,然後杯具就發生。發現路由器配置頁面的表單是不允許輸入星號的。-_-! 打電話給網通,編個故事說,帳號被已經搬走且反目的同屋修改,自己不知道現在該怎麼登陸,請求恢復成默認的帳號密碼。答覆是,Windows下沒有問題,其他環境,比如路由器網通不提供支持。-_-!

Linux裡撥號是可以寫星號的,因為只是個文本配置文件。但我不能只讓這一台電腦上網其啊。
La Fonera支持被刷。如果能登陸進去,手動改改配置文件,即可更自由。

重啟後,長按Reset的方法,試了很多次…不管用。很難過,考慮是不是去買個新的支持OpenWRT的路由器。不便宜幾百塊,而且明明,我有一個路由器… 賭一把,弄根串口線刷刷看。試了幾根手機線做的usb-serial後,都沒成功。我就不信了…從淘寶買了一根PL2303的連接線,絕對環保,電路板和芯片都裸在外面。一頓折騰後,我的路由器終於又可以撥號。網通會生氣吧。:D

這次記錄步驟如下:

1. 驅動

Mac OS X版的PL2303驅動在這裡下載。安裝方法試將解壓縮得到的.kext目錄拷貝到/System/Library/Extensions目錄下,重啟。
連接線接上後,應該會出現一個/dev/tty.PL2303-xxx文件。

Windows版本可在這裡找到,Windows 7下可以用,不知道別的Windows能用不能。如果不能,可參考這個帖子。如果驅動與Windows版本不一樣,會有啟動不了設備的問題出現。但基本只要找到相應的PL2303驅動即可。

2. 終端連接串口

具體連接方式,請看 http://66.49.218.210/?p=10 。

3. 用終端程序連接

我以前用的是Windows下的hyperterminal

這次用的screen,啥設置都不需要做竟然就可以用了。

一定要先把連接線USB端接電腦,否則電腦沒有/dev/tty.PL2303-xxxx的設備沒法開終端等著。
如果發現不能啟動,可以先將TX線拔掉,通電後迅速插上。成功啟動的話會顯示如下信息。

+PHY ID is 0022:5521
Ethernet eth0: MAC address 00:18:84:16:74:78
IP: 0.0.0.0/255.255.255.255, Gateway: 0.0.0.0
Default server: 0.0.0.0

RedBoot(tm) bootstrap and debug environment [ROMRAM]
Non-certified release, version v1.3.0 – built 16:57:58, Aug 7 2006

Copyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat, Inc.

Board: ap51
RAM: 0×80000000-0×81000000, [0x80040450-0x80fe1000] available
FLASH: 0xa8000000 – 0xa87f0000, 128 blocks of 0×00010000 bytes each.
== Executing boot script in 1.000 seconds – enter ^C to abort
RedBoot> fis load -l vmlinux.bin.l7
…(略)…
Please press Enter to activate this console.
…(略)…

看到

Please press Enter to activate this console.

便可按回車鍵激活終端。

4. 修改配置

BusyBox v1.1.3 (2006.11.21-19:49+0000) Built-in shell (ash)
Enter ‘help’ for a list of built-in commands.

_______ _______ _______
| ____|| || _ |
| ____|| – || | | |
| | |_______||__| |__|
|___|

Fonera Firmware (Version 0.7.1 rev 1) ————-
*
* Based on OpenWrt – http://openwrt.org
* Powered by FON – http://www.fon.com
—————————————————
root@OpenWrt:/#

後面的操作,參考這篇文章。

主要步驟有,啟用dropbear來做SSH服務器

root@OpenWrt:/# mv /etc/init.d/dropbear /etc/init.d/S50dropbear

編輯/etc/firewall.user文件

root@OpenWrt:~# vi /etc/firewall.user

在firewall.user裡啟用下面兩行iptable命令,允許訪問22端口。

### Open port to WAN
## — This allows port 22 to be answered by (dropbear on) the router
iptables -t nat -A prerouting_rule -i $WAN -p tcp –dport 22 -j ACCEPT
iptables -A input_rule -i $WAN -p tcp –dport 22 -j ACCEPT

重啟。可以ssh到路由器了。

編輯/etc/config/fon文件

root@OpenWrt:/# vi /etc/config/fon

主要修改如下信息

config network wan
option mode ‘pppoe’
option username ‘_username_’
option password ‘_password_’

修改局域網的網段,默認為192.168.10.1/255.255.255.0 ,我改成了如下樣子。

config network lan
option mode static
option ipaddr ’10.10.10.1′
option netmask ’255.255.255.0′
option dhcp ’1′

默認用戶名密碼,都是admin/admin。admin也就是root,用passwd命令可以修改。

重啟。搞定,又可以在家wifi了。

使用RAMHost的Mini VPS翻牆

Posted by – 2010/06/28

突然之間翻牆就成了必備技能之一。
我用RAMHost的Mini VPS嘗試了幾種翻牆的方式。
操作系統是Debian 5.0。

通過VPN翻牆 – OpenVPN+Tunnelblick

全局都翻牆且不用設置瀏覽器,客戶端一點就可以。

具體步驟參考RAMHost用戶論壇的第四個帖子。唯一需要注意的是第四步在/etc/rc.local中加入每小時自動重啟OpenVPN的命令。這還真是必須的,因為/dev/tun會在重啟的時候丟掉,可能是OpenVZ的原因吧。

我使用Tunnelblick做客戶端來連VPN。
下載安裝後,需要將openvpn.conf放在如下位置~/Library/Application Support/Tunnelblick/Configurations/

openvpn.conf中引用的*.crt和*.key也放這裡即可。

當晚(其實大概天快亮了-_-!)試過看HuluYoutube等高清視頻很流暢。

好處多多,壞處就是得拷貝那几個證書文件給客戶端。(更喜歡PPTP要求用戶名密碼的方式,但OpenVZ)

代理服務器 – Squid

GFW是強大的,直接用Squid仍然會被墻。

更安全的代理服務器 – Squid+Stunnel

請教了一下Fantix,他用Stunnel給Squid加密的方法來解決這個問題。

我用的Squid3,需要啟用lenny-backports才能找到。其實默認的Squid2.7也可以。裝好後,默認配置就能用。

$ sudo apt-get install squid3

簡化版的配置如下:

visible_hostname proxy.sunliwen.com
cache_effective_user proxy proxy
http_port 3128
acl localnet src 127.0.0.0/24
http_access allow localnet

$ sudo /etc/init.d/squid3 start

因為我要用Stunnel加密,所以只允許本地訪問。
配置Stunnel之前先測試一下Squid是否可以走通。

export HTTP_PROXY=http://localhost:3128
elinks www.youtube.com

配置服務器端Stunnel(可參考這篇博客)

主要有以下幾個步驟:

1. 生成證書

$ sudo openssl genrsa -out privkey.pem 2048
$ sudo openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095
$ sudo cat privkey.pem cacert.pem >> /etc/stunnel/stunnel.pem

2. 更改證書屬性

$ sudo chmod 0400 /etc/stunnel/stunnel.pem

3. 更改chroot目錄的owner

$ sudo chown stunnel4:stunnel4 /var/run/stunnel4

4. /etc/stunnel/stunnel.conf編輯如下

cert = /etc/stunnel/stunnel.pem
chroot = /var/lib/stunnel4/
pid = /stunnel4.pid
setuid = stunnel4
setgid = stunnel4
; debug = 7
; output = /var/log/stunnel4/stunnel.log
client = no
[http]
accept = 8080
connect = localhost:3128

客戶端也需要安裝stunnel,這裡是MacOSX

$ sudo port install stunnel

然後在客戶端本地運行

$ sudo stunnel3 -c -d localhost:8080 -r proxy.sunliwen.com:8080

或者創建包含如下內容的配置文件 stunnel.conf (我這立的位置在 /opt/local/etc/stunnel/stunnel.conf )

client = yes
[proxy]
accept = 127.0.0.1:8080
connect = proxy.sunliwen.com:8080

然後 http://localhost:8080 便成了一個安全的代理。

比較

前者比較方便,但不是很穩定,鏈接會自動斷開,重新鏈接VPN可以恢復。
後者需要在瀏覽器上進行設置,但比較穩定,沒出過什麼問題。

兩種方法速度差不多,都比裸的Squid慢。

PS:Hulu - 通過VPN可以看,Squid代理卻不行。
後者具體情況是,在播放完廣告之後報告一個錯

Sorry, we are unable to stream this video. Please check your Internet connection and try again.

點“reload the video”,重新放了一遍廣告,錯誤依舊。可能Hulu已經不僅僅在播放前查IP了

MacPorts安裝Mercurial和自動補齊

Posted by – 2010/06/18

使用macports默認安裝mercurial時,沒有自動補齊。
解決方法如下:

$ sudo port install mercurial +bash_completion

用macports可以安裝各種開源的程序,只是小心不要為了用個小工具比如Gnome的vino而裝了幾百兆的依賴。-_-!

RAMHost的VPS

Posted by – 2010/06/18

讀了很多VPS評測的文章,最後選擇了非常有誘惑力的Ramhost (基本只有好評)

第一次使用ssh登錄

https://ramhost.us/?page=vps-console

添加用戶

# adduser liwen

安裝sshd

# apt-get install openssh-server

安裝vim

# apt-get install vim

安裝sudo

# apt-get install sudo

安裝apache/php5

# apt-get install apache2-mpm-prefork libapache2-mod-php5 php5-cgi php5-mysql php5-mcrypt php5-gd php5-sqlite

安裝ZendOptimizer (參考:http://www.debiantutorials.net/installing-zend-optimizer/)

# wget http://downloads.zend.com/optimizer/3.3.9/ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz

安裝mysql

# apt-get install mysql-server

添加用戶到www-data組

# usermod -G www-data liwen
# id liwen
uid=1000(liwen) gid=1000(liwen) groups=1000(liwen),33(www-data)

解決locale錯誤信息

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LANG = “en_US.utf8″
are supported and installed on your system.
perl: warning: Falling back to the standard locale (“C”).

解决方法

# apt-get install locales

# dpkg-reconfigure locales

查看vps狀態
https://my.ramhost.us/v2/vps/cp/?page=main

通过RopeVIM在VIM中实现Python自动完成

Posted by – 2009/12/12

ropevim可以实现在vim中自动完成,自动import等功能。
参考: http://rope.sourceforge.net/ropevim.html

安装步骤如下:

$ mkdir /home/liwen/install/rope
$ cd /home/liwen/install/rope
$ hg clone http://bitbucket.org/agr/rope/
$ cd rope
$ python setup.py install
$ cd ..
$ hg clone http://bitbucket.org/agr/ropevim/
$ cd ropevim
$ hg clone http://bitbucket.org/agr/ropemode/
$ mv ropemode/ropemode/* ropemode/
$ python setup.py install

在 .vimrc 中添加下面的代码:

let $PYTHONPATH .= ":/home/liwen/install/rope/rope:/home/liwen/install/rope/ropevim"
source /home/liwen/install/rope/ropevim/ropevim.vim

let ropevim_codeassist_maxfixes=10
let ropevim_guess_project=1
let ropevim_vim_completion=1
let ropevim_enable_autoimport=1
let ropevim_extended_complete=1

function! CustomCodeAssistInsertMode()
    call RopeCodeAssistInsertMode()
    if pumvisible()
        return "\<C-L>\<Down>"
    else
        return ''
    endif
endfunction

function! TabWrapperComplete()
    let cursyn = synID(line('.'), col('.') - 1, 1)
    if pumvisible()
        return "\<C-Y>"
    endif
    if strpart(getline('.'), 0, col('.')-1) =~ '^\s*$' || cursyn != 0
        return "\<Tab>"
    else
        return "\<C-R>=CustomCodeAssistInsertMode()\<CR>"
    endif
endfunction

inoremap <buffer><silent><expr> <Tab> TabWrapperComplete()

自动完成直接可以用,但 RopeRename 不工作,可能是工程太大,分起来比较费劲。还不错。

PS: hg 是 mercurial(水银)