V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
weishao666
V2EX  ›  问与答

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

  •  
  •   weishao666 · 360 天前 · 1669 次点击
    这是一个创建于 360 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    楼上的路由、给网卡添加 IP 的方法,能解决问题,但仍然具有一定程度的耦合,通用性比代理转发方案要差一些。
    rrfeng
        15
    rrfeng  
       358 天前 via Android
    @laminux29 正解个屁,第一步要拦截发往目标 IP 的请求,nginx 你告诉我怎么做,socat 怎么做?
    laminux29
        16
    laminux29  
       358 天前
    @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  
       358 天前 via Android
    @laminux29 他要能控制 10.16.22.23 干嘛还要劫持回本机??
    或者 10.16.22.23 是生产服务器,你把生产干了转发到你本地??
    laminux29
        18
    laminux29  
       358 天前
    @rrfeng

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

    我猜测,有可能是他的同事水平菜,硬编码了访问接口 IP ,他又不想求同事改成配置文件,但他又要去测试,所以就遇到了这个问题。
    rrfeng
        19
    rrfeng  
       358 天前 via Android
    @laminux29 👍
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3160 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 00:36 · PVG 08:36 · LAX 16:36 · JFK 19:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.