OpenWRT 路由配置 PPTP VPN + 断线自动重连 + chnroutes国内路由表

  随着最近 Google 在国内已经完全无法访问,对我来说连接 VPN 已经成为了联网之后要做的第一件事。

  chnroutes 路由表

  这个路由表集中了所有分配到中国大陆的 IP 段,根据 http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest 每天自动更新,可使得在访问国内地址时不经过 VPN。

  想想如果能够让家里的路由直接连接 VPN,在家连接 WiFi 的所有设备直接达到Fan墙的效果,应该很 Cool,所以最近在某宝整了一个 Netgear WNDR3800 二手路由回来,先后刷了 DD-WRT 和 OpenWRT 并成功配置 VPN,最后还是选择了 OpenWRT。

  DD-WRT / OpenWRT

  关于 DD-WRT 和 OpenWRT,我选择 OpenWRT 主要因为 DD-WRT ROM 中集成的软件太多,绝大多数用不到,要配置 jffs2 来保存脚本文件,一般配置则保存在nvram中,而且无线较不稳定,5G频段常搜索不到(当然可能是我这个路由器型号的支持问题)。OpenWRT 的配置文件语法统一,配置都存储在文件系统中,且 ROM 本身仅集成了必备组件,非常小,可以只安装需要的东西,WEB管理界面也是可选安装,简洁强大,经过若干天的使用一直比较稳定。

  配置

  已配置好 OpenWRT 上网的童鞋们可以直接跳过 1.刷 ROM2.初始配置

  1.刷 ROM

  a.首先确定你的设备可以被 OpenWRT 所支持(到这里查看支持的设备列表:http://wiki.openwrt.org/toh/start),然后到这里下载编译好的 ROM:http://downloads.openwrt.org/ 。最新的 stable 版本是 attitude_adjustment(12.09),我下载的是 trunk 版本。

  b.在 OpenWRT 官网找相应设备的 Wiki 页面查看刷机方法,一般都是在路由器官方Web固件升级页面直接刷入(我的 WNDR3800 Wiki页面是:http://wiki.openwrt.org/toh/netgear/wndr3800)

  2.初始配置

  a.路由器启动后,有的型号没有安装 Wifi 模块,需要先用网线连接到 LAN 口,本机 IP 配置为静态 192.168.1.x,然后 telnet 到 192.168.1.1,更改 root 密码,然后 ssh 连入,参考:http://wiki.openwrt.org/doc/start#configuring.openwrt

  b.配置 WAN 口,让路由连上 Internet,参考:http://wiki.openwrt.org/doc/howto/internet.connection 。

  比如要配置 PPPoE:

uci set network.wan.proto=pppoe
uci set network.wan.username=‘[email protected]‘
uci set network.wan.password=‘yourpassword‘
uci commit network
ifup wan

  c.安装 LuCI Web 管理界面并设置开机自动启动,参考:http://wiki.openwrt.org/doc/howto/luci.essentials

opkg update
opkg install luci
/etc/init.d/uhttpd start
/etc/init.d/uhttpd enable

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

  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,效果如图:

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

  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
 1  fc_r0.lan (192.168.7.1)  2.266 ms  0.999 ms  0.946 ms
 2  10.7.0.1 (10.7.0.1)  189.259 ms  187.813 ms  188.368 ms
 3  23.92.24.2 (23.92.24.2)  189.847 ms  190.489 ms  188.939 ms
 4  10ge7-6.core3.fmt2.he.net (65.49.10.217)  188.508 ms  192.216 ms  202.863 ms
 5  10ge10-1.core1.sjc2.he.net (184.105.222.14)  195.695 ms  195.691 ms  284.242 ms
 6  72.14.219.161 (72.14.219.161)  189.196 ms  192.287 ms  193.220 ms
 7  216.239.49.170 (216.239.49.170)  192.496 ms  188.547 ms  189.881 ms
 8  66.249.95.29 (66.249.95.29)  190.125 ms  190.335 ms  190.026 ms
 9  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 项目的下载页面:http://chnroutes-dl.appspot.com/ 下载 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 直接把文件传过去,或者上传到某个地方再 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 ,效果应该类似这样:

[email protected]_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,并在 180 秒后重连 VPN):

#!/bin/sh

if [ -f "/tmp/vpn_status_check.lock" ]
then
        exit 0
fi

VPN_CONN=`ifconfig | grep pptp-vpn`

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

        ifdown vpn
        ifdown wan
        sleep 10
        ifup wan
        sleep 180
        ifup vpn

        rm /tmp/vpn_status_check.lock

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 连接状态的时间。

[email protected]_R0:/tmp# ls vpn*
vpn_oldgw             vpn_status_check.log
[email protected]_R0:/tmp# cat vpn_status_check.log
Tue Jul 15 00:04:02 HKT 2014
[email protected]_R0:/tmp# 

  你可以在 LuCI 中断开 VPN 接口,等1-2分钟,观察 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
 1  fc_r0.lan (192.168.7.1)  2.161 ms  0.912 ms  0.895 ms
 2  10.7.0.1 (10.7.0.1)  193.747 ms  187.789 ms  289.744 ms
 3  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 和自动重连已经配置完成。

  本文作者:FatLYZ

  URL: http://fatlyz.com

  email: geek【at】fatlyz.com(替换 【at】)

OpenWRT 路由配置 PPTP VPN + 断线自动重连 + chnroutes国内路由表

时间: 2024-12-26 19:02:01

OpenWRT 路由配置 PPTP VPN + 断线自动重连 + chnroutes国内路由表的相关文章

Windows 8.1 VPN断线自动重连 (校园使用VPN上internet外网时使用)

首先,右键我的电脑,打开计算机管理,选择"任务计划程序",然后点击"创建任务"   显示如下图示,(加粗的字体表示必须准确填写) 在“常规”這一栏填写基本信息 名称:vpn (随便一个) 描述:随便 用户组:选择是否登录后的用户运行(默认不改变) 配置:Windows8.1   然后点击第二栏目”触发器“ 点击”新建“按钮,进入”新建触发器“界面 开始任务:选择发生事件时 设置:选择基本 日志:选择Microsoft-Windows-NetworkProfile/O

OpenWRT 路由配置技巧

随着最近 Google 在国内已经完全无法访问,使得通过 VPN 访问网络的需求更加强烈,本文介绍的方法可以使一个普通的路由具备稳定连接 VPN 的能力,并能够根据目标访问网站选择国内外线路,从而得到一个既没有限制,也不会影响速度的 Wifi 环境,连接到这个网络的设备不需要任何配置即可安全上网,完全感觉不到任何不便. chnroutes 路由表 这个路由表集中了所有分配到中国大陆的 IP 段,根据 http://ftp.apnic.net/apnic/stats/apnic/delegated

VPN断开自动重连

使用windows server 2008 R2自带服务建的PPTP,两台服务器通过VPN进行数据同步.连接一段时间后,VPN会自动断开,数据同步也会停止.这给工作带来了很大的麻烦. 检测网络中断,服务端需要开通ping,windows server 2008 R2默认没有开启icmp,需要在防火墙配置icmp响应,启用”文件和打印机共享(回显请求 - ICMPv4-In)“选项即可. VPN自动重连VPN: 1 @echo on 2 :a 3 rem 廷时60秒 4 ping -n 60 12

Centos7下安装及配置PPTP VPN

说到VPN服务,我们大家都知道,VPN是虚拟专用网络(Virtual Private Network)的缩写,VPN有多种分类方式,包括PPTP.L2TP.IPSec等,本文配置的VPN服务器是采用PPTP协议的,PPTP是在PPP协议基础上开发的一种新的增强型安全协议.当然在windows上和linux上都可以部署服务,我们今天主要介绍一下在Centos7下安装及配置PPTP VPN. 因为PPTP是基于PPP协议基础上的,因此需要系统支持PPP,使用 rpm -qa ppp 检查是否安装了P

NodeMCU入门(3):断线自动重连,指示灯显示连接状态

准备工作 1.NodeMCU模块 2.ESPlorer v0.2.0-rc6 事件监听器 NodeMCU采用了事件响应的方式.也就是说,只需为事件设置一个回调函数,当事件发生时,回调函数就会被调用. 注册事件监听器wif.sta.eventMonReg() Please update your program to use the wifi.eventmon API, as the wifi.sta.eventmon___()API is deprecated. 开始监听wifi.sta.eve

Centos 7 配置PPTP VPN攻略

准备工作: 1.一台centos7主机,内网ip 192.*.*.* 2.一个连接外网的路由器,外网固定ip 210.*.*.*  DNS 210.*.*.* 开始安装: 1.更新centos7主机 yum update –y reboot #重启 2.检测系统环境 modprobe ppp-compress-18 && echo success 显示success说明系统支持MPPE补丁,如果不支持,需要先安装kernel-devel # yum install kernel-devel

CentOS7下安装配置PPTP VPN服务器

一.运行环境系统:CentOS Linux release 7.2.1511 (Core) 软件包:ppp-2.4.5-33.el7.x86_64pptpd-1.4.0-2.el7.x86_64iptables-1.4.21-17.el7.x86_64iptables-services-1.4.21-17.el7.x86_64 二.安装方式使用yum安装yum install -y ppp pptpd iptables 三.安装完毕后配置pptp1.配置DNS参数vim /etc/ppp/opt

腾讯云配置pptp vpn客户端时需要注意的一个点

C:\\Users\\Administrator>ping www.google.com 正在 Ping www.google.com [216.58.197.100] 具有 32 字节的数据: 请求超时. 请求超时. 请求超时. 请求超时. 配置好pptp vpn客户端后发现ping谷歌只得到一个IP,但并没有ping通,此时需要加路由.谷歌是216.58.0.0/16网段的,加的时候这样加: 先route print看到接口列表里"VPN 连接"的设备接口号为14 C:\\U

关于CentOS6.5配置PPTP VPN的方法

      因为经常需要查阅一些开发相关的资料,由于GWF作梗,很多国外的网站访问不了.百度搜索有时候又找不到自己想要的资料,无奈之下买了个VPS,并且自己手动搭建了PPTP VPN.从此,妈妈再也不要担心我上不了谷歌了.       言归正传,相信很多人对搭建VPN有需要,而网上很多资料又不是很全,往往按照步骤走下来,搭建VPN还是失败.结合自己的搭建心得,做个搭建PPTP VPN的详细记录,供自己日后参考,也供有需要的朋友借鉴.       第一步:检测是否符合PPTP的搭建环境的要求: