OpenWRT是一个嵌入式Linux系统,想要了解嵌入式Linux系统的朋友有福了,今天小编要给大家介绍下OpenWRT路由的基本配置,一起来学习下吧。 chnroutes 路由表 这个路由表集中了所有分配到中国大陆的 IP 段,根据 ftp/apnic/stats/apnic/delegated-apnic-latest 每天自动更新,可使得在访问国内地址时不经过 VPN。 想想如果能够让家里的路由直接连接 VPN,在家连接 WiFi 的所有设备直接达到Fan墙的效果,应该很 Cool,所以最近在某宝整了一个 Netgear WNDR3800 二手路由回来,先后分别在 DD-WRT 和 OpenWRT 成功配置 VPN + chnroutes,最后还是选择了 OpenWRT。 DD-WRT vs OpenWRT 关于 DD-WRT 和 OpenWRT,我选择 OpenWRT 主要因为 DD-WRT ROM 中集成的软件太多,绝大多数用不到,要配置 jffs2 来保存脚本文件,一般配置则保存在nvram中,而且无线较不稳定,5G频段常搜索不到(当然可能是我这个路由器型号的支持问题)。OpenWRT 的配置文件语法统一,配置都存储在文件系统中,且 ROM 本身仅集成了必备组件,非常小,可以只安装需要的东西,WEB管理界面也是可选安装,简洁强大,经过若干天的使用一直比较稳定。 配置 已配置好 OpenWRT 上网的童鞋们可以直接跳过 1/toh/start),然后到这里下载编译好的 ROM:downloads/ 。最新的 stable 版本是 attitude_adjustment(12/toh/netgear/wndr3800) 2/doc/start#configuring/doc/howto/internet/doc/howto/luci or ipaddress’ option ‘buffering’ ‘1’ c (65 (184 (74/ 下载 linux.zip,解压 b.把 ip-pre-up 重命名为 chnroutes.sh,打开编辑,在 if [ ! -e /tmp/vpn_oldgw ]; then 前插入以下代码,以避免 ppp 连接脚本重复执行导致重复添加路由表项: 代码如下: if [ $OLDGW == ‘x.x.x.x’ ]; then exit 0 fi 其中 x.x.x.x 是 VPN 的网关,可以先本机连接上去之后查看一下网关地址。 c.ssh 连接到路由器,执行以下命令: 代码如下: cd /etc/config/ mkdir pptp-vpncd pptp-vpnvim chnroutes.sh 在 vim 中把编辑好的 chnroutes.sh 粘贴进去(当然也可以通过 ssh 直接把 chnroutes.sh 文件传过去,或者上传到某个地方再 wget 下载) 执行以下命令,设置权限为可执行: chmod a+x chnroutes.sh d.用 vim 编辑 /lib/netifd/ppp-up 文件: vim /lib/netifd/ppp-up 在 [ -d /etc/ppp/ip-up.d ] && { 这一行前插入以下内容,确保 ppp 连接脚本能够被执行: sh /etc/config/pptp-vpn/chnroutes.sh e.重启路由,启动好之后,进入 LuCI 查看接口状态,等 WAN 和 VPN 都连接成功后,ssh进去,执行 route -n head -n 10 ,效果应该类似这样: 代码如下: root@FC_R0:/etc/config# route -n head -n 10 Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 10.7.0.1 0.0.0.0 UG 0 0 0 pptp-vpn 1.0.1.0 58.111.43.1 255.255.255.0 UG 0 0 0 pppoe-wan 1.0.2.0 58.111.43.1 255.255.254.0 UG 0 0 0 pppoe-wan 1.0.8.0 58.111.43.1 255.255.248.0 UG 0 0 0 pppoe-wan 1.0.32.0 58.111.43.1 255.255.224.0 UG 0 0 0 pppoe-wan 1.1.0.0 58.111.43.1 255.255.255.0 UG 0 0 0 pppoe-wan 1.1.2.0 58.111.43.1 255.255.254.0 UG 0 0 0 pppoe-wan 1.1.4.0 58.111.43.1 255.255.252.0 UG 0 0 0 pppoe-wan 其中 Destination 为 0.0.0.0 的是默认路由,网关为 VPN 网关,意味着默认流量都经过 VPN,而以下的条目则把目的为国内的网段都指向了 ISP 提供的网关。 至此 PPTP VPN 和 chnroutes 已经配置完毕。 6.配置 VPN 断线自动重连 a.创建 /etc/config/pptp-vpn/status-check.sh: vim /etc/config/pptp-vpn/status-check.sh 在 vim 中粘贴以下内容(此脚本检测 VPN 连接状态,并在断线后会断开 WAN 和 VPN 接口,10秒后重新连接 WAN,并在 30 秒后重连 VPN): 代码如下: #!/bin/sh《/p》 《p》if [ -f “/tmp/vpn_status_check.lock” ] then exit 0 fi《/p》 《p》VPN_CONN=`ifconfig grep pptp-vpn`《/p》 《p》if [ -z “$VPN_CONN” ] then touch /tmp/vpn_status_check.lock echo WAN_VPN_RECONNECT at: 》》 /tmp/vpn_status_check_reconn.log date 》》 /tmp/vpn_status_check_reconn.log《/p》 《p》 ifdown vpn ifdown wan sleep 10 ifup wan sleep 30 ifdown vpn sleep 10 ifup vpn sleep 40 rm /tmp/vpn_status_check.lock《/p》 《p》else date 》 /tmp/vpn_status_check.log fi 执行以下命令,设置权限为可执行: chmod a+x /etc/config/pptp-vpn/status-check.sh b.进入LuCI 的 System -》 Scheduled Tasks 填入以下内容,并保存: */1 * * * * /etc/config/pptp-vpn/status-check.sh 以上实际上是编辑了 cron 配置,cron 每分钟运行检测 / 重连脚本,重启 cron: /etc/init.d/cron restart c.静待几分钟,查看 /tmp 目录,应该能看到 vpn_oldgw 和 vpn_status_check.log 文件,查看 vpn_status_check.log 文件,可以看到最近一次检测 VPN 连接状态的时间。 代码如下: root@FC_R0:/tmp# ls vpn* vpn_oldgw vpn_status_check.log root@FC_R0:/tmp# cat vpn_status_check.log Tue Jul 15 00:04:02 HKT 2014 root@FC_R0:/tmp# 你可以在 LuCI 中断开 VPN 接口,在接下来的4-5分钟,观察 WAN 和 VPN 的重连情况。 d.分别 traceroute 和 ,观察第二跳的地址: 代码如下: FL-MBP:~ fatlyz$ traceroute head -n 3 traceroute: Warning: has multiple addresses; using 74.125.239.115 traceroute to (74.125.239.115), 64 hops max, 52 byte packets fc_r0.lan (192.168.7.1) 2.161 ms 0.912 ms 0.895 ms 10.7.0.1 (10.7.0.1) 193.747 ms 187.789 ms 289.744 ms 23.92.24.2 (23.92.24.2) 259.323 ms 354.625 ms 408.535 ms 代码如下: FL-MBP:~ fatlyz$ traceroute head -n 3 traceroute to (180.76.3.151), 64 hops max, 52 byte packets 1 fc_r0.lan (192.168.7.1) 1.190 ms 0.984 ms 0.731 ms 2 58.111.43.1 (58.111.43.1) 20.616 ms 38.822 ms 18.484 ms 3 183.56.35.133 (183.56.35.133) 20.056 ms 52.353 ms 87.841 ms 可以看出,已成功对国内外的目标地址进行了路由选择。 至此,OpenWRT 路由的基本配置、PPTP VPN、chnroutes 和自动重连已经配置完成。 上面就是OpenWRT 路由配置的方法介绍了,如果你要给OpenWRT 配置路由的话,不妨试试本文介绍的方法,希望对你有所帮助。