嵌入式Linux系统OpenWRT路由配置怎么样

路由器设置 2018-08-24 嵌入式Linux系统OpenWRT路由配置怎么样已关闭评论 5687字
- N +

OpenWRT是一个嵌入式Linux系统,想要了解嵌入式Linux系统的朋友有福了,下面大家介绍下OpenWRT路由的基本配置,一起来学习下吧。

  chnroutes路由表

这个路由表集中了所有分配到中国大陆的IP段, 每天自动更新,可使得在访问国内地址时不经过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.刷ROM和2.初始配置

1.刷ROM

a.首先确定设备可以被OpenWRT所支持,然后到下载编译好的ROM。最新的stable版本是attitude_adjustment(12.09),下载的是trunk版本。

b.在OpenWRT官网找相应设备的Wiki页面查看刷机方法,一般都是在路由器官方Web固件升级页面直接刷入。

2.初始配置

a.路由器启动后,有的型号没有安装Wifi模块,需要先用网线连接到LAN口,本机IP配置为静态192.168.1.x,然后telnet到192.168.1.1,更改root密码,然后ssh连入。

192.168.1.1手机登陆,http://192.168.1.1,tp-link tl-wr847n,192.168.1.253登录界面

b.配置WAN 口,让路由连上Internet。

比如要配置PPPoE:

代码如下:

uci set network.wan.proto=pppoe

uci set network.wan.username=‘yougotthisfromyour@isp.su’

uci set network.wan.password=‘yourpassword’

uci commit network

ifup wan

c.安装LuCI Web管理界面并设置开机自动启动。

代码如下:

opkg update

opkg install luci

/etc/init.d/uhttpd start

/etc/init.d/uhttpd enable

d.浏览器输入路由器LAN侧IP(多为192.168.1.1),进行Wifi等配置。

192.168.1.1手机登陆,http://192.168.1.1,tp-link tl-wr847n,192.168.1.253登录界面

192.168.1.1手机登陆,http://192.168.1.1,tp-link tl-wr847n,192.168.1.253登录界面

3.配置DNS

a.创建 /etc/config/sec_resolv.conf

vim /etc/config/sec_resolv.conf  填入以下 DNS Servers:

代码如下:

nameserver 8.8.8.8

nameserver 8.8.4.4

nameserver 208.67.222.222

b.编辑 /etc/config/dhcp

vim /etc/config/dhcp

找到option resolvfile选项,替换为:

option resolvfile ‘/etc/config/sec_resolv.conf’

4.配置PPTP

a.安装ppp-mod-pptp

代码如下:

opkg update

opkg install ppp-mod-pptp

如果需要LuCI 支持(推荐):

opkg install luci-proto-ppp

b.配置vpn接口,编辑 /etc/config/network 文件,应该已经有以下内容(如果没有,需要插入),并配置里面的server、username和password:

代码如下:

config ‘interface’ ‘vpn’

option ‘ifname’ ‘pptp-vpn’

option ‘proto’ ‘pptp’

option ‘username’ ‘vpnusername’

option ‘password’ ‘vpnpassword’

option ‘server’ ‘vpn.example.org or ipaddress’

option ‘buffering’ ‘1’

c.进入Network-》Firewall,把vpn加入wan zone,效果如图:

192.168.1.1手机登陆,http://192.168.1.1,tp-link tl-wr847n,192.168.1.253登录界面

d.进入Network-》Interfaces ,此时应该已经可以看到VPN Interface并可以连接,效果如图:

192.168.1.1手机登陆,http://192.168.1.1,tp-link tl-wr847n,192.168.1.253登录界面

e.此时在本机traceroute www.google.com,应该能得到类似以下的结果:

代码如下:

FL-MBP:~ fatlyz$ traceroute www.google.com

traceroute: Warning: www.google.com has multiple addresses; using 74.125.239.113

traceroute to www.google.com (74.125.239.113), 64 hops max, 52 byte packets

fc_r0.lan (192.168.7.1) 2.266 ms 0.999 ms 0.946 ms

10.7.0.1 (10.7.0.1) 189.259 ms 187.813 ms 188.368 ms

23.92.24.2 (23.92.24.2) 189.847 ms 190.489 ms 188.939 ms

10ge7-6.core3.fmt2.he.net (65.49.10.217) 188.508 ms 192.216 ms 202.863 ms

10ge10-1.core1.sjc2.he.net (184.105.222.14) 195.695 ms 195.691 ms 284.242 ms

72.14.219.161 (72.14.219.161) 189.196 ms 192.287 ms 193.220 ms

216.239.49.170 (216.239.49.170) 192.496 ms 188.547 ms 189.881 ms

66.249.95.29 (66.249.95.29) 190.125 ms 190.335 ms 190.026 ms

nuq05s01-in-f17.1e100.net (74.125.239.113) 189.804 ms 190.556 ms 190.242 ms

可以看出,其中第二跳是VPN的网关,而traceroute www.baidu.com的话第二跳应该也是同样的结果。

这时已经可以访问Google,Baidu 等国内外的站点了。

5.配置chnroutes

a.到chnroutes项目的下载页面下载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 www.google.com和www.baidu.com,观察第二跳的地址:

代码如下:

FL-MBP:~ fatlyz$ traceroute www.google.com | head -n 3

traceroute: Warning: www.google.com has multiple addresses; using 74.125.239.115

traceroute to www.google.com (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 www.baidu.com | head -n 3

traceroute to www.a.shifen.com (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 配置路由的话,不妨试试本文介绍的方法,希望对你有所帮助。

分享到您的社交平台:

抱歉!评论已关闭.