服务器代理相关问题

转发内网网页到本地

在 非内网环境下访问内网网页比较麻烦,记录一下解决这种问题的方式

环境描述

一台内网中的linux服务器,使用 公网服务器 + frp 进行内网穿透

在内网环境下访问的 两种网页(目前为止遇到这两种):

  1. 服务 直接开在这个服务器上
  2. 服务 没在该服务器上

第一种 服务 在服务器上

例如,一个 自建的 overleaf 网页服务开在 服务器的 8888 端口。

Step1

可以直接 在服务器中查看 这个 overleaf 开在哪个 ip 上 ,命令如下:

1
sudo lsof -i :8888

这里已经事先知道了服务开在了 10.10.5.4 这个内网 IP

Step2

直接将本地某个端口的流量转发到 服务器 对应 ip:port 上:

1
ssh -L 8888:10.10.5.4:8888 user@公网服务器ip -p <frp穿透端口>

然后就可以直接 通过 http://localhost:8888 来访问这个主机的服务了

第二种 服务 不在服务器上

在内网中 需要访问的 url 例如:

想要访问这些内网环境下的page,使用下面方式(比较简单,还有一些nginx之类的方法):

Step1

通过 ssh -D 动态转发?好像是,将内网服务器当做代理服务器,代理本地流量:

1
ssh -D 7899 user@ip -p port

由于本地clash用了7890端口,⚠️注意不要冲突

Step2

到这里为止已经在本地打开了一代理端口7899,发送到7899端口的流量将会被 内网服务器代理,可以用下面 命令测试一下:

1
curl -x socks5://localhost:7899 -k https://git.modeloverfit.com/users/sign_in

说明: -x 指定curl的代理 -k 用于 https 忽略证书安全之类的验证大概是

这时已经能正确获得改内网url的完整内容了,下面配合chrome内核浏览器进行设置代理规则

Step3

在这个插件内:

  • 设置代理服务器 也就是 localhost 7899

  • 设置对于modeloverfit及其子域名的代理规则:

  • 最后记得打开插件 使用上面配置的代理设置,然后就可以直接访问内网的url了

给服务器打开代理

环境:
内网服务器 ICCT-T
公网服务器 Z
用 frp 把 Z 的 6000 转发到 T4 的 22 建立 ssh 穿透
ICCT-T-P = Z -p 6789
本地 PC 有代理 localhost:7890

Step1

打开本地的代理 Clash

Step2

把 远端 1080 端口的流量转到本地代理端口:

1
ssh -R 1080:localhost:7890 ICCT-T-P 

Step3

设置 服务器上 的代理端口 :
在 ~/.proxychains/proxychains.conf 中添加

1
http 127.0.0.1 1080