Files
SafeLine/website/docs/03-faq/04-config.md
2023-08-10 17:31:27 +08:00

4.9 KiB
Raw Blame History

title
title
配置问题

配置问题

站点配置问题

在没有 SafeLine 的时候,假设小明的域名 xiaoming.com 通过 DNS 解析到自己主机 192.168.1.111,上面在 :8888 端口监听了自己的服务(网站/博客/靶场)等等。

小明通过 http://xiaoming.com:8888 或者 192.168.1.111:8888 来访问自己的服务。

我该如何配置?/ 域名填什么?/ 端口怎么写?/ 上游服务器是什么?

目前社区版 SafeLine 支持的是反向代理的方式接入站点,也就是类似于一台 nginx 服务。这时候小明需要做的就是让流量先抵达 SafeLine然后经过 SafeLine 检测之后,再转发给自己原先的业务。

小明只需要按照如下方式创建站点即可:

  • xiaoming.com 填入页面的「域名」
  • :7777 填入「端口」;或者别的任意非 :8888:9443(被 SafeLine 后台管理页面占用)端口
  • http://192.168.1.111:8888 填入「上游服务器」

创建之后,就可以通过 http://xiaoming.com:7777 或者 192.168.1.111:7777 访问自己的服务了,这时候请求到 http://xiaoming.com:7777 的流量都会被 SafeLine 检测。经过 SafeLine 过滤后,安全的流量会被透传到原先的 :8888 业务服务器(即上游服务器)。

注:直接访问 http://xiaoming.com:8888 的流量,仍然不会被 SafeLine 检测,因为流量并没有经过 SafeLine而是绕过 SafeLine 直接打到了上游服务器上

如果按照如上配置,还是无法成功访问到上游服务器,接着往下看,尝试逐项进行问题排查。

配置完成之后,还是没有成功访问到上游服务器

下面例子都还按照上面小明的环境情况介绍。

1. netstat/ss/lsof 查看端口占用情况

先确认下 0.0.0.0:7777 端口是否有服务在监听。SafeLine 使用 Tengine 来作为代理服务,所以正常来说,应该有一个 nginx 进程监听在 :7777 端口。如果没有的话,可能是 SafeLine 的问题,请通过社群或者 Github issue 提交反馈。

如果有的话,继续往下排查。

2. 是否是被非 SafeLine 的 nginx 监听

基于第一步,已经能确认 :7777 是被某个 nginx 进程监听了,但是并不能确认是被 SafeLine 自己的 nginx 监听。排查是否自己原先有 nginx conf 中配置了 server 监听 :7777。如果有的话,手动解决冲突。要么修改自己原先的 nginx conf要么修改 SafeLine 的站点配置。

也可以直接通过 docker logs -f safeline-tengine 确认 SafeLine 是否有 nginx 报错说端口冲突。

常见的情况就是自己原先有一个服务监听在 :80SafeLine 上配置了站点也监听 :80 端口,就产生了冲突。

如果没有的话,继续往下排查。

3. 是否被防火墙拦截

有操作系统本身的防火墙,还有可能是云服务商的防火墙。根据实际情况逐项排查,配置开放端口的 TCP 访问。

出现如下情况,可能就是被中间某防火墙拦截了:

  1. 192.168.1.111 上 curl -vv 127.0.0.1:7777 能访问到业务,有 HTTP 返回码。
  2. 在本机 curl -vv 192.168.1.111:7777 不通,没有 HTTP 响应;telnet 192.168.1.111 7777 返回 Unable to connect to remote host: Connection refused

4. SafeLine 是否能访问到上游服务器

小明的情况是 SafeLine 和业务在同一台机器,一般不会有不同机器之间的网络问题,但是也建议在 SafeLine 部署的机器上测试一下。如果是两台机器的情况下,需要考虑是否互相之间能正常通信。

直接 curl -H "Host: <SafeLine-IP>" -vv http://xiaoming.com:8888 测一下是否能访问到。如果不行,需要自行排查为什么 SafeLine 的机器没法访问到。

注:这里需要 -H 指定 Host Host: <SafeLine-IP> 进行连通性测试。收到比较多的反馈,在 WAF 上直接配置上游服务器为 HTTPS 的域名,比如 https://xiaoming.com。实际场景是希望先测试 WAF 能力正常后再把域名解析切到 WAF 进行上线。这种本地测试的场景,需要修改本机 hostxiaoming.com 解析到 SafeLine-IP,否则可能会无法成功代理。因为 SafeLine 向上游服务器转发时,代理请求中的 Host 使用的是原始 HTTP 请求中的 Host此时需要自行判断上游业务服务器能够正确处理该代理请求例如上游业务服务器在 Host 没有匹配自己的站点名称时,是否能够处理)

5. 其他情况

如果执行了 1-4

  1. 确认有 nginx 进程监听了 SafeLine 机器的 0.0.0.0:7777 端口
  2. 确认 SafeLine tengine 无端口冲突报错
  3. 确认主机和云服务商的防火墙都没有限制 :7777 端口的 TCP 访问
  4. 确认在 SafeLine 上能访问到「上游服务器」

问题还是没有解决,可能是 SafeLine 产品的问题,请通过社群或者 Github issue 提交反馈。