TP-Link 703n, OpenWrt, Cisco VPN, CHNROUTES

  前段日子在@weeker的怂恿下购置了TP-Link 703N,100软妹币有找。买这么个烂牌子的小东西回来当然是用来折腾的,以下便是折腾内容:
  先来看看703N的硬件参数:

  • Atheros AR7240 CPU (400Mhz)
  • Atheros AR9331 Chipset (integrated wireless)
  • 802.11 b/g/n 150Mbps (130Mbps real)
  • wireless power output 20dBm – 100mW
  • 4 MB flash memory
  • 32 MB RAM
  • USB 2.0 port
  • Powered via micro-USB socket
  • Tiny form factor: 5.7cm x 5.7cm


  总结下:这玩意很小;它用USB供电;AR芯片OPEN-WRT支持;4MB FLASH刷OPEN-WRT勉强够用;32MB RAM对于OPEN-WRT来说足够。所以这玩意不刷OPEN-WRT实在是没天理了。另外这玩意的供电是5V USB,启动电流185MA,实际工作电流只有100MA。所以除了任何USB充电器外,电脑的USB口的供电也绰绰有余,至于拿外接电池包或者飞利浦 X130那样妖艳的玩意来供电也是一点问题都没有的。
  闲话少说,开刷。去OPEN-WRT页面下载相应固件:squashfs-factory.bin。然后登陆到TP-LINK的Web管理界面进入固件升级菜单选择此固件升级开刷。由于此文拖稿拖了有两个月,所以具体截图已不可寻,至于要等多久才算刷完记忆也有点模糊,所以大家就多等些时候再去断电源重启为好。
  刷完重启后你会发现TP-Link原有的WIFI SSID已经没有了,而且也没多出类似叫“OPEN-WRT”之类的SSID出来,所以这玩意已经给你刷成砖了orz。好吧,第一次就刷成砖的可能性还是很小的,你看不到WIFI SSID是因为这个固件默认是把WIFI关闭的Orz。如果你有另一台路由器可以先把703N连在上面,这样它能获取到一个地址可以让你TELNET上去配置,如果没有路由器可以这么干:给703N通电启动后拿一个针反复捅它的RESET孔(不用很频繁,1秒1次就行),捅的差不多的时候703N的蓝色指示灯就会开始反复闪烁,这个时候就不用捅了。用网线把703N和你的电脑相连,电脑的IP地址设为“192.168.1.2/255.255.255.0”,然后“telnet 192.168.1.1”应该就能连上了。
  由于拖稿时间过长,写到这里我实在记不起默认情况下OPEN-WRT是否会开启SSH,所以大家就当作现在我们还是在用telnet连接吧。由于上面捅reset进入其实是“Failsafe”模式,所以我们要先

mount_root

  mount完后先顺手“passwd”把root密码改了。然后去“/etc/config”下面改一下“dhcp, firewall, network, wireless”这四个文件。以下是简单解释:
network

config interface 'loopback'
	option ifname 'lo'
	option proto 'static'
	option ipaddr '127.0.0.1'
	option netmask '255.0.0.0'

config interface 'lan'
	option ifname 'eth0'
	option proto 'dhcp'
	
config interface 'wifi'
	option proto 'static'
	option ipaddr '192.168.20.1'
	option netmask '255.255.255.0'

  由于703N就一个网口,所以配两个interface,一个叫’wifi’一个叫’lan’。lan我是设置通过DHCP自动获取地址,而wifi设置了固定的ip’192.168.20.1’。
wireless

<code><blockquote>
config wifi-device 'radio0'
	option type 'mac80211'
	option macaddr 'xx:xx:xx:xx:xx:xx' //按照各位自己的wifi mac地址来,不用改
	option hwmode '11ng'
	list ht_capab 'SHORT-GI-20'
	list ht_capab 'SHORT-GI-40'
	list ht_capab 'RX-STBC1'
	list ht_capab 'DSSS_CCK-40'
	option channel 'auto'
	option txpower '20'
	option country 'CN'
	option htmode 'HT20'

config wifi-iface
	option device 'radio0'
	option network 'wifi' //wifi interface的名字,和'/etc/config/network'里的对应
	option mode 'ap'
	option encryption 'none' //不加密
	option macfilter 'allow' //使用mac地址过滤
	list maclist 'xx:xx:xx:xx:xx:xx' //允许登陆的mac地址
	option ssid 'imwifi' //ssid名字
	option hidden '1' //不广播ssid

  这里设置WIFI的一些基本信息,注释直接写旁边了。我是设置为不广播ssid,不加密,mac过滤。所以加入wifi网络时需要手动填写wifi ssid。

dhcp

<code><blockquote>
...
config dhcp wifi
	option interface	wifi
	option start 	100
	option limit	150
	option leasetime	12h
	list dhcp_option 6,8.8.8.8

config dhcp lan
	option interface	lan
	option ignore	1

  前略,两段主要时设置dhcp地址池,’wifi”lan’与之前’/etc/network’中的名字一一对应。

firewall

<code><blockquote>
config defaults
	option syn_flood	1
	option input		ACCEPT
	option output		ACCEPT
	option forward		ACCEPT
# Uncomment this line to disable ipv6 rules
#	option disable_ipv6	1

config zone
	option name		lan
	option network		'lan'
	option input		ACCEPT
	option output		ACCEPT
	option forward		ACCEPT
	option masq		1
	option mtu_fix		1

config zone
	option name		wifi
	option network		'wifi'
	option input		ACCEPT
	option output		ACCEPT
	option forward		ACCEPT

config forwarding
	option src		lan
	option dest		wifi

config forwarding
	option src		wifi
	option dest		lan
...

  主要作用是把lan和wifi互相之间的数据转发都打开,除了wifi可以通过lan口来共享网络外,这样设置wifi和lan口的ip地址都可以用于管理登陆。
  接下来说Cisco IPsec VPN配置,请参看此文章:Pure IPsec VPN with IPsec-Tools/Racoon on CentOS,完毕。
  最后说下我的路由配置,我的不动脑策略就是把国外的所有流量都走VPN,国内流量都不走VPN。路由表的生成是有chnroutes的脚本完成的,至于加入到路由器的路由表里如果纯粹用“route add”来加三千多条记录是很不合理的,利用点小技巧3秒便搞定了。具体可以参看最后我提供的配置文件里的“up.sh”。
  最后的最后在“/etc/rc.local”里加几条东西来完成自动连接VPN以及添加路由表。
rc.local

<code><blockquote>
sleep 5
/sbin/vpncwatch -c twitter.com -p 80 -i 10 vpnc /etc/vpnc/default.conf
iptables -I FORWARD -o tun0 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.20.0/24 -j MASQUERADE
iptables -t mangle -I FORWARD -o tun+ -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
iptables -t mangle -I FORWARD -i tun+ -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
iptables -t mangle -A OUTPUT -o tun+ -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
iptables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
sleep 5
/etc/up.sh
exit 0

  此文成文比较仓促,没有提到如何安装vpnc之类的软件过程,各位可以搜索“opkg update”“opkg install vpnc”这样的条目自学一下。全部配置完后记得“reboot -f”重启即可。

etc

12 Responses to “TP-Link 703n, OpenWrt, Cisco VPN, CHNROUTES”

Leave a Reply

Note: Commenter is allowed to use '@User+blank' to automatically notify your reply to other commenter. e.g, if ABC is one of commenter of this post, then write '@ABC '(exclude ') will automatically send your comment to ABC. Using '@all ' to notify all previous commenters. Be sure that the value of User should exactly match with commenter's name (case sensitive).