查看“项目十八--便携式网络隐私保护器(内部全局VPN)/公司内网硬件访问控制机”的源代码
←
项目十八--便携式网络隐私保护器(内部全局VPN)/公司内网硬件访问控制机
跳转至:
导航
、
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
网络隐私/内网穿透本质上使用VPN即可实现,但真实应用中,绝大部分VPN软件(OpenVPN除外)不支持路由推送,抑或路由本身难以维护。使用全局VPN会严重影响本地浏览反应速度(例如在线视频)。 ==背景介绍== 这里以某国内著名IT企业应用背景为例,公司能够访问国内各视频网站,但是限制京东、淘宝等购物网站。我们希望通过特定路由器突破限制的同时不影响其它访问。 具体实现时,有如下几点需要考虑: * 国内各大云服务器商均按流量收费,因此希望有且仅有必要的访问才走服务器中转; * 京东、淘宝的IP列表不可能搜集齐全,而且可能旗下某些非购物型网站可以访问; * 使用第三方CDN加速,第三方CDN同时为其它厂商服务,其它厂商服务不受影响,此部分希望不通过VPN。 便携式网络隐私保护器/公司内网硬件访问控制机与其原理相同,不再详述。 ==技术实现== 整理上述需求,我们希望实现按域名路由。dnsmasq 在 2.66 版之后加入了对 ipset 的支持,可将指定域名的 IP 解析后自动加入某一 ipset 中。 再配置路由规则,使该 ipset 中的 IP 走 VPN 即可。使用关键字dnsmasq ipset即可搜索出一堆相关文章。 不过官方版本的dnsmasq不能满足第三种需求,以facebook为例,其使用了akamai的CDN服务,但是微软也使用akamai为其提供windows更新服务。 facebook使用akamai的域名有fbcdn-profile-a.akamaihd.net、fbcdn-sphotos-a-a.akamaihd.net、fbcdn-sphotos-f-a.akamaihd.net、fbcdn-sphotos-g-a.akamaihd.net等, 对于众多的域名我们可以一一列下,但是难免会有遗漏,不难发现所有域名均以fbcdn开头,如果dnsmasq支持正则表达式,则可以通过^fbcdn-[a-z\-]+\.akamaihd\.net$一条 匹配上述4条。可惜dnsmasq官方并没有支持正则表达式,不过有网友已经提供并开源https://github.com/cuckoohello/dnsmasq-regex,在microwrt官方repo中也提供支持 正则表达式的dnsmasq包方便广大玩家使用。 VPN方面选择比较常用的openvpn,其它VPN与此配置类似。OpenVPN服务器端的安装配置请自行Google。 ==安装配置== 首先安装支持正则表达式版本的dnsmasq,microwrt玩家可从microwrt官方repo中获取。 各位首先在/etc/opkg.conf文件末尾加入如下一行: src/gz microwrt http://repo.microduino.cn/microwrt/ 并且移除option check_signature 1,然后运行 opkg update && opkg install dnsmasq-full 这里使用OpenVPN因此还需安装openvpn软件 opkg install openvpn-openssl 配置dnsmasq,这里以taobao为例,在/etc/dnsmasq.conf末尾添加如下几行,其中最后一行添加了正则表达式的示例 ipset=/taobao.com/vpn ipset=/tmall.com/vpn ipset=/:^fbcdn-[a-z\-]+\.akamaihd\.net$:/vpn 修改完毕后,重启dnsmasq。然后在/etc/firewall.user文件末尾添加iptables配置,使得dnsmasq解析后加入ipset vpn的ip列表走特定路由表 ipset create vpn iphash -exist iptables -t mangle -I PREROUTING -m set --match-set vpn dst -j MARK --set-mark 1 最后进行openvpn的配置,在一般的openvpn配置文件末尾添加下列几行 script-security 2 route-noexec up /etc/openvpn/updown.d/up.sh down /etc/openvpn/updown.d/down.sh 这几行的目的是不使用openvpn服务器端推送的路由配置,执行up.sh脚本中的程序,up.sh脚本内容如下: #!/bin/sh ip route add default via $route_vpn_gateway dev $dev table 100 ip rule add fwmark 1 priority 1984 table 100 这里可以看出我们添加了新的路由表100,该路由表中添加VPN服务器的默认路由,第二行使得通过iptables标记的目的地址位于ipset vpn列表中访问均走 路由表100。 至此我们即实现有且仅有taobao、tmall的访问经过VPN绕行,其它访问均从本地。 关于文中具体的技术细节,请自行度娘dnsmasq ipset。
返回至
项目十八--便携式网络隐私保护器(内部全局VPN)/公司内网硬件访问控制机
。
导航菜单
个人工具
创建账户
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
Welcome
首页
创客大赛
大赛详情
3D打印
安装月球车
图形化编程
操控月球车
升级月球车
编程工具下载
软件下载
Arduino
Processing
Mixly
Scratch
模块套件
Microduino 102
mCookie 102
mCookie 202
mCookie 302
IBC
其他
应用套件
四轴飞行器
平衡车
小车CUBE
音乐播放器
刷卡音乐播放器
wifi气象站
彩虹音乐触摸灯
分贝检测仪
迎门汇报
LED点阵时钟
LED点阵屏幕
硬件
mCookie
Sensor
Microduino
MicroWrt
MicroNux
MicroRobot-Core
MicroRobot-CoreESP
ideaBoard
ideaBox
MicroMV
MicroAI
帮助
常见问题
帮助
工具
链入页面
相关更改
特殊页面
页面信息