ae3803

请问如何中转一个没有控制台权限的服务器的 TCP 流量?

  •  
  •   ae3803 · Jun 13, 2019 · 4915 views
    This topic created in 2552 days ago, the information mentioned may be changed or developed.

    我想用 A 服务器(端口 25565)来中转 B 服务器(原端口 30525,其中 B 服务器没有控制台权限)的流量 A 服务器系统:Debian9 方案大概是这样:我—— A 服务器(端口 25565)—— B 服务器(原端口 30525)

    37 replies    2019-06-18 00:04:45 +08:00
    billlee
        1
    billlee  
       Jun 13, 2019
    路由劫持?
    unixeno
        2
    unixeno  
       Jun 13, 2019 via Android
    你在 a 上跑一个 tcp 转发的不就好了
    然后连 a 服务器的 25565 端口
    ae3803
        3
    ae3803  
    OP
       Jun 13, 2019
    @unixeno 用什么程序?没有 B 服务器的控制台权限
    Tink
        4
    Tink  
    PRO
       Jun 13, 2019 via iPhone
    这 iptables 转发就行了啊
    Tink
        5
    Tink  
    PRO
       Jun 13, 2019 via iPhone
    iptables -t nat -A PREROUTING -p tcp --dport 25565 -j DN AT --to-destination ip:30525
    ae3803
        6
    ae3803  
    OP
       Jun 13, 2019
    @Tink iptables 转发详细命令是什么?不会用 iptables
    ae3803
        7
    ae3803  
    OP
       Jun 13, 2019
    @Tink 哦,我试试
    ae3803
        8
    ae3803  
    OP
       Jun 13, 2019
    @Tink 直接执行这个命令就可以了?
    ae3803
        9
    ae3803  
    OP
       Jun 13, 2019
    @Tink 为什么我试了没有用啊
    MonoLogueChi
        10
    MonoLogueChi  
       Jun 13, 2019 via Android
    在 A 服务器上跑个 Nginx,监听 25565 端口的 TCP,然后转发到 B 服务器的 30525 端口上,类似于反向代理
    unixeno
        11
    unixeno  
       Jun 14, 2019 via Android
    @ae3803 你 ip 改了吗。。。
    ae3803
        12
    ae3803  
    OP
       Jun 14, 2019
    ip 肯定改了啊
    ae3803
        13
    ae3803  
    OP
       Jun 14, 2019
    我是要用 A 服务器的 25565 端口来转发 B 服务器的 30525 端口的 TCP
    ae3803
        14
    ae3803  
    OP
       Jun 14, 2019
    这是我用的命令 iptables -t nat -A PREROUTING -p tcp --dport 25565 -j DNAT --to-destination 222.187.xxx.xxx:30525
    @Tink @unixeno 试了没反应,iptables -L 也查不到
    ae3803
        15
    ae3803  
    OP
       Jun 14, 2019
    系统是 Debian9
    Hardrain
        16
    Hardrain  
       Jun 14, 2019
    在 A 上使用 /运行
    1. iptables
    如果需要更复杂的功能,比如 filter/load-balancing 等
    2. haproxy
    3. 简单的 TCP 转发似乎也可以靠 nginx 的 stream module
    ae3803
        17
    ae3803  
    OP
       Jun 14, 2019 via Android
    @Hardrain 有没有详细的方法?
    wtks1
        18
    wtks1  
       Jun 14, 2019 via Android
    如果只是 tcp,可以在别的设备上编译一个 rinetd,然后传到目标设备上使用
    hlz0812
        19
    hlz0812  
       Jun 14, 2019 via iPhone
    iptables 转发,不会命令自己查一键脚本,脚本都不会用就没办法了
    unknowncheater
        20
    unknowncheater  
       Jun 14, 2019
    回去补充 iptables 知识后再来发帖
    likuku
        21
    likuku  
       Jun 14, 2019
    数据流向,访问流向,先表达清楚。
    ihciah
        22
    ihciah  
       Jun 14, 2019 via iPad
    你这需求就是普通端口转发 rinetd 最省事,当然 socat 这种也行,iptables 性能比较好,其实你可以直接写 REDIRECT 的,记得打开内核转发
    ZRS
        23
    ZRS  
       Jun 14, 2019
    socat
    ech0x
        24
    ech0x  
       Jun 14, 2019 via iPhone
    socat 和 iptables 都行,我也推荐 iptables。
    zk123
        25
    zk123  
       Jun 14, 2019 via iPhone
    对 B 服务器没有控制权,凭啥让人家好好的流量走你的 A 服务器.....
    dszhblx
        26
    dszhblx  
       Jun 14, 2019 via iPhone
    iptables 也就两行命令(本机也转是三行)
    如果流量不大,用 rinet 最简单了,一行配置
    WordTian
        27
    WordTian  
       Jun 14, 2019 via Android
    除了 iptables 命令,还得一条启用内网转发命令
    应该是改 /proc 里的某个文件的值
    Admstor
        28
    Admstor  
       Jun 14, 2019
    楼上好多回答是认真的吗?
    我如果没理解错
    楼主需要的是把 B30525 流量转发到 A25565
    且没有 B 服务器控制权

    在这种情况下,楼主能做的就是在 B 服务器之前的任何路径上镜像 B 服务器所有流量
    本质上是黑客行为
    daiqiangbudainiu
        29
    daiqiangbudainiu  
       Jun 14, 2019
    @ihciah 高版本的 Ubuntu 什么的默认是打开内核转发的吧?
    mattx
        30
    mattx  
       Jun 14, 2019 via iPhone
    @Admstor #28 你理解反了,看楼主最后描述
    mattx
        31
    mattx  
       Jun 14, 2019
    iptables -t nat -A PREROUTING -p tcp --dport 25565 -j DNAT --to-destination [B public ip]:30525
    iptables -t nat -A PREROUTING -p udp --dport 25565 -j DNAT --to-destination [B public ip]:30525
    iptables -t nat -A POSTROUTING -p tcp -d  [B public ip] --dport 30525 -j SNAT --to-source [A 内网地址, 云主机(eth0 是内网地址, 外部有 nat 负责转发) 可能是内网 ip]
    iptables -t nat -A POSTROUTING -p udp -d  [B public ip] --dport 30525 -j SNAT --to-source [A 内网地址, 云主机(eth0 是内网地址, 外部有 nat 负责转发) 可能是内网 ip]

    /etc/sysctl.conf 增加 net.ipv4.ip_forward = 1
    sudo sysctl -p
    ae3803
        32
    ae3803  
    OP
       Jun 14, 2019
    @mattx 我按你的这样试了没有用 阿里云的服务器
    iptables -t nat -A PREROUTING -p tcp --dport 25565 -j DNAT --to-destination B 服 ip:30525
    iptables -t nat -A PREROUTING -p udp --dport 25565 -j DNAT --to-destination B 服 ip:30525
    iptables -t nat -A POSTROUTING -p tcp -d B 服 ip --dport 30525 -j SNAT --to-source 172.31.xxx.xxx
    iptables -t nat -A POSTROUTING -p udp -d B 服 ip --dport 30525 -j SNAT --to-source 172.31.xxx.xxx
    sysctl -p 有返回 net.ipv4.ip_forward = 1
    ae3803
        33
    ae3803  
    OP
       Jun 14, 2019
    给那些不知道我干什么的说下:我在某宝租了台 MC 服务器(面板服,没 ssh 控制权),但是其服务器地址是带端口的,我想用自己的服务器来中转这台服务器的流量同时将端口转发成 25565(即 MC 的默认端口)。
    mattx
        34
    mattx  
       Jun 14, 2019
    @ae3803 那你需要排查下原因, 我这样用是可以的. 你也可以试试 nginx 来转发, 有个 docker 镜像很方便做了这个事情, 我也在用. https://hub.docker.com/r/tekn0ir/nginx-stream, 配置应该是这样的 /root/stream.conf.d/myotherservice.conf
    upstream myotherservice {
    server B public:30525;
    }

    server {
    listen 65432 udp reuseport;
    listen 65432;
    proxy_pass myotherservice;
    }

    docker run -d -p 25565:65432 -p 25565:65432/udp -v /root/stream.conf.d:/opt/nginx/stream.conf.d --name nginx tekn0ir/nginx-stream
    aru
        35
    aru  
       Jun 17, 2019
    socat / haproxy / nginx 都可以在非 root 权限下完成你的需求,性能上 socat 会比较弱一点
    nohup socat TCP-LISTEN: 25565,fork,reuseaddr TCP:serverB-ip: 30525
    h3n6Qx2UB9a4g477
        36
    h3n6Qx2UB9a4g477  
       Jun 17, 2019 via Android
    @ae3803 既然是 minecraft,不如尝试下用 bungeecord 来转发
    Apllex
        37
    Apllex  
       Jun 18, 2019 via Android
    端口很熟悉 minecraft ?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3530 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 80ms · UTC 10:45 · PVG 18:45 · LAX 03:45 · JFK 06:45
    ♥ Do have faith in what you're doing.