V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rizon
V2EX  ›  程序员

centos 怎么转发请求到另一个 IP?

  •  
  •   rizon ·
    othorizon · 2019-04-13 11:55:53 +08:00 · 3703 次点击
    这是一个创建于 2050 天前的主题,其中的信息可能已经有所发展或是发生改变。

    firewall-cmd 以及 iptables 折腾了好久实在是没成功。

    家里有个内网主机 A 和主机 B,主机 B 使用 zerotier 组了异地局域网,主机 A 不想安装 zerotier。
    所以从外网的请求都会通过这个虚拟网卡发送的主机 B,希望主机 B 可以把请求转发给 A。
    比如 ssh -p 23 root@HostB 实现可以 ssh 到主机 A

    15 条回复    2019-05-30 00:57:06 +08:00
    azh7138m
        1
    azh7138m  
       2019-04-13 12:05:18 +08:00   ❤️ 1
    如果只是 forward 一个端口上 tcp 或者 udp 流量,我现在在用的方案是 https://github.com/rssnsj/portfwd
    rizon
        2
    rizon  
    OP
       2019-04-13 12:07:16 +08:00
    @azh7138m #1

    最后换方案了。,。改用 frp 来穿透内网了,frp 的客户端可以绑定 ip 地址,间接实现了我的需求。不折腾了,类似,何必呢~开心就好~~~~
    rizon
        3
    rizon  
    OP
       2019-04-13 12:09:40 +08:00
    @azh7138m #1 你发的这个似乎很不错哈,我试试哈,谢哈~
    bruce2000
        4
    bruce2000  
       2019-04-13 12:10:29 +08:00
    haproxy
    nginx
    了解下
    rizon
        5
    rizon  
    OP
       2019-04-13 12:12:26 +08:00
    @bruce2000 #4 是种方案,但是感觉大材小用啊。我就想简单的转发一个请求~~


    @azh7138m #1 centos 怎么安装。。。
    azh7138m
        6
    azh7138m  
       2019-04-13 12:16:07 +08:00
    @rizon 有 Makefile 的啊,这个要自己编译一下.....
    cd src
    make all
    make install
    然后就可以用 tcpfwd 和 udpfwd 了,需要自己包一个服务 :)
    rizon
        7
    rizon  
    OP
       2019-04-13 12:21:08 +08:00
    @azh7138m #1 感谢 很好用~~
    binux
        8
    binux  
       2019-04-13 12:24:05 +08:00   ❤️ 1
    iptables -t nat -A PREROUTING -d $HOST_B/32 -i eth0 -p tcp -m tcp --dport 23 -j DNAT --to-destination $HOST_A
    aaa5838769
        9
    aaa5838769  
       2019-04-13 12:28:35 +08:00
    防火墙规则就可以吧
    liwufan
        10
    liwufan  
       2019-04-13 12:45:40 +08:00
    祖传 netcat 就行啊

    mkfifo fifo
    nc -lk 跳板机端口 <fifo | nc 目标机 ip a 目标机端口 >fifo
    snoopygao
        11
    snoopygao  
       2019-04-13 15:00:02 +08:00
    A 有外网地址的机器 111.111.111.111 ,假设用户名是 user_a
    vi /etc/ssh/sshd_config
    GatewayPorts yes
    或 ssh 命令中加-g 参数

    B 只有内网的机器,假设用户名是 user_b
    设置密钥对
    ssh-keygen -t rsa -b 4096
    ssh-copy-id [email protected]
    连接到 A 机,会自动启动 2022 端口
    ssh -fCNR 2022:localhost:22 [email protected]

    C
    其它机器上执行
    ssh [email protected] -p 2022, 就能连到 B 机了

    最后在 B 机上设置上 autossh 防止断开连接
    snoopygao
        12
    snoopygao  
       2019-04-13 15:01:17 +08:00
    @snoopygao 第二步
    连接到 A 机,会自动启动 2022 端口
    ssh -fCNR 2022:localhost:22 [email protected]
    snoopygao
        13
    snoopygao  
       2019-04-13 15:02:17 +08:00
    还是写错了 user_a
    dorothyREN
        14
    dorothyREN  
       2019-04-13 17:30:16 +08:00
    iptables 直接转发不就行了
    azh7138m
        15
    azh7138m  
       2019-05-30 00:57:06 +08:00
    我重新实现了一下 portfwd https://github.com/muzea/portfwd
    提供了 api 可以控制转发地址 :D
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   915 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 21:41 · PVG 05:41 · LAX 13:41 · JFK 16:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.