天天看點

使用haproxy 實作 http/ssh/mstsc複用

  網上較多HTTP/SSH複用,但實際環境中,使用HAPROXY做IIS負載均衡時,還需要使用80端口來使用遠端桌面管理伺服器。

近日通過Wireshark抓包,找到了TPKT的報頭字段,終于成功實作RDP協定複用:

注:通常RDP使用TPKT作為其傳輸協定,TPKT運作在TCP之上。 當用于傳輸RDP時,使用的TCP端口是3389,而不是正常的TPKT端口102。

參考文獻:

<a href="http://blog.csdn.net/kevin_bobolkevin/article/details/50790967" target="_blank">http://blog.csdn.net/kevin_bobolkevin/article/details/50790967</a>

TPKT通訊說明

<a href="https://wenku.baidu.com/view/9f509844e2bd960591c67723.html" target="_blank">https://wenku.baidu.com/view/9f509844e2bd960591c67723.html</a>

<a href="https://s4.51cto.com/wyfs02/M00/9A/BF/wKiom1laCESgVrh0AANwJnBcOd4329.png-wh_500x0-wm_3-wmp_4-s_2573990352.png" target="_blank"></a>

最終配置檔案如下,供參考:

------------------------------------------------------

global

        daemon

        user haproxy

        group haproxy

        maxconn 49985

        log 127.0.0.1 local0

        log 127.0.0.1 local1 notice

       # tune.ssl.default-dh-param 2048

defaults

        mode tcp

        log global

        log 127.0.0.1 local0 err

        option tcplog

        option dontlog-normal

        timeout connect    10s

        timeout queue      30s

        timeout client     15m

        timeout client-fin 15m

        timeout server     15m

        timeout tunnel     12h

listen monitor 

        bind *:8888

#監聽端口

        mode http

#http的7層模式

        maxconn 5

        option httplog

        stats enable

        stats uri /

        stats refresh 15s

        timeout client     30s

        timeout server     30s

listen http

        bind *:80

maxconn 800

    timeout client 1h

    tcp-request inspect-delay 2s

    acl is_http req.payload(0,3) -m bin 474554 504f53 505554 44454c

    acl is_ssh req.payload(0,3) -m bin 535348    

    acl is_rdp req.payload(0,3) -m bin 030000    

    tcp-request content accept if is_http

   # use_backend http if is_http

    use_backend ssh if is_ssh

    use_backend rdp if is_rdp

        option tcpka

        #是否允許用戶端發送tcp keepalive 包,這個和http 的keepalive 沒有關系

        #option redispatch  

        #是否允許失敗後重新配置設定session  這個設定會存在傳回的K/3CLOUD系統的session id變化導緻閃退。可能的原因服務端有異常或者傳輸出現了異常

        option abortonclose

        #當伺服器負載很高的時候,自動結束掉目前隊列處理比較久的連結

        #tcp-request inspect-delay 30s

        hash-type consistent        

        balance roundrobin

        stick-table type ip size 10240k expire 24h

        stick on src

        server server01  192.168.90.121:80  weight 100  check agent-check agent-port 3333 minconn 0 maxconn 250 on-marked-down shutdown-sessions

        server server02  192.168.90.122:80  weight 100  check agent-check agent-port 3333 minconn 0 maxconn 250 on-marked-down shutdown-sessions

backend ssh

    mode tcp

    timeout server 1h

    server server-ssh 192.168.90.126:22

backend rdp

    server server-mstsc 192.168.90.121:3389

本文轉自 sfih 51CTO部落格,原文連結:http://blog.51cto.com/dayday/1944129

繼續閱讀