Saurichthys
V2EX  ›  Windows

请问各位大佬, windows 下可以实现这种 ip 转发的效果吗

  •  
  •   Saurichthys · Jun 11, 2020 · 4776 views
    This topic created in 2187 days ago, the information mentioned may be changed or developed.

    A: 10.10.10.11 B: 10.10.10.12 C: 10.72:74:74

    服务器 A 和 B 是相同的局域网,B 可以通过 C 一个端口(比如 8888)进行 TCP 访问,且 B 只能访问 C,C 不能主动访问 B,A 和 C 是不相通的。

    要实现在 A 服务器中访问 C 服务器的地址请求,实现 10.10.10.11 -> 10.72:74:74,访问地址为 http:// 10.72:74:74:8888/api 。 请问 A 服务器如何监听请求的 ip 为 10.72:74:74,把 10.72:74:74 转换成请求 10.10.10.12 的 8888 端口就可以, 请问有什么技术可以实现这样子的功能吗,各位大佬们

    20 replies    2020-06-11 17:56:25 +08:00
    laoyur
        1
    laoyur  
       Jun 11, 2020
    要不试试在 A 机器上添加静态路由?

    route add 10.72:74:0 MASK 255.255.255.0 10.10.10.12
    diguoemo
        2
    diguoemo  
       Jun 11, 2020 via Android
    sokit 里面带的转发器功能可以用,去找个 sokit win32 版本
    Jirajine
        3
    Jirajine  
       Jun 11, 2020
    Windows 不清楚,Linux 系统你可以这样做:
    A 上添加路由:
    ip route add 10.72.74.74 via 10.0.0.12
    B 上打开转发和 masquerade
    sysctl -w net.ipv4.ip_forward=1
    iptables -I FORWARD -J ACCEPT
    iptables -t nat -A POSTROUTING -i <与 A 相连的接口名称> -J MASQUERADE
    imn1
        4
    imn1  
       Jun 11, 2020
    我怎么看看看着,B 就像个 proxy ?
    你这里只写了 AB 是相同局域网,没写 B 有没有开放给 A 访问呢
    Saurichthys
        5
    Saurichthys  
    OP
       Jun 11, 2020
    @laoyur 大佬试了不行唉
    @Jirajine 尴尬了 都是 windows server 服务器
    @imn1 A 和 B 都是同个局域网的,都是可以自由访问的
    tomczhen
        6
    tomczhen  
       Jun 11, 2020 via Android
    HTTP 反向代理可以用 IIS 的 ARR 模块来做。如果是基于 IP 的路由,Windows 也有路由功能模块,开启配置就行。

    建议是如果仅仅因为路由表问题,那么调整本地路由表更简单。如果仅需要代理 HTTP 协议,那么用 IIS 反代更简单。
    Jirajine
        7
    Jirajine  
       Jun 11, 2020 via Android
    @Saurichthys Windows 也有 nat 和路由转发功能,具体怎么打开你需要查一下文档。
    或者如果能接受的话用传输层转发,随便什么反代、端口转发工具都可以。
    Saurichthys
        8
    Saurichthys  
    OP
       Jun 11, 2020
    @tomczhen 你好大佬,这应该不是反向代理 A 服务器只能请求 C 服务器的地址( 10.72:74:74:8888 ),而不能通过请求直接请求 B 服务器达到效果
    imn1
        9
    imn1  
       Jun 11, 2020
    如果你能操控 B,事情很简单,把 C:8888 监听转发到 B:某个端口对外监听,一般隧道工具就可以,高级点就上面各位说的添加路由(这个对我超纲),所以我说 B 像个 proxy 。反正你现在就缺在 B 上设置一个监听,并把数据转发给 C,就是这个意思
    Saurichthys
        10
    Saurichthys  
    OP
       Jun 11, 2020
    @imn1 大佬的意思还是 从 A 请求 B 然后实现 A 请求 C 的效果,我的意思是要实现 A 请求 C 实现 A 请求 B 的效果,协议是 TCP 协议,另外发现有一个 v2 文章就是讨论这个,但是没有结果,https://www.v2ex.com/amp/t/421219
    Xusually
        11
    Xusually  
       Jun 11, 2020
    B 上开个反向代理就可以了,nginx 之类的,几行配置
    Saurichthys
        12
    Saurichthys  
    OP
       Jun 11, 2020
    @Xusually 你好,A 是不直接请求 B 的,在 B 开一个反向代理行得通吗
    Xusually
        13
    Xusually  
       Jun 11, 2020
    哦,仔细看了一下,你需要的是在 A 本身可能代码不改动的情况下,自己劫持自己的访问,把对 C 的访问,自己更改成对 B 的中转访问,B 获取后给 A 。
    那么,B 上面还是需要一个反代,或者转发。
    A 上面需要对网络做处理,实现的方式也很多呀,最简单的还是在 A 上开个代理服务器,过滤 C 的请求,单独代理

    感觉楼主你这是要共享某些鉴权啊。。。手动狗头.jpg
    imn1
        14
    imn1  
       Jun 11, 2020
    @Saurichthys #10
    还是 proxy,Sorry,我只懂 http,其他协议你自己举一反三吧
    1.是改 A 的 DNS 请求,把 C 指向 B,你这个情况好像不适用
    2.接管 A 的请求,把 C 的请求指向 B,一是 redir 工具,二是 proxy 工具
    原则都是自我劫持 A 的请求,遇到 filter 指定的就更改目标 host,当然 B 上面要有相关监听端口转发

    C 是 google,A 在墙内,B 在墙外,不就跟你的需求一样么?你搞定协议问题就行了
    yongbeili
        15
    yongbeili  
       Jun 11, 2020
    b 上管理员执行
    netsh interface portproxy add v4tov4 listenaddress=10.10.10.12 listenport=8888 connectaddress=10.72.74.74 connectport=74
    然后 a 直接访问 10.10.10.12:8888
    Saurichthys
        16
    Saurichthys  
    OP
       Jun 11, 2020
    @Xusually 哈哈是的 方便某些操作而已啦
    @imn1 现在就是要劫持自己的请求,请问劫持请求这块有什么工具
    @yongbeili 大佬 就是 A 不能直接访问 B 啦
    takemeaway
        17
    takemeaway  
       Jun 11, 2020
    A 不能访问 B ? 局域网都不能访问? 你这不是逗吗?
    imn1
        18
    imn1  
       Jun 11, 2020
    @takemeaway #17
    他的意思 A 上面的某个(些)软件已经写死了,是直接请求访问 C,他现在没法改这个软件请求,只能用工具绕路

    @Saurichthys #16
    基本 socks 类的 proxy 软件都能做全局 proxy,不过需要带一个 filter (例如 pac )把其他请求排除
    mingl0280
        19
    mingl0280  
       Jun 11, 2020 via Android
    windows 非服务器防火墙配置下转发规则。
    winserver 请打开路由和远程访问功能配一下 NAT.
    mingl0280
        20
    mingl0280  
       Jun 11, 2020 via Android
    另外还有 proxifier 可以用
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2835 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 07:32 · PVG 15:32 · LAX 00:32 · JFK 03:32
    ♥ Do have faith in what you're doing.