距离上一篇文章快一年了……,最近由于原来的路由器被小强烧毁,买了一个wr703n路由器,顺便在上面折腾一下openwrt和openvpn,这篇文章记录一下过程,以后关于这个路由器的配置和折腾过程都会更新在这里.
准备工作
给路由器上电之后登陆配置页面看到生产批号是Build 120925,在openwrt wiki 页面得知该路由器的硬件版本是1.7而不是路由器背面标注的1.6, 因此还是下载trunk版本的固件免得刷成砖头还需要使用ttl线修复。
下载地址在这里 .
由于是从tp原厂固件升级到openwrt,因此下载factory版本,由于jffs2版本刷了之后经过测试占用空间过大无法装其他软件,因此用squashfs版本.
刷机
先用无线连接路由器,下载openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin
后在路由器的默认管理页面中找到系统工具-升级
的选项,然后使用下载的bin文件进行升级,等到页面显示重启后说明刷机结束.
初步配置
#####配置root密码并启用ssh服务
刚刷了openwrt的wr703n默认没有打开wifi,因此使用网线把wr703n和电脑连接,并且把计算机的ip修改为192.168.1.×,子网掩码255.255.255.0, 这时候使用telnet登陆路由器:
然后修改root的密码同时会自动打开ssh服务
重复输两遍密码之后,就配置了root的密码,然后exit
, 之后就可以使用ssh root@192.168.1.1
来配置路由器了.
配置网络
1.首先配置无线功能
1
vim /etc/config/wireless
在其中的option disabled 1
这一行前面加#
对这行进行注释或者直接删除这一行, 在config wifi-iface
中配置wifi的ssid和密码,修改结果如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
config wifi-device radio0
option type mac80211
option channel 11
option hwmode 11ng
option path 'platform/ar933x_wmac'
option htmode HT20
list ht_capab SHORT-GI-20
list ht_capab SHORT-GI-40
list ht_capab RX-STBC1
list ht_capab DSSS_CCK-40
# REMOVE THIS LINE TO ENABLE WIFI:
# option disabled 1
config wifi-iface
option device radio0
option network lan
option mode ap
option ssid myssid
option encryption psk2
option key 'mypasswd'
2.配置wan口(有线接口)
1
vim /etc/config/network
注释或者删除掉option ifname 'eth0'
这一行,为了避免和其他路由器的DHCP冲突修改config interface 'lan'
中的ip地址为:192.168.20.1
,然后增加wan接口配置,由于我是从上一级路由器使用DHCP的方式获取地址,因此在文件末尾增加
1
2
3
config interface 'wan'
option ifname 'eth0'
option proto 'dhcp'
最终配置文件如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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 type 'bridge'
option proto 'static'
option ipaddr '192.168.20.1'
option netmask '255.255.255.0'
config interface 'wan'
option ifname 'eth0'
option proto 'dhcp'
然后使用reboot
命令重启路由器之后,就能搜索到名为myssid
的无线网络,同时把路由器的有线接口和上级路由器连接,wr703n就可以作为一个普通的路由器来使用了。
用电脑用无线连接路由器之后,也就可以通过ssh root@192.168.20.1
来配置路由器了。
配置错误导致无法连接路由器
如果由于配置了错误的ip地址等原因无法连接到路由器,就需要进入路由器的安全模式进行恢复,方法:
1.拔掉路由器电源
2.连接电源之后使用牙签等持续的按路由器的reset
按钮,不用过快,每秒一次就可以,几秒之后,路由器的指示灯开始很快速的闪烁,说明进入了安全模式
3.安全模式没有加载任何配置,因此还是使用前面提到的方式,使用telnet登陆进路由器:telnet 192.168.1.1
4.挂载root分区:mount_root
5.firstboot
6.passwd root
7.reboot -f
这样应该就清除了路由器的配置,可以重头开始配置,但是我的路由器在进行firstboot时候错误,这时候可以使用在openwrt中重新刷机的方式解决:
1
2
3
cd /tmp
scp imtxc@192.168.1.2:/home/imtxc/openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin ./
mtd -r write openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin firmware
刷机结束重启之后, 就可以重新开始配置了.
配置U盘扩展
装了openwrt之后,使用df -h
命令可以看到只剩下了0.4M的空间,如果要安装之后提到的openvpn等软件,空间明显不够用,由于wr703n有usb接口,因此使用u盘来扩展空间,同时将系统设置为从u盘引导,这样,如果以后遇到由于配置错误导致无法连接路由器的时候,只要拔下u盘就可以从正确的系统引导了。
安装所需的软件
1
2
3
4
5
opkg update
opkg install kmod-usb2 kmod-fs-ext4
opkg install kmod-usb-storage
opkg install block-mount
reboot
准备好一个已经格式化好的U盘,我在其他系统上把u盘分成了三个区, sda1 2G ext4格式用来装系统, sda2 1G用来做交换分区, 剩余的作为 sda3 ext4格式用来存放数据.
配置openwrt从U盘启动
重启系统之后, 插入U盘之后使用dmesg |grep sda
命令可以看到 sda1 sda2 sda3, 然后按照一下步骤操作:
1
2
3
4
5
6
7
8
9
10
mkdir /mnt/usb
mount /dev/sda1 /mnt/usb
mkdir /tmp/root
mount -o bind / /tmp/root
cp /tmp/root/* /mnt/usb -a
echo Booted from USB >> /mnt/usb/etc/banner
umount /tmp/root
echo Booted from internal ROM >> /etc/banner
echo option force_space >> /mnt/usb/etc/opkg.conf
umount /mnt/usb
然后使用 vim /etc/config/fstab
修改fstab文件的mount部分如下:
1
2
3
4
5
6
7
8
config mount
option target /mnt/usb
option device /dev/sda1
option fstype ext4
option options rw,sync
option enabled 1
option enabled_fsck 1
option is_rootfs 1
然后使用reboot
重启之后,登陆路由器器,会看到欢迎界面最下面提示Booted from USB
,使用df -h
查看结果如下:
1
2
3
4
5
6
7
8
9
root@OpenWrt:~# df -h
Filesystem Size Used Available Use% Mounted on
rootfs 2.0G 78.1M 1.8G 4% /
/dev/root 1.5M 1.5M 0 100% /rom
tmpfs 14.2M 440.0K 13.8M 3% /tmp
tmpfs 512.0K 0 512.0K 0% /dev
/dev/sda1 2.0G 78.1M 1.8G 4% /overlay
overlayfs:/overlay 2.0G 78.1M 1.8G 4% /
/dev/sda3 4.4G 136.9M 4.0G 3% /mnt/sda3
安装配置openvpn
openvpn配置
opkg update
opkg install openvpn-openssl ip
vim /etc/openvpn/my-vpn.conf
增加vpn配置文件如下:
1
2
3
4
5
6
7
8
9
10
11
12
client
dev tun
proto udp
remote myvpnip 8800 #这里是我的vpn服务器地址和端口
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
ns-cert-type server
comp-lzo
verb 3
dns配置
vim /etc/config/dhcp
,修改 option resolvefile '/etc/openvpn/resolv.conf'
修改 /etc/openvpn/resolv.conf
为:
1
2
3
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 208.67.222.222
参考这篇文章 配置dnsmasq和openvpn 的路由选择, 为了在openwrt下使用,修改他的chnroutes.py脚本中的
1
OLDGW = $( ip route show 0/0 | head -n1 | grep 'via' | grep -Po '\d+\.\d+\.\d+\.\d+' )
为:
1
OLDGW = ` ip route show | grep '^default' | sed -e 's/default via \([^ ]*\).*/\1/' `
配置之后 /etc/init.d/openvpn start
连接vpn, 如果要在路由器开机之后自动连接vpn,就把这行添加到 /etc/rc.loacl
的exit 0
之前.
iptables配置
首先卸载openwrt提供的firewall工具: opkg remove firewall
然后:
1
2
3
4
5
6
7
8
9
10
11
iptables -t nat -F
iptables -t filter -F
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -s 192.168.20.0/24 -j ACCEPT
iptables -A FORWARD -j REJECT
iptables -t nat -A POSTROUTING -s 192.168.20.0/24 -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.20.0/24 -o tun0 -j MASQUERADE
iptables-save
或者将上面iptables-save之前的命令添加到/etc/rc.loacl
中.
这时候,接在wr703n下的电脑如果访问 www.ip138.com
查询到的应该是国内的ip, 而使用 www.whatismyip.com
查询到的应该为你的vpn服务器的ip.
参考资料:
http://old.geektu.com/?p=979
https://gist.github.com/simpx/3314757
http://blog.pinepara.info/tech/flash-openwrt-on-wr703n/
http://www.sl088.com/voyage/2012/08/2956.slboat