前天家里的 ADSL modem 坏了,一个杂牌用了五年,嗯,还算不错。趁着记忆还没被别的内容取代,记下配置 DD-WRT 通过 OpenVPN 自动翻墙、(墙)内外分流的过程。当然,你也可以用 PPTP、L2TP/IPSec,但我只喜欢 OpenVPN。
第一步,确保你的无线路由器刷了有 openvpn 和 jffs 功能的 DD-WRT 固件包(参考:如何选择适合你的无线路由器的 DD-WRT 固件包)。注意,并非越新的版本就越好,比如最近 eko 编译的两个新版 svn17990(2011年12月8日) 和 svn18946(2012年4月7日) 的 jffs 都存在问题,所以我还是在使用2011年5月18日发布的 svn17084 版本。
第二步,做好 DD-WRT 的基本配置,包括 PPPoE、Router Name、NTP、wireless 等。
第三步,启用 jffs
第四步,配置自动翻墙、(墙)内外分流,即,只有被墙了的地址才走 VPN,其他仍走 ISP 原线路。
第五步,启用 DNSMasq
Setup -> Basic Setup:

Services -> Services:

在 Additional DNSMasq Options 中的信息是那些被污染了的域名,添加在此处强行使用 Google 或 OpenDNS 的域名服务器进行解析。以下是我的内容,供参考:
server=/google.com/208.67.222.222
server=/facebook.com/8.8.8.8
server=/fbcdn.net/8.8.8.8
server=/twitter.com/8.8.8.8
server=/youtube.com/8.8.8.8
server=/ytimg.com/8.8.8.8
server=/imageshack.us/8.8.8.8
server=/friendfeed.com/8.8.8.8
server=/j.mp/8.8.8.8
server=/t.co/208.67.222.222
server=/img.ly/208.67.222.222
server=/dw-world.de/208.67.222.222
server=/dw.de/208.67.222.222
server=/dwnews.com/208.67.222.222
server=/twitpic.com/208.67.222.222
server=/appspot.com/208.67.222.222
server=/blogspot.com/208.67.222.222
server=/foursquare.com/208.67.222.222
server=/bbc.co.uk/208.67.222.222
server=/bbc.in/208.67.222.222
server=/rpmfind.net/208.67.222.222
server=/twimg.com/208.67.222.222
server=/delicious.com/208.67.222.222
server=/amazonaws.com/208.67.222.222
server=/udn.com/208.67.222.222
server=/launchpad.net/208.67.222.222
server=/boxun.com/208.67.222.222
server=/yfrog.com/208.67.222.222
server=/peacehall.com/208.67.222.222
server=/identi.ca/208.67.222.222
server=/wikipedia.org/208.67.222.222
如果你在使用 Linux 桌面,推荐不要在你的本机上启用本地 dnsmasq,比如,如果是 GNOME Network Manager,在 /etc/NetworkManager/NetworkManager.conf 文件中注销 dns=dnsmasq 行。
Enjoy the Unlimited Internet!