目前有一台linux系统的转发机做ssh转发,遇到了一点特殊情况。
假设这台linux系统转发机为机器A,有一台机器B需要通过机器A,去访问机器C和机器D,而且必须用同一个端口9000端口。
如果我在机器A上设置两个网卡,网卡1和网卡2,可不可以做到B机器通过网卡1的9000端口访问机器C,通过网卡2的9000端口访问机器D。
原先是需要两台转发机的,但是目前条件有限,只有这么一台机器作为转发机,所以想来请教一下,这个方法能不能够实现。能够实现的话,需要怎么去实现?

解决方案 »

  1.   

    就是这种ssh转发
    ssh -TNfaq -L 158.120.30.25:9000:150.120.60.155:9000 [email protected]
    就是目前需要这个9000端口,分别访问机器C和机器D,可不可以实现网卡1的9000端口,访问机器C,网卡2的9000端口访问机器D
      

  2.   

    用nginx(或者haproxy) 代理ssh感觉可以```
    stream {
        server {
            listen 158.120.30.25:9000;
            proxy_pass ssh1;
        }    server {
            listen 150.120.60.155:9000;
            proxy_pass ssh2;
        }    upstream ssh1 {
            server ssh1:22;
        }
        upstream ssh2 {
            server ssh2:22;
        }
    }
    ```
      

  3.   

    2、通过脚本文件定义端口转发
    脚本含义:通过访问52.82.x.x的4000端口来访问172.31.x.x的22端口
    52.82.x.x为公有IP   172.31.x.x为私有IPiptables -t nat -A PREROUTING -p tcp -m tcp --dport 4000 -j DNAT --to-destination 172.31.x.x:22iptables -t nat -A POSTROUTING -p tcp -m tcp --dport 22 -j SNAT --to-source 52.82.x.x清空net表
    iptables -F -t nat查看已经配置的端口列表
    iptables -t nat --list