没有公网的服务器上的 web 服务如何通过有公网的服务器来访问? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
css3
V2EX    问与答

没有公网的服务器上的 web 服务如何通过有公网的服务器来访问?

  •  
  •   css3 2022-10-14 11:08:00 +08:00 2403 次点击
    这是一个创建于 1098 天前的主题,其中的信息可能已经有所发展或是发生改变。

    web 服务部署在 A 服务器上,A 能连外网,但自身没公网, B 服务器有公网,可用公网通过 ssh 进入,B 网络的路由器可以配置端口转发功能, 目前通过 autossh ,可以直接在 B 内 ssh 进入 A , 目前在 A 上部署了个 web , 原以为也可以通过 autossh 的方式在 A 上面将端口转发到 B ,再通过公网,通过转发出来的端口访问,但刚进行了尝试访问不了。有没有解决方案呢,最好不借助工具了,不知道有没有方案

    第 1 条附言    2022-10-17 09:57:17 +08:00
    还是通过 ssh 实现了
    ssh -NfR 0.0.0.0:remote_port:localhost:web_port 公网服务器
    ssh -NfL 公网:port:127.0.0.1:remote_port 公网
    29 条回复    2022-10-24 21:58:38 +08:00
    InDom
        1
    InDom  
       2022-10-14 11:13:57 +08:00
    Google: iptables 端口转
    InDom
        2
    InDom  
       2022-10-14 11:14:05 +08:00
    端口转发
    xdzhang
        3
    xdzhang  
       2022-10-14 11:15:04 +08:00
    直接反代嘛
    css3
        4
    css3  
    OP
       2022-10-14 11:15:18 +08:00
    目前是这样的:
    ssh -R 0.0.0.0:5003:localhost:5002 -p internet_server
    5003 通过路由配置转发到公网了
    css3
        5
    css3  
    OP
       2022-10-14 11:18:41 +08:00
    bushiren
        6
    bushiren  
       2022-10-14 11:25:50 +08:00
    那就 frp 穿透试试看了,再不然就试试 蛤蟆吃
    longbow0
        7
    longbow0  
       2022-10-14 11:57:19 +08:00
    zerotier 也可以
    LLaMA2
        8
    LLaMA2  
       2022-10-14 11:58:04 +08:00
    要什么工具?直接 B 机器上 nginx ,nginx 转发到 A 机器,你的 B 机器可以访问 A 机器的。这一切都是流畅的!
    要不,我学 ssh 哥的回复:

    开 ssh ,我来!
    wu00
        9
    wu00  
       2022-10-14 11:59:38 +08:00
    既然是 web 服务,最简单的应该是反向代理吧。
    A 提供 web 服务,B 可通过内网访问 web 服务
    B 安装 nginx 将指定请求转发到 A

    另外云服务器一般都有提供 nat 网关来干这个事情,nat+弹性公网 ip 多服务器共享带宽出入
    css3
        10
    css3  
    OP
       2022-10-14 12:11:21 +08:00
    @wu00
    @ye4tar
    A 没有公网,B 的 nginx 转发到 A , 这个操作具体要在 B 的 nginx 配置 A 的啥值?
    wu00
        11
    wu00  
       2022-10-14 12:17:42 +08:00
    A 机器的 web 服务地址,比如 http://192.168.1.2:5002
    liuzhaowei55
        12
    liuzhaowei55  
       2022-10-14 12:21:37 +08:00 via iPhone
    A 不用做什么,B nginx 反代到 A 的 ip 端口即可
    LLaMA2
        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 服务
    }
    }
    gesse
        14
    gesse  
       2022-10-14 13:24:47 +08:00
    ssh 不知道性能怎么样,要不用 gost 试试?
    https://gost.run/tutorials/port-forwarding/#_4
    titanium98118
        15
    titanium98118  
       2022-10-14 13:38:15 +08:00
    13 楼的方法就可以
    jidesheng
        16
    jidesheng  
       2022-10-14 16:43:07 +08:00
    那就是 13 楼提到的反代服务器,只要你的 B 服务器能访问 A 服务器的 web 资源,你只需要在 B 上面架设一个 Nginx ,通过 proxypass 访问 A 服务器的 web 服务就可以了,如果有别的需求,就 zerotier 或者 tailscale 进行组网
    alie99400
        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
    css3
        18
    css3  
    OP
       2022-10-14 23:03:19 +08:00
    @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 有啥用啊
    chinni
        19
    chinni  
       2022-10-14 23:57:16 +08:00
    cloudflared
    datocp
        20
    datocp  
       2022-10-15 00:29:24 +08:00 via Android
    最早时用 socat 反向连接

    上次测试时用 softether 建立反向连接,用 haproxy 解决该客 ip 记录。
    LLaMA2
        21
    LLaMA2  
       2022-10-15 10:34:08 +08:00
    @css3 location 中加了 /api/
    你访问的时候就是 IP:5003/api
    LLaMA2
        22
    LLaMA2  
       2022-10-15 10:37:23 +08:00
    @css3 你帖子中说 「可以直接在 B 内 ssh 进入 A 」足以说明 B 可以访问到 A ,你说的不通,是 web 不能访问嘛,web 访问不通你得看你的 A 上监听的端口、防火墙以及监听在的网络!
    css3
        23
    css3  
    OP
       2022-10-15 14:55:44 +08:00 via iPhone
    @ye4tar 直接在 B 内 ssh 进入 A ,是因为开了 autossh 做了端口转发啊
    LLaMA2
        24
    LLaMA2  
       2022-10-15 17:27:20 +08:00
    @css3 开 ssh ,我来
    css3
        25
    css3  
    OP
       2022-10-17 09:58:04 +08:00
    @ye4tar
    nginx 没有我没有尝试通过, 还是通过 ssh 实现了
    ssh -NfR 0.0.0.0:remote_port:localhost:web_port 公网服务器
    ssh -NfL 公网服务器:port:127.0.0.1:remote_port 公网服务器
    gumupaier
        26
    gumupaier  
       2022-10-18 15:57:13 +08:00
    frp
    MoonWalker
        27
    MoonWalker  
       2022-10-21 13:32:56 +08:00
    @css3 请问下第二句怎么理解
    MoonWalker
        28
    MoonWalker  
       2022-10-21 13:33:40 +08:00
    @css3 ssh -NfL 公网服务器:port:127.0.0.1:remote_port 公网服务器
    css3
        29
    css3  
    OP
       2022-10-24 21:58:38 +08:00 via iPhone
    @MoonWalker 公网服务器指的公网 IP 地址啊
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3744 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 00:51 PVG 08:51 LAX 17:51 JFK 20:51
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86