web 服务部署在 A 服务器上,A 能连外网,但自身没公网, B 服务器有公网,可用公网通过 ssh 进入,B 网络的路由器可以配置端口转发功能, 目前通过 autossh ,可以直接在 B 内 ssh 进入 A , 目前在 A 上部署了个 web , 原以为也可以通过 autossh 的方式在 A 上面将端口转发到 B ,再通过公网,通过转发出来的端口访问,但刚进行了尝试访问不了。有没有解决方案呢,最好不借助工具了,不知道有没有方案
![]() | 1 InDom 2022-10-14 11:13:57 +08:00 Google: iptables 端口转 |
![]() | 2 InDom 2022-10-14 11:14:05 +08:00 端口转发 |
![]() | 3 xdzhang 2022-10-14 11:15:04 +08:00 直接反代嘛 |
![]() | 4 css3 OP 目前是这样的: ssh -R 0.0.0.0:5003:localhost:5002 -p internet_server 5003 通过路由配置转发到公网了 |
![]() | 5 css3 OP |
6 bushiren 2022-10-14 11:25:50 +08:00 那就 frp 穿透试试看了,再不然就试试 蛤蟆吃 |
7 longbow0 2022-10-14 11:57:19 +08:00 zerotier 也可以 |
![]() | 8 LLaMA2 2022-10-14 11:58:04 +08:00 要什么工具?直接 B 机器上 nginx ,nginx 转发到 A 机器,你的 B 机器可以访问 A 机器的。这一切都是流畅的! 要不,我学 ssh 哥的回复: 开 ssh ,我来! |
9 wu00 2022-10-14 11:59:38 +08:00 既然是 web 服务,最简单的应该是反向代理吧。 A 提供 web 服务,B 可通过内网访问 web 服务 B 安装 nginx 将指定请求转发到 A 另外云服务器一般都有提供 nat 网关来干这个事情,nat+弹性公网 ip 多服务器共享带宽出入 |
![]() | 10 css3 OP |
11 wu00 2022-10-14 12:17:42 +08:00 A 机器的 web 服务地址,比如 http://192.168.1.2:5002 |
![]() | 12 liuzhaowei55 2022-10-14 12:21:37 +08:00 via iPhone A 不用做什么,B nginx 反代到 A 的 ip 端口即可 |
![]() | 13 LLaMA2 2022-10-14 12:36:35 +08:00 B 机器的 nginx conf.d 中 xxxx.conf 配置 server { listen 80; listen [::]:80; server_name _; root /data/web/; location /api/ { proxy_pass http://192.168.1.200:3000/; // A 机器 web 服务 } } |
![]() | 14 gesse 2022-10-14 13:24:47 +08:00 ssh 不知道性能怎么样,要不用 gost 试试? https://gost.run/tutorials/port-forwarding/#_4 |
![]() | 15 titanium98118 2022-10-14 13:38:15 +08:00 13 楼的方法就可以 |
16 jidesheng 2022-10-14 16:43:07 +08:00 那就是 13 楼提到的反代服务器,只要你的 B 服务器能访问 A 服务器的 web 资源,你只需要在 B 上面架设一个 Nginx ,通过 proxypass 访问 A 服务器的 web 服务就可以了,如果有别的需求,就 zerotier 或者 tailscale 进行组网 |
17 alie99400 2022-10-14 17:23:15 +08:00 B 机: iptables -t nat -A PREROUTING --dst B 机 IP -p tcp --dport B 端口 -j DNAT --to-destination A 机 IP:端口 iptables -t nat -A POSTROUTING --dst A 机 IP -p tcp --dport 6666 -j SNAT --to-source B 机 IP |
![]() | 18 css3 OP @ye4tar 按你这个配置了,没有用,A 的 web http://172.9.52.1:5002 在 A 上 curl 命令是可访问的,然后通过以下 nginx 配置转到 B 的 5003 , 在 B 上 curl IP:5003 curl: (7) Failed to connect to x.x.x.x port 5003: Connection refused server { listen 5003; listen [::]:5003; server_name _; root /data/web/; location /api/ { proxy_pass http://172.9.52.1:5002/; } } ~ 而且我也完全不能理解,proxy_passproxy_pass http://172.9.52.1:5002/;,A 的 IP 对于 B 来说,是不通的啊, 这里配了 A 的 IP 有啥用啊 |
![]() | 19 chinni 2022-10-14 23:57:16 +08:00 cloudflared |
20 datocp 2022-10-15 00:29:24 +08:00 via Android 最早时用 socat 反向连接 上次测试时用 softether 建立反向连接,用 haproxy 解决该客 ip 记录。 |
![]() | 22 LLaMA2 2022-10-15 10:37:23 +08:00 @css3 你帖子中说 「可以直接在 B 内 ssh 进入 A 」足以说明 B 可以访问到 A ,你说的不通,是 web 不能访问嘛,web 访问不通你得看你的 A 上监听的端口、防火墙以及监听在的网络! |
![]() | 25 css3 OP @ye4tar nginx 没有我没有尝试通过, 还是通过 ssh 实现了 ssh -NfR 0.0.0.0:remote_port:localhost:web_port 公网服务器 ssh -NfL 公网服务器:port:127.0.0.1:remote_port 公网服务器 |
![]() | 26 gumupaier 2022-10-18 15:57:13 +08:00 frp |
![]() | 27 MoonWalker 2022-10-21 13:32:56 +08:00 @css3 请问下第二句怎么理解 |
![]() | 28 MoonWalker 2022-10-21 13:33:40 +08:00 @css3 ssh -NfL 公网服务器:port:127.0.0.1:remote_port 公网服务器 |
![]() | 29 css3 OP @MoonWalker 公网服务器指的公网 IP 地址啊 |