zoukankan      html  css  js  c++  java
  • 端口转发

    windows系统

    包括xp  2003,2008等,都自带portproxy功能。目前只支持tcp协议的端口转发,前提需要作为portproxy的主机需要安装IPV6,安装可以不启用IPV6。


    A.配置方法
    假定需要通过192.168.1.8的14941端口连接192.168.1.118的1494端口,则需要在192.168.1.8主机的命令行输入如下语句
    netsh  interface ipv6 install
    netsh interface portproxy add v4tov4  listenaddress=192.168.1.8 listenport=14941 connectaddress=192.168.1.118  connectport=1494

    ---如果已经安装IPV6,第一条可以不需要
    ---如果操作系统开启了主机防火墙,需要放行TCP 14941的入站连接
    ---2008防火墙较以前版本有较大改动,可以参考如下链接:

    http://pcedu.pconline.com.cn/soft/virus/safe/0710/1130476.html

    如果想取消上面配置的端口转发,可以用如下语句:

    netsh interface  portproxy delete v4tov4 listenaddress=192.168.1.8  listenport=33891

    如果想查看已经配置了哪些端口转发,可以用如下语句:

    netsh interface  portproxy show  v4tov4

    B.优点
    可以随时根据需要添加或删除端口转发条目,并且重启操作系统仍能自动保存之前的配置并自动启用,不像HAproxy修改完配置文件还需重启HAproxy。

    网上有的说xp配置端口转发不起作用,估计是没有安装IPV6的缘故,用xp测试,安装了IPV6后可以实现端口转发,并且不需要开启路由和远程访问服务。

    另外考虑到端口转发的冗余,可以多台主机都配置端口转发,且不用指定本地监听地址,这样可以通过操作系统提供浮动地址来实现冗余:
    netsh  interface portproxy add v4tov4 listenport=14941 connectaddress=192.168.1.118  connectport=1494

    程序实现动态添加的时候,可以telnet到每台都添加条目,也可以只与虚地址联系,每次都检查是否有对应的映射条目(根据ica文件中需要连接的citrix服务器的IP地址来检查),如果没有则命令行添加,添加时要确保本地端口不能被占用,并且还需要考虑防火墙,用netsh添加入站端口访问规则。

    ----需要citrix主机开启telnet服务,并设置访问控制,只允许特定主机连接。

    Linux系统

    1、socat转发

    socat TCP4-LISTEN:188,reuseaddr,fork TCP4:192.168.1.22:123 &

    (在本地监听188端口,并将请求转发至192.168.1.22的123端口)



    TCP4-LISTEN:在本地建立的是一个TCP ipv4协议的监听端口;
    reuseaddr:绑定本地一个端口;
    fork:设定多链接模式,即当一个链接被建立后,自动复制一个同样的端口再进行监听

    socat启动监听模式会在前端占用一个shell,因此需使其在后台执行。

    2、ssh转发

    本地访问127.0.0.1:port1就是host:port2(用的更多)
    ssh -CfNg -L port1:127.0.0.1:port2 user@host    #本地转发
    
    访问host:port2就是访问127.0.0.1:port1
    ssh -CfNg -R port2:127.0.0.1:port1 user@host    #远程转发
    
    可以将dmz_host的hostport端口通过remote_ip转发到本地的port端口
    ssh -qTfnN -L port:dmz_host:host:port -l user remote_ip   #正向隧道,监听本地port
    
    可以将dmz_host的hostport端口转发到remote_ip的port端口
    ssh -qTfnN -R port:dmz_host:host:port -l user remote_ip   #反向隧道,用于内网穿透防火墙限制之类

    *注:以上这种方法只能把端口绑定远程服务器的localhost地址上。如果需要被公网访问,可以在/etc /sshd_config中修改GatewayPorts no为GatewayPorts yes来打开它
    这样就会被绑定到0.0.0.0
    相应的命令如下
    本地访问127.0.0.1:port1就是host:port2(用的更多)
    ssh -CfNg -L 0.0.0.0:port1:127.0.0.1:port2 user@host    #本地转发
    
    访问host:port2就是访问127.0.0.1:port1
    ssh -CfNg -R 0.0.0.0:port2:127.0.0.1:port1 user@host    #远程转发

    请使用手机"扫一扫"x

  • 相关阅读:
    hadoop——数据清洗测试
    本地配置hadoop
    从textarea中获取数据后按原样显示
    form自动提交
    艺术和代码的结合 turtle + python 的结合
    python-->微信支付
    python-图片流传输(url转换二维码)
    python-qrcode-二维码
    Java 通过先序中序序列生成二叉树
    Java 实现二叉树的构建以及3种遍历方法
  • 原文地址:https://www.cnblogs.com/zlgxzswjy/p/6869743.html
Copyright © 2011-2022 走看看