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

有没有办法在 A 主机和 B 服务器之间加入一个 C 机器,但是让 B 觉得数据包仍然是从 A 上传的?

  •  
  •   google456 · 2018-10-11 12:08:15 +08:00 · 2680 次点击
    这是一个创建于 1996 天前的主题,其中的信息可能已经有所发展或是发生改变。

    主机 A 的 IP 是 1.1.1.1 主机 A 上传数据给服务器 B, B 会记录这些数据是主机 A 上传的,然后按数量给 A 发工资 +_+

    问题是 A 到 B 之间很慢,想插入一个 C 机器,IP 是 2.2.2.2 但是如果直接在 C 上加个代理,A 走代理上传给 B,速度是快了,但是 B 认为数据是从 2.2.2.2 上传的了。 于是 A 没有工资了, 这肯定不行。

    问题是: 有没有办法,让 B 仍然觉得数据是从 A 上传的呢?

    在 C 上设置 iptables 貌似不行,也可能是我没弄对。。。

    29 条回复    2018-10-12 09:06:00 +08:00
    rrfeng
        1
    rrfeng  
       2018-10-11 12:10:04 +08:00 via Android
    主要看 b 是怎么判断的。
    跟上传的协议也相关
    google456
        2
    google456  
    OP
       2018-10-11 12:19:27 +08:00
    @rrfeng 能不能再详细说说,我没太明白。
    zn
        3
    zn  
       2018-10-11 12:22:52 +08:00 via iPhone
    难道不是先看看具体是怎么判断的吗?
    azh7138m
        4
    azh7138m  
       2018-10-11 12:33:10 +08:00 via Android
    C 一般叫做路由器
    iptables 是可以的,C 一般要作为 B 的网关存在
    google456
        5
    google456  
    OP
       2018-10-11 12:33:27 +08:00
    @zn 显然我是 A,B 是老板,我没法知道 B 服务器上的事情啊。。。
    google456
        6
    google456  
    OP
       2018-10-11 12:34:11 +08:00
    @azh7138m 能不能麻烦给个例子?
    azh7138m
        7
    azh7138m  
       2018-10-11 12:36:11 +08:00 via Android
    如果是中转服务器的话,可以考虑使用 kcptun 这种东西做隧道

    C 用作网关最好是 BC 可以物理链接的时候
    google456
        8
    google456  
    OP
       2018-10-11 12:44:34 +08:00
    @azh7138m 是需要在 B 上做什么设置吗? 我无法控制或改变 B 的, 我只能改动 A 和 C。
    azh7138m
        9
    azh7138m  
       2018-10-11 12:51:56 +08:00 via Android
    @google456 尝试下 kcptun 这种隧道的方案?
    whileFalse
        10
    whileFalse  
       2018-10-11 13:01:34 +08:00
    你到底想干啥?
    kongkongyzt
        11
    kongkongyzt  
       2018-10-11 13:16:25 +08:00
    你需要在 C 上建立透明代理
    google456
        12
    google456  
    OP
       2018-10-11 13:46:38 +08:00
    @azh7138m 没太理解 kcp 在我这个问题中有什么用。。。
    1.KCP 不是双边的么? 我没法处理 B 啊。
    2.另外好像 kcp 也只是加速,我引入 C 机器后 已经不需要加速了啊,目前问题是隐藏 C,让 B 觉得数据是直接从 A 上传的。给 A 记工资。
    nbndco
        13
    nbndco  
       2018-10-11 13:48:46 +08:00 via iPhone
    不可能的,只要要想一想 B 如何发送数据给 C 就好了
    google456
        14
    google456  
    OP
       2018-10-11 13:49:27 +08:00
    @kongkongyzt 挂透明代理访问 ip 检测网站,也显示代理的 IP,虽然也会记录原始 IP.

    但是主显示的还是代理 IP。

    我需要让 B 直接觉得我是 A,而不是把 A 和 C 同时记录下来。
    google456
        15
    google456  
    OP
       2018-10-11 13:56:29 +08:00
    @nbndco 是不是 tcp 握手协议啥的 对底层协议不太了解。
    zhujinliang
        16
    zhujinliang  
       2018-10-11 13:57:06 +08:00 via iPhone
    可能你需要再加一个 D
    让 C 对 A 冒充 B,让 D 对 B 冒充 A,至于 C 与 D 之间怎么说话都好办了
    huamiao
        17
    huamiao  
       2018-10-11 14:00:18 +08:00
    如果 B 判断的依据是 A 的 ip,那只要把 C 的 ip 设置成 A 的就可以了呀,至于,A 和 B 怎么通讯,办法总是有的吧。
    google456
        18
    google456  
    OP
       2018-10-11 14:05:35 +08:00
    @zhujinliang “让 D 对 B 冒充 A ” 那为什么不直接让 C 冒充 A 我的问题就解决了啊。

    关键是怎么样才能实现“冒充”?
    google456
        19
    google456  
    OP
       2018-10-11 14:06:36 +08:00
    @huamiao “把 C 的 ip 设置成 A 的” 这个怎么弄?
    akira
        20
    akira  
       2018-10-11 14:07:23 +08:00
    要看 B 是通过什么来识别数据来源 ,然后再根据这个来出方案
    liuminghao233
        21
    liuminghao233  
       2018-10-11 14:11:39 +08:00 via iPhone
    不能

    “让 B 觉得数据包仍然是从 A 上传的”

    这种情况下 B 必然会把数据包直接回复给 A

    然而你又说 “问题是 A 到 B 之间很慢”

    所以 不能
    huamiao
        22
    huamiao  
       2018-10-11 14:13:57 +08:00
    @google456 你先要有网络拓扑图,如果 A 直接是公网 IP,那在你这个层级也没辙吧。如果是你可控的网络,那么 C 设置成 A 的 IP,把 A、C 划入一个子网,让 A 连接 C (代理啥的)应该也可以达到目的。
    ttghc
        23
    ttghc  
       2018-10-11 14:16:39 +08:00
    不应该先明确是网络层以下,还是网络层,还是应用层来识别身份的么?
    azh7138m
        24
    azh7138m  
       2018-10-11 16:32:38 +08:00 via Android   ❤️ 1
    A 跑 client C 跑 server 做一个简单的隧道

    如果要对 B 透明,C 要作为 B 的网关存在,你是要修改 B 的配置的,如果 BC 不能物理链接的话,就很难做了
    google456
        25
    google456  
    OP
       2018-10-11 17:33:08 +08:00
    @azh7138m 看起来 我这个需求是没法实现的。谢谢你的回复。
    这个帖子就算结束了吧。
    zjlletian
        26
    zjlletian  
       2018-10-11 17:47:31 +08:00
    full-nat 了解一下?
    zn
        27
    zn  
       2018-10-11 18:50:47 +08:00 via iPhone
    @google456 你都不知道对方怎么判断,你怎么欺骗过去?
    030
        28
    030  
       2018-10-11 19:20:14 +08:00
    为什么不行,你 A 和 B 是直接连着根网线的吗
    xdz
        29
    xdz  
       2018-10-12 09:06:00 +08:00
    如果就是看 ip 的,可以动 c 到 a 的路由,可以看看 tproxy
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2821 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 1011ms · UTC 13:27 · PVG 21:27 · LAX 06:27 · JFK 09:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.