家里联通,转发了路由管理页面被联通警告了,查了下,nginx 提供 https 服务的端口,如果用 http 访问的话会返回 400 Bad Request,有返回就会被检测到……
于是搜了下,haproxy 可以解决这个问题,实现只能用正确域名访问的需求
目标:
访问 http ://IP:端口 不响应(超时或拒绝)
访问 https ://IP:端口 不响应(超时或拒绝)
访问 http ://正确域名:端口 不响应(超时或拒绝)
openssl s_client -host -port 不建立 SSL 链接
telnet TCP 端口未打开
访问 https ://正确域名:端口 正常使用
haproxy 可以装在 docker 上或者 openwrt 上( openwrt 记得装 haproxy 不是 haproxy-nossl )
配置文件示例
frontend router_frontend
mode tcp
bind 192.168.1.1:44444
tcp-request inspect-delay 5s
tcp-request content accept if { req_ssl_hello_type 1 }
acl is_example req_ssl_sni -i example.com
use_backend router_backend if is_example
default_backend no_sni
backend router_backend
server router 192.168.1.1:443
backend no_sni
server no_sni 127.0.0.1:65535
以上配置绑定 192.168.1.1:44444,只有接受的请求中 sni 为 example.com 时才会转发给 192.168.1.1:443
否则转发给 127.0.0.1:65535 形成超时,也可以找个防火墙阻断的端口形成拒绝
此法不关注证书是自签还是购买,只要后端是 HTTPS 就行
理论上 HTTP 也有类似的操作
当然运营商或许可以在 SDN 光猫上跑个入站检测,检测到入站 https 流量以后回报域名然后核实,那这办法也将会无效
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.