[置顶] 泰晓 RISC-V 实验箱,配套 30+ 讲嵌入式 Linux 系统开发公开课
VPN 自动分流:GFW 困境突围
问题描述
由于大陆习惯搞大局域网,访问国外资源总是显得这么困难,于是 VPN 就火起来了。但是VPN默认使用的是全局代理,当访问国内的网站时,我们不得不把 VPN 关掉。这样来回切换,很是麻烦。如果我们能够让 VPN 自动识别国内 IP 地址,并且主动绕过 VPN 访问。这样我们就不用来回切换了,提升在 VPN 下国内网站的访问速度,顺便节约了宝贵的 VPN 流量。
问题分析
这个问题实现起来,其实很简单,在一些路由器里早已实现。我们只要在我们的路由表里,为每一个国内 IP 地址都写一个路由规则,指定其通过的网关和接口,就可以达到这个目的。比如我要让 27.112.0.0 这个网段内的所有 IP 绕过 VPN,则可以这样添加路由规则:
# route add -net 27.122.0.0 netmask 255.255.0.0 gw 192.168.1.1 dev eth0
解决方案
难道我们只能自己一个一个去添加这些路由规则么?当然不是,我们可以写一个脚本,把国内所有 IP 段批量添加到我们的路由规则里,就可以了。现在网上有一个 chnroutes 项目,它利用 APNIC 官方提供的 IP数据 生成两个脚本,
ip-pre-up
和ip-down
。第一个就是往路由表中添加路由规则,而ip-down
则是把前面添加的规则删除掉。我们可以在使用 VPN 之前,运行一下
ip-up
脚本,在使用完 VPN 后,用ip-down
把路由表恢复原样。这样我们就可以无缝在国内线路和 VPN 线路之间切换。如果你觉得手动运行这两个脚本很麻烦,可以把这个工作交给你的 VPN Client 去做。如果你用的是 PPTP VPN,可以把ip-pre-up
复制到/etc/ppp
下,把ip-down
复制到/etc/ppp/ip-down.d
下。这样在打开 VPN 时, PPTP 会自动运行ip-up
脚本,批量添加路由规则,在关闭 VPN 时,PPTP 会自动运行ip-down
脚本,自动恢复路由规则。如果你用的时 OpenVPN,或者其他类型的 VPN,也有类似的机制,具体可以参考 chnroutes的帮助页面。ip-pre-up
和ip-down
这两个脚本可以从 chnroutes网站 上获取,或则利用它提供的 python 脚本自动生成。这种简单粗暴的解决方法比较实用,但由于路由规则过于庞大,会稍微影响网络速度,但相对与你用 VPN 的延时,这就算不了什么了。由于IP地址是变动的,你需要隔一段时间更新一下这两个脚本。
猜你喜欢:
- 我要投稿:发表原创技术文章,收获福利、挚友与行业影响力
- 知识星球:独家 Linux 实战经验与技巧,订阅「Linux知识星球」
- 视频频道:泰晓学院,B 站,发布各类 Linux 视频课
- 开源小店:欢迎光临泰晓科技自营店,购物支持泰晓原创
- 技术交流:Linux 用户技术交流微信群,联系微信号:tinylab
支付宝打赏 ¥9.68元 | 微信打赏 ¥1.00元 | |
请作者喝杯咖啡吧 |