V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
weishao666
V2EX  ›  问与答

求某个内网 ip 映射到 localhost 的方法

  •  
  •   weishao666 · Dec 8, 2023 · 2145 views
    This topic created in 871 days ago, the information mentioned may be changed or developed.

    比如: http://10.16.22.23:3001 映射到 http://localhost:3001

    迫于屎山代码,代码里边很多地方写死了接口的访问路径,由于某些原因,暂时不便修改。本地开发不方便,总需要新切分支,我能不能找个工具直接代理映射下,nginx 理论上应该不行?我试了改 host 不行

    19 replies    2023-12-11 04:35:57 +08:00
    rwecho
        1
    rwecho  
       Dec 8, 2023
    为啥修改 hosts 不行? 为啥 nginx 也不行?感觉你有其他信息
    ktqFDx9m2Bvfq3y4
        2
    ktqFDx9m2Bvfq3y4  
       Dec 8, 2023 via iPhone
    或者可以试试改理由?比如重定向到你的内网 IP 。
    bobryjosin
        3
    bobryjosin  
       Dec 8, 2023
    hosts 只能作用域名,你确定目标地址是域名?如果是 ip ,你需要在上级路由器上做 dstnat
    danbai
        4
    danbai  
    PRO
       Dec 8, 2023 via Android
    用 gost 做个端口转发就行监听本地 3001 转发到 10.16.22.23:3001
    danbai
        5
    danbai  
    PRO
       Dec 8, 2023 via Android
    看反了,可以走代理然后重定向 10.16.22.23 的请求到本地 3001
    danbai
        6
    danbai  
    PRO
       Dec 8, 2023 via Android
    ik
        7
    ik  
       Dec 8, 2023 via iPhone
    gost -L tcp://127.0.0.1:3001/10.16.22.23:3001
    GG668v26Fd55CP5W
        8
    GG668v26Fd55CP5W  
       Dec 8, 2023 via iPhone
    nginx 可以啊,就是简单的反代。
    rrfeng
        9
    rrfeng  
       Dec 8, 2023 via Android   ❤️ 1
    目标是 IP ?直接把 IP 配到 lo 上呗……
    ip add 10.xxx lo

    楼上都在绕啥呢…
    rrfeng
        10
    rrfeng  
       Dec 8, 2023 via Android
    哦然后还要让你的本地服务端程序监听 0.0.0.0 或者指定这个 IP 。
    gamexg
        11
    gamexg  
       Dec 8, 2023
    @rrfeng +1
    最简单的直接给本机网卡加上 ip 。
    Corybyte
        12
    Corybyte  
       Dec 8, 2023 via Android
    用 iptables 把 127.0.0.1 映射目标 ip ?
    msg7086
        13
    msg7086  
       Dec 9, 2023
    像上面说的,把地址加进 localhost 网卡就行了。
    同理如果你想屏蔽软件访问某个 IP ,除了用 iptable 锁以外也可以把 IP 加进 lo 达到类似的目的。
    laminux29
        14
    laminux29  
       Dec 9, 2023
    nginx 、gost 、socat 这类代理与转发的方法才是正解,因为它实现了访问地址的 IP 、端口号的解耦。

    楼上的路由、给网卡添加 IP 的方法,能解决问题,但仍然具有一定程度的耦合,通用性比代理转发方案要差一些。
    rrfeng
        15
    rrfeng  
       Dec 10, 2023 via Android
    @laminux29 正解个屁,第一步要拦截发往目标 IP 的请求,nginx 你告诉我怎么做,socat 怎么做?
    laminux29
        16
    laminux29  
       Dec 10, 2023
    @rrfeng

    1.假设楼主的 localhost 在内网的 IP 为 172.16.0.1 。

    2.在 10.16.22.23 上面架设 nginx 代理或 socat 代理,代理源地址 10.16.22.23:3001 ,目标地址 172.16.0.1:3001 。

    3.nginx 代理的配置,以及 socat 的代理命令行,直接问 GPT 就行了。
    rrfeng
        17
    rrfeng  
       Dec 10, 2023 via Android
    @laminux29 他要能控制 10.16.22.23 干嘛还要劫持回本机??
    或者 10.16.22.23 是生产服务器,你把生产干了转发到你本地??
    laminux29
        18
    laminux29  
       Dec 11, 2023
    @rrfeng

    我之前也有这个疑问,我是再三确认了楼主的需求,他的意思是不方便修改程序里的硬编码的访问路径,而并不是说不方便控制 10.16.22.23 。

    我猜测,有可能是他的同事水平菜,硬编码了访问接口 IP ,他又不想求同事改成配置文件,但他又要去测试,所以就遇到了这个问题。
    rrfeng
        19
    rrfeng  
       Dec 11, 2023 via Android
    @laminux29 👍
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1139 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 74ms · UTC 18:12 · PVG 02:12 · LAX 11:12 · JFK 14:12
    ♥ Do have faith in what you're doing.