SoftEther Error 13 with HAProxy or SNIProxy

I set up an HAProxy (also tried SNIProxy) on my EdgeRouter, sharing port 443 for internal port forwarding and SoftEther Server on Router. When I connect to port 443 from another SoftEther Server, I got a Timeout error, my error message was in Simplified Chinese on my Windows box, I googled and found other ppl … Continue reading “SoftEther Error 13 with HAProxy or SNIProxy”

使用HAProxy搭建SSH代理

VPS SSH经常被封杀,只能国内找个某云,配个HAProxy,实现效果参考 windows 的netsh portproxy。

更多方案参考:https://www.digi77.com/the-art-of-port-forwarding-on-linux/ Incoming search terms:haproxy socks5代理ssh 封杀Link to this post!

Hijack HTTPS over TLS 1.2 without Charles Proxy

TLS 1.2 Charles Proxy 3.9 uses the bouncycastle 1.4 for SSL/TLS, but TLS 1.2 is not yet supported in bcprov’s latest release(1.51), that’s why I got a

on some sites. I tried to upgrade bcprov.jar, some incompatible exceptions were thrown. To check if a https site uses TLSv1.2:

Incoming search terms:Received fatal alert: … Continue reading “Hijack HTTPS over TLS 1.2 without Charles Proxy”

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 的混合模式没测试。 Link to this post!

SNIProxy Bind Outgoing Interface

这篇纯技术,没兴趣的别看。 关于需求 最早试图用路由器自带的功能去实现sni检测+自动路由,结果发现edgerouter的dpi没开放太多资料。 再又试图用squid去实现正向代理,绑定上行网络地址或者设备,虽然edgerouter自带squid以实现transparent proxy,但是自带版本SNI检测不支持(新版不知),绑定upstream的地址或者设备也没看到有人说支持。 又考虑过haproxy,但是这个必须自己写backend(似乎可以haproxy + squid,没去实践过,至少haproxy的acl要写好长;而且这个组合里haproxy都可以直接被跳过,反正有DNAT也有DNS劫持)。 从上边的方案思考过程,我觉得应该能看懂我想要什么。 关于实现 选用sniproxy,也算偶然。虽然之前vps上实验sni检测+代理的时候,大概看了眼(但是最后还是选了haproxy)。不过最后选这个的重要原因就是好改 XD 官方github在https://github.com/dlundquist/sniproxy。 先考虑的方案是,通过socket上联时绑定客户端IP。 本身支持上行设置请求的源地址,大致实现代码在 connection.c:

但是经过试验,配置source address后,数据包还是会根据路由上的路由表跳到域名解析IP该走的那个网络。 所以,这个方案是不满足我的要求的。 如果绑定IP不行,那就试试绑定设备。 绑定IP的方案的可行性,很早以前跟同学Windows下讨论一个客户端设计的时候验证过;但是绑定设备的,完全没搞过。 现查。 然后查到了 SO_BINDTODEVICE。 SO_BINDTODEVICE Bind this socket to a particular device like “eth0”, as specified in the passed interface name. If the name is an empty string or the option length is zero, … Continue reading “SNIProxy Bind Outgoing Interface”