OpenVPN Site-to-Site VPN between Asus Merlin And Ubnt EdgeRouter

前言 Network Topology RT-AC68U 使用PPPoE拨号上网,但是分配的IP是100.64.204.111, 看着像公网IP实际却是Carrier-grade NAT. 现在需要将RT-AC68U与一台在公网的EdgeRouter使用OpenVPN Site-to-Site连接起来,并在RT-AC68U端实现policy-based routing。 需要让RT-AC68U下的所有设备能访问EdgeRouter LAN的网络,并根据需求透过VPS访问指定互联网。 本实验参考下列文章: Set up OpenVPN Site-to-Site on UBNT EdgeRouter Lite EdgeRouter OpenVPN Connectivity Monitor EdgeRouter 策略路由实现分析 EdgeRouter Policy Based Routing Using DNSMASQ IPSET Incoming search terms:asuswrt-merlin site to site vpnauthor6hzclose13rfutureh1cherq81leadp9hopenvpn site to site配置satxfostripjqgLink to this post!

UBNT VPN + Socks5 代理

VPN的方案可以参考 Set up OpenVPN Site-to-Site on UBNT EdgeRouter Lite 或 EdgeOS PPTP VPN客户端配置。 由于某些国际CDN的问题,部分网站不适合用IP路由来设定跳转。所以这里的需求是,针对特定域名把80/443的请求转由VPN的设备出去,其他的不管。 思路1,用EdgeMax自带的webproxy功能,但是很可惜,squid不支持选择outgoing的interface,只能选目标IP。所以放弃。 思路2,DPI监测域名或SNI,但是EdgeRouter Lite的最新版beta 1.8.0b3文档不完整,自己测试了一下相关命令,没搞成,理论上有戏。 思路3,本地socks5代理。我一直会用firefox+foxyproxy作为专用浏览器,正常的需求都用chrome。而且最近secure pipes经常掉,不确定什么情况,包括用国内vps代理远端ssh的方案也不行。 尝试了一些方案,包括dante-server 选上行interface, SSH Tunnel + DNAT,都不行。DNAT的方案不想直接用iptables,怕配置命令保存不方便,所以最终回到了haproxy的方案。 VPS上,配置socks5代理。方案很简单,参考命令如下:

10.99.99.2 和 192.168.121.1 分别是我两种vpn方案的服务端私有IP。 这行命令被我加到了rc.local。当然,还得配ssh 公钥登录。 路由上,安装配置haproxy。依旧参考 使用HAProxy搭建SSH代理。 /etc/haproxy/haproxy.cfg

Incoming search terms:socks5 proxyubnt vpn proxyclassroom3bmsocks5 to pptpvotemfwLink to this post!

EdgeOS PPTP VPN客户端配置

背景及目标 买了个Ubnt EdgeRouter Lite,应同事的需求,研究配置自动翻墙。 考虑过之前配置的各种VPN:PPTP、L2TP、IPSec、AnyConnect/OpenConnect。目前搞定的只有PPTP。 本次配置使用远程PPTP Server,只考虑Google、Twitter和Facebook的自动翻墙,其他可以参照思路自己加路由和NAT。 环境 假设网络已经配置好,eth0为内网口,eth1为外网口。 Incoming search terms:latervcwidey52recallgmePPTP 客户端配置文件中各参数含义positivesdjoutsideqzanot5bcnegativevhymineralskv6minerals8ybman1i2anyonewtuinilfhasek9handsomeb1reightd8zedgeos l2tp vpndrewc1qdiscoverqaacastjbiLink to this post!

SNIProxy 绑定设备后连接超时

edgerouter lite 我之前是tun模式的openvpn site-to-site,网络拓扑很简单,local tun remote tun,简单配个ip就行,edgerouter上直接使用interface-route 跳转到local tun就行了。 后来换用了softether,tap模式,于是需要自己配置IP和路由表。我简单地把firewall modify的地址组切到新的设备上,但是之前的 google dns 和 sniproxy 都保留在openvpn侧。但是最近openvpn被查的厉害,ssh也是被盯上了,所以不得不切换设备到 softether 的 tap 上。

测试,发现连接超时。测试使用的域名是 download.oracle.com,解析的ip是 106.187.61.57。 路由上tcpdump

看到的请求却是:

所以。。。加路由吧。 因为公司是固定IP,所以之前配的是 system gateway-address。 这个时候直接配静态路由会报错:

先删后加

注意一下,delete执行完后需要先commit,否则还会报错。 验证一下

如果执行命令前会纠结是否生效,简单 route add 测试一下即可。无比保证vpn的metric比默认网关的大。 另,interface-route + route 的混合模式没测试。 Incoming search terms:sniproxy ip rangeLink to this post!

基于SNIProxy的路由端网络流量定制分发方案

标题感觉很高大上,其实写得乱七八糟。 前序文章: SNIProxy Bind Outgoing Interface Build SNIProxy Debian Package for EdgeRouter Ubnt EdgeRouter Lite 和 EdgeRouter X 上安装使用SNIProxy 不急,上边三篇可能会在本文内提及。 首先,sniproxy不解释了,但是如标题所属,sniproxy的版本不支持我要的功能,所以我就fork然后改了。 具体思路参考上述第一个链接。 接下来,直接进入正题。 按之前的玩法,我使用路由表来控制流量。这是一个很典型,也很正确的做法;但是也是一个很不好用的玩法。 参考文章:Set up OpenVPN Site-to-Site on UBNT EdgeRouter Lite, EdgeOS PPTP VPN客户端配置 PS:我维护了一份自己的路由表,地址在 https://ip.rst.im/blocks/sskaje 为了让定制化程度高一些,我配了一个Socks代理,实际上是在vpn对端配置的,本地路由做了个DNAT,转发过去了。这样我就可以用firefox+foxyproxy实现本地定制化规则。 参考文章:UBNT VPN + Socks5 代理 和 Set up dante-server on Ubuntu 后来考虑到上述用起来麻烦,又趁着回老家的时候,在家里的ac68u merlin上实践了下WPAD,不过没有在自己家里的edgerouter上搞。 参考文章:Setup WPAD on Asus … Continue reading “基于SNIProxy的路由端网络流量定制分发方案”