weishao666
V2EX  ›  问与答

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

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

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

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

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

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