MS เชฐเชฟเชฎเซ‹เชŸ เชกเซ‡เชธเซเช•เชŸเซ‹เชช เช—เซ‡เชŸเชตเซ‡, HAProxy เช…เชจเซ‡ เชชเชพเชธเชตเชฐเซเชก เชฌเซเชฐเซเชŸ เชซเซ‹เชฐเซเชธ

เชฎเชฟเชคเซเชฐเซ‹, เชนเซ‡เชฒเซ‹!

เช˜เชฐเชฅเซ€ เชคเชฎเชพเชฐเชพ เช“เชซเชฟเชธ เชตเชฐเซเช•เชธเซเชชเซ‡เชธ เชธเชพเชฅเซ‡ เช•เชจเซ‡เช•เซเชŸ เชฅเชตเชพเชจเซ€ เช˜เชฃเซ€ เชฐเซ€เชคเซ‹ เช›เซ‡. เชคเซ‡เชฎเชพเช‚เชฅเซ€ เชเช• เชฎเชพเช‡เช•เซเชฐเซ‹เชธเซ‹เชซเซเชŸ เชฐเชฟเชฎเซ‹เชŸ เชกเซ‡เชธเซเช•เชŸเซ‹เชช เช—เซ‡เชŸเชตเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ‹ เช›เซ‡. เช† HTTP เชชเชฐ RDP เช›เซ‡. เชนเซเช‚ เช…เชนเซ€เช‚ RDGW เชธเซ‡เชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชชเซ‹เชคเซ‡ เชœ เชธเซเชชเชฐเซเชถเชตเชพ เชฎเชพเช‚เช—เชคเซ‹ เชจเชฅเซ€, เชนเซเช‚ เชคเซ‡ เชถเชพ เชฎเชพเชŸเซ‡ เชธเชพเชฐเซเช‚ เช•เซ‡ เช–เชฐเชพเชฌ เช›เซ‡ เชคเซ‡เชจเซ€ เชšเชฐเซเชšเชพ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เชคเซ‹ เชจเชฅเซ€, เชšเชพเชฒเซ‹ เชคเซ‡เชจเซ‡ เชฐเชฟเชฎเซ‹เชŸ เชเช•เซเชธเซ‡เชธ เชŸเซ‚เชฒเซเชธเชฎเชพเช‚เชฅเซ€ เชเช• เชคเชฐเซ€เช•เซ‡ เช—เชฃเซ€เช. เชนเซเช‚ เชคเชฎเชพเชฐเชพ RDGW เชธเชฐเซเชตเชฐเชจเซ‡ เชฆเซเชทเซเชŸ เช‡เชจเซเชŸเชฐเชจเซ‡เชŸเชฅเซ€ เชฌเชšเชพเชตเชตเชพ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚. เชœเซเชฏเชพเชฐเซ‡ เชฎเซ‡เช‚ RDGW เชธเชฐเซเชตเชฐ เชธเซ‡เชŸ เช•เชฐเซเชฏเซเช‚, เชคเซเชฏเชพเชฐเซ‡ เชนเซเช‚ เชคเชฐเชค เชœ เชธเซเชฐเช•เซเชทเชพ เชตเชฟเชถเซ‡ เชšเชฟเช‚เชคเชฟเชค เชฌเชจเซเชฏเซ‹, เช–เชพเชธ เช•เชฐเซ€เชจเซ‡ เชชเชพเชธเชตเชฐเซเชก เชฌเซเชฐเซเชŸ เชซเซ‹เชฐเซเชธ เชธเชพเชฎเซ‡ เชฐเช•เซเชทเชฃ. เชฎเชจเซ‡ เช†เชถเซเชšเชฐเซเชฏ เชฅเชฏเซเช‚ เช•เซ‡ เชฎเชจเซ‡ เช† เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเชตเซเช‚ เชคเซ‡ เชตเชฟเชถเซ‡ เช‡เชจเซเชŸเชฐเชจเซ‡เชŸ เชชเชฐ เช•เซ‹เชˆ เชฒเซ‡เช– เชฎเชณเซเชฏเซ‹ เชจเชฅเซ€. เชธเชพเชฐเซเช‚, เชคเชฎเชพเชฐเซ‡ เชคเซ‡ เชœเชพเชคเซ‡ เช•เชฐเชตเซเช‚ เชชเชกเชถเซ‡.

เช†เชฐเชกเซ€เชœเซ€เชกเชฌเชฒเซเชฏเซ เชชเชพเชธเซ‡ เชชเซ‹เชคเซ‡ เช•เซ‹เชˆ เชฐเช•เซเชทเชฃ เชจเชฅเซ€. เชนเชพ, เชคเซ‡เชจเซ‡ เชเช•เชฆเชฎ เชˆเชจเซเชŸเชฐเชซเซ‡เชธ เชธเชพเชฅเซ‡ เชธเชซเซ‡เชฆ เชจเซ‡เชŸเชตเชฐเซเช•เชฎเชพเช‚ เชเช•เซเชธเชชเซ‹เช เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡ เช–เซ‚เชฌ เชœ เชธเชพเชฐเซเช‚ เช•เชพเชฎ เช•เชฐเชถเซ‡. เชชเชฐเช‚เชคเซ เช†เชจเชพเชฅเซ€ เชฏเซ‹เช—เซเชฏ เชตเซเชฏเชตเชธเซเชฅเชพเชชเช• เช…เชฅเชตเชพ เชฎเชพเชนเชฟเชคเซ€ เชธเซเชฐเช•เซเชทเชพ เชจเชฟเชทเซเชฃเชพเชค เช…เชธเซเชตเชธเซเชฅ เชฅเชถเซ‡. เชตเชงเซเชฎเชพเช‚, เชคเซ‡ เชคเชฎเชจเซ‡ เชเช•เชพเช‰เชจเซเชŸเชจเซ‡ เช…เชตเชฐเซ‹เชงเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเชจเซ‡ เชŸเชพเชณเชตเชพ เชฆเซ‡เชถเซ‡, เชœเซเชฏเชพเชฐเซ‡ เชฌเซ‡เชฆเชฐเช•เชพเชฐ เช•เชฐเซเชฎเชšเชพเชฐเซ€เช เชคเซ‡เชจเชพ เชนเซ‹เชฎ เช•เชฎเซเชชเซเชฏเซเชŸเชฐ เชชเชฐ เช•เซ‹เชฐเซเชชเซ‹เชฐเซ‡เชŸ เชเช•เชพเช‰เชจเซเชŸ เชฎเชพเชŸเซ‡ เชชเชพเชธเชตเชฐเซเชก เชฏเชพเชฆ เชฐเชพเช–เซเชฏเซ‹, เช…เชจเซ‡ เชชเช›เซ€ เชคเซ‡เชจเซ‹ เชชเชพเชธเชตเชฐเซเชก เชฌเชฆเชฒเซเชฏเซ‹.

เชฌเชพเชนเซเชฏ เชชเชฐเซเชฏเชพเชตเชฐเชฃเชฎเชพเช‚เชฅเซ€ เช†เช‚เชคเชฐเชฟเช• เชธเช‚เชธเชพเชงเชจเซ‹เชจเซ‡ เชธเซเชฐเช•เซเชทเชฟเชค เชฐเชพเช–เชตเชพเชจเซ‹ เชเช• เชธเชพเชฐเซ‹ เชฎเชพเชฐเซเช— เชตเชฟเชตเชฟเชง เชชเซเชฐเซ‹เช•เซเชธเซ€, เชชเซเชฐเช•เชพเชถเชจ เชชเซเชฐเชฃเชพเชฒเซ€เช“ เช…เชจเซ‡ เช…เชจเซเชฏ WAFs เชฆเซเชตเชพเชฐเชพ เช›เซ‡. เชšเชพเชฒเซ‹ เชฏเชพเชฆ เชฐเชพเช–เซ€เช เช•เซ‡ RDGW เชนเชœเซ เชชเชฃ http เช›เซ‡, เชชเช›เซ€ เชคเซ‡ เชซเช•เซเชค เช†เช‚เชคเชฐเชฟเช• เชธเชฐเซเชตเชฐเซเชธ เช…เชจเซ‡ เช‡เชจเซเชŸเชฐเชจเซ‡เชŸ เชตเชšเซเชšเซ‡ เชตเชฟเชถเชฟเชทเซเชŸ เชธเซ‹เชฒเซเชฏเซเชถเชจเชจเซ‡ เชชเซเชฒเช— เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ‡ เช›เซ‡.

เชนเซเช‚ เชœเชพเชฃเซเช‚ เช›เซเช‚ เช•เซ‡ เช•เซ‚เชฒ F5, A10, Netscaler(ADC) เช›เซ‡. เช† เชธเชฟเชธเซเชŸเชฎเซ‹เชฎเชพเช‚เชฅเซ€ เชเช•เชจเชพ เชเชกเชฎเชฟเชจเชฟเชธเซเชŸเซเชฐเซ‡เชŸเชฐ เชคเชฐเซ€เช•เซ‡, เชนเซเช‚ เช•เชนเซ€เชถ เช•เซ‡ เช† เชธเชฟเชธเซเชŸเชฎเซ‹ เชชเชฐ เชฌเซเชฐเซเชŸ เชซเซ‹เชฐเซเชธ เชธเชพเชฎเซ‡ เชฐเช•เซเชทเชฃ เชธเซ‡เชŸ เช•เชฐเชตเซเช‚ เชชเชฃ เชถเช•เซเชฏ เช›เซ‡. เช…เชจเซ‡ เชนเชพ, เช† เชธเชฟเชธเซเชŸเชฎเซเชธ เชคเชฎเชจเซ‡ เช•เซ‹เชˆเชชเชฃ เชธเชฟเชจ เชซเซเชฒเชกเชฅเซ€ เชชเชฃ เชฌเชšเชพเชตเชถเซ‡.

เชชเชฐเช‚เชคเซ เชฆเชฐเซ‡เช• เช•เช‚เชชเชจเซ€ เช†เชตเชพ เชธเซ‹เชฒเซเชฏเซเชถเชจ เช–เชฐเซ€เชฆเชตเชพ เชชเชฐเชตเชกเซ€ เชถเช•เซ‡ เชคเซ‡เชฎ เชจเชฅเซ€ (เช…เชจเซ‡ เช†เชตเซ€ เชธเชฟเชธเซเชŸเชฎ เชฎเชพเชŸเซ‡ เชเชกเชฎเชฟเชจเชฟเชธเซเชŸเซเชฐเซ‡เชŸเชฐ เชถเซ‹เชงเซ‹ :), เชชเชฐเช‚เชคเซ เชคเซ‡ เชœ เชธเชฎเชฏเซ‡ เชคเซ‡เช“ เชธเซเชฐเช•เซเชทเชพเชจเซ€ เช•เชพเชณเชœเซ€ เชฒเชˆ เชถเช•เซ‡ เช›เซ‡!

เชฎเชซเชค เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ เชชเชฐ HAProxy เชจเซเช‚ เชฎเชซเชค เชธเช‚เชธเซเช•เชฐเชฃ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเซเช‚ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชถเช•เซเชฏ เช›เซ‡. เชฎเซ‡เช‚ เชธเซเชŸเซ‡เชฌเชฒ เชฐเชฟเชชเซ‹เชเซ€เชŸเชฐเซ€เชฎเชพเช‚ เชกเซ‡เชฌเชฟเชฏเชจ 10, เชนเซ‡เชชเซเชฐเซ‹เช•เซเชธเซ€ เชตเชฐเซเชเชจ 1.8.19 เชชเชฐ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเซเชฏเซเช‚. เชฎเซ‡เช‚ เชคเซ‡เชจเซเช‚ เชชเชฐเซ€เช•เซเชทเชฃ เชฐเซ€เชชเซ‹เชเซ€เชŸเชฐเซ€เชฎเชพเช‚เชฅเซ€ เชธเช‚เชธเซเช•เชฐเชฃ 2.0.xx เชชเชฐ เชชเชฃ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเซเชฏเซเช‚ เช›เซ‡.

เช…เชฎเซ‡ เช† เชฒเซ‡เช–เชจเชพ เช…เชตเช•เชพเชถเชจเซ€ เชฌเชนเชพเชฐ เชกเซ‡เชฌเชฟเชฏเชจเชจเซ‡ เชธเซ‡เชŸ เช•เชฐเชตเชพเชจเซเช‚ เช›เซ‹เชกเซ€ เชฆเชˆเชถเซเช‚. เชธเช‚เช•เซเชทเชฟเชชเซเชคเชฎเชพเช‚: เชธเชซเซ‡เชฆ เช‡เชจเซเชŸเชฐเชซเซ‡เชธ เชชเชฐ, เชชเซ‹เชฐเซเชŸ 443 เชธเชฟเชตเชพเชฏ เชฌเชงเซเช‚ เชฌเช‚เชง เช•เชฐเซ‹, เช—เซเชฐเซ‡ เช‡เชจเซเชŸเชฐเชซเซ‡เชธ เชชเชฐ - เชคเชฎเชพเชฐเซ€ เชจเซ€เชคเชฟ เช…เชจเซเชธเชพเชฐ, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชชเซ‹เชฐเซเชŸ 22 เชธเชฟเชตเชพเชฏ เชฌเชงเซเช‚ เชชเชฃ เชฌเช‚เชง เช•เชฐเซ‹. เช•เชพเชฐเซเชฏ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เชนเซ‹เชฏ เชคเซ‡ เชœ เช–เซ‹เชฒเซ‹ (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชซเซเชฒเซ‹เชŸเชฟเช‚เช— เช†เชˆเชชเซ€ เชฎเชพเชŸเซ‡ VRRP).

เชธเซŒ เชชเซเชฐเชฅเชฎ, เชฎเซ‡เช‚ SSL เชฌเซเชฐเชฟเชœเชฟเช‚เช— เชฎเซ‹เชก (เช‰เชฐเซเชซ HTTP เชฎเซ‹เชก) เชฎเชพเช‚ เชนเซ‡เชชเซเชฐเซ‹เช•เซเชธเซ€เชจเซ‡ เช—เซ‹เช เชตเซเชฏเซเช‚ เช…เชจเซ‡ RDP เชจเซ€ เช…เช‚เชฆเชฐ เชถเซเช‚ เชšเชพเชฒเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡ เชคเซ‡ เชœเซ‹เชตเชพ เชฎเชพเชŸเซ‡ เชฒเซ‹เช—เชฟเช‚เช— เชšเชพเชฒเซ เช•เชฐเซเชฏเซเช‚. เชคเซ‡เชฅเซ€ เชตเชพเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชนเซเช‚ เชฎเชงเซเชฏเชฎเชพเช‚ เช†เชตเซ€ เช—เชฏเซ‹. เชคเซ‡เชฅเซ€, RDGateway เชธเซ‡เชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเชพ "เชฌเชงเชพ" เชฒเซ‡เช–เซ‹เชฎเชพเช‚ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค /RDWeb เชชเชพเชฅ เช–เซ‚เชŸเซ‡ เช›เซ‡. เชคเซเชฏเชพเช‚ เชœเซ‡ เชฌเชงเซเช‚ เช›เซ‡ เชคเซ‡ /rpc/rpcproxy.dll เช…เชจเซ‡ /remoteDesktopGateway/ เช›เซ‡. เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค GET/POST เชตเชฟเชจเช‚เชคเซ€เช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชคเซ‹ เชจเชฅเซ€; เชคเซ‡เชฎเชจเชพ เชชเซ‹เชคเชพเชจเชพ เชชเซเชฐเช•เชพเชฐเชจเซ€ เชตเชฟเชจเช‚เชคเซ€ RDG_IN_DATA, RDG_OUT_DATA เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฅเชพเชฏ เช›เซ‡.

เชตเชงเซ เชจเชนเซ€เช‚, เชชเชฐเช‚เชคเซ เช“เช›เชพเชฎเชพเช‚ เช“เช›เซเช‚ เช•เช‚เชˆเช•.

เชšเชพเชฒเซ‹ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเซ€เช.

เชนเซเช‚ mstsc เชฒเซ‰เชจเซเชš เช•เชฐเซเช‚ เช›เซเช‚, เชธเชฐเซเชตเชฐ เชชเชฐ เชœเชพเช‰เช‚ เช›เซเช‚, เชฒเซ‰เช—เชฎเชพเช‚ เชšเชพเชฐ 401 (เช…เชจเชงเชฟเช•เซƒเชค) เชญเซ‚เชฒเซ‹ เชœเซเช“, เชชเช›เซ€ เชฎเชพเชฐเซเช‚ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชจเชพเชฎ/เชชเชพเชธเชตเชฐเซเชก เชฆเชพเช–เชฒ เช•เชฐเซ‹ เช…เชจเซ‡ เชชเซเชฐเชคเชฟเชธเชพเชฆ 200 เชœเซเช“.

เชนเซเช‚ เชคเซ‡เชจเซ‡ เชฌเช‚เชง เช•เชฐเซเช‚ เช›เซเช‚, เชคเซ‡เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชถเชฐเซ‚ เช•เชฐเซเช‚ เช›เซเช‚, เช…เชจเซ‡ เชฒเซ‹เช—เชฎเชพเช‚ เชฎเชจเซ‡ เช เชœ เชšเชพเชฐ 401 เชญเซ‚เชฒเซ‹ เชฆเซ‡เช–เชพเชฏ เช›เซ‡. เชนเซเช‚ เช–เซ‹เชŸเซ‹ เชฒเซ‹เช—เชฟเชจ/เชชเชพเชธเชตเชฐเซเชก เชฆเชพเช–เชฒ เช•เชฐเซเช‚ เช›เซเช‚ เช…เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชšเชพเชฐ 401 เชญเซ‚เชฒเซ‹ เชœเซ‹เช‰เช‚ เช›เซเช‚. เชฎเชจเซ‡ เช†เชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เช† เช†เชชเชฃเซ‡ เชชเช•เชกเซ€เชถเซเช‚.

เชฒเซ‰เช—เชฟเชจ url เชจเช•เซเช•เซ€ เช•เชฐเชตเชพเชจเซเช‚ เชถเช•เซเชฏ เชจ เชนเซ‹เชตเชพเชฅเซ€, เช…เชจเซ‡ เช‰เชชเชฐเชพเช‚เชค, เชฎเชจเซ‡ เช–เชฌเชฐ เชจเชฅเซ€ เช•เซ‡ เชนเซ‡เชชเซเชฐเซ‹เช•เซเชธเซ€เชฎเชพเช‚ 401 เชญเซ‚เชฒ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชชเช•เชกเชตเซ€, เชนเซเช‚ เชฌเชงเซ€ 4xx เชญเซ‚เชฒเซ‹เชจเซ‡ เชชเช•เชกเซ€เชถ (เชตเชพเชธเซเชคเชตเชฎเชพเช‚ เชจเชนเซ€เช‚, เชชเชฃ เช—เชฃเซ€เชถ). เชธเชฎเชธเซเชฏเชพ เชนเชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชชเชฃ เชฏเซ‹เช—เซเชฏ.

เชธเช‚เชฐเช•เซเชทเชฃเชจเซ‹ เชธเชพเชฐ เช เชนเชถเซ‡ เช•เซ‡ เช…เชฎเซ‡ เชธเชฎเชฏเชจเชพ เชเช•เชฎ เชฆเซ€เช  4xx เชญเซ‚เชฒเซ‹เชจเซ€ เชธเช‚เช–เซเชฏเชพ (เชฌเซ‡เช•เชเชจเซเชก เชชเชฐ) เช—เชฃเซ€เชถเซเช‚ เช…เชจเซ‡ เชœเซ‹ เชคเซ‡ เชจเชฟเชฐเซเชฆเชฟเชทเซเชŸ เชฎเชฐเซเชฏเชพเชฆเชพ เช•เชฐเชคเชพเช‚ เชตเชงเซ€ เชœเชพเชฏ, เชคเซ‹ เชจเชฟเชฐเซเชฆเชฟเชทเซเชŸ เชธเชฎเชฏ เชฎเชพเชŸเซ‡ เช† เช†เชˆเชชเซ€เชฎเชพเช‚เชฅเซ€ เช†เช—เชณเชจเชพ เชคเชฎเชพเชฎ เช•เชจเซ‡เช•เซเชถเชจเซเชธเชจเซ‡ เชจเช•เชพเชฐเซ€ เช•เชพเชขเซ‹. .

เชคเช•เชจเซ€เช•เซ€ เชฐเซ€เชคเซ‡, เช† เชชเชพเชธเชตเชฐเซเชก เชฌเซเชฐเซเชŸ เชซเซ‹เชฐเซเชธ เชธเชพเชฎเซ‡ เชฐเช•เซเชทเชฃ เชจเชนเซ€เช‚ เชนเซ‹เชฏ, เชคเซ‡ 4xx เชญเซ‚เชฒเซ‹ เชธเชพเชฎเซ‡ เชฐเช•เซเชทเชฃ เชนเชถเซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชœเซ‹ เชคเชฎเซ‡ เชตเชพเชฐเช‚เชตเชพเชฐ เชฌเชฟเชจ-เช…เชธเซเชคเชฟเชคเซเชต เชงเชฐเชพเชตเชคเชพ url (404) เชฎเชพเชŸเซ‡ เชตเชฟเชจเช‚เชคเซ€ เช•เชฐเซ‹ เช›เซ‹, เชคเซ‹ เชธเซเชฐเช•เซเชทเชพ เชชเชฃ เช•เชพเชฎ เช•เชฐเชถเซ‡.

เชธเซŒเชฅเซ€ เชธเชฐเชณ เช…เชจเซ‡ เชธเซŒเชฅเซ€ เช…เชธเชฐเช•เชพเชฐเช• เชฐเซ€เชค เช เช›เซ‡ เช•เซ‡ เชฌเซ‡เช•เชเชจเซเชก เชชเชฐ เช—เชฃเชคเชฐเซ€ เช•เชฐเชตเซ€ เช…เชจเซ‡ เชœเซ‹ เช•เช‚เชˆเชชเชฃ เชตเชงเชพเชฐเชพเชจเซเช‚ เชฆเซ‡เช–เชพเชฏ เชคเซ‹ เชชเชพเช›เชพ เชฐเชฟเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‹:

frontend fe_rdp_tsc
    bind *:443 ssl crt /etc/haproxy/cert/desktop.example.com.pem
    mode http
    ...
    default_backend be_rdp_tsc


backend be_rdp_tsc
    ...
    mode http
    ...

    #ัะพะทะดะฐั‚ัŒ ั‚ะฐะฑะปะธั†ัƒ, ัั‚ั€ะพะบะพะฒัƒัŽ, 1000 ัะปะตะผะตะฝั‚ะพะฒ, ะฟั€ะพั‚ัƒั…ะฐะตั‚ ั‡ะตั€ะตะท 15 ัะตะบ, ะทะฐะฟะธัะฐั‚ัŒ ะบะพะป-ะฒะพ ะพัˆะธะฑะพะบ ะทะฐ ะฟะพัะปะตะดะฝะธะต 10 ัะตะบ
    stick-table type string len 128 size 1k expire 15s store http_err_rate(10s)
    #ะทะฐะฟะพะผะฝะธั‚ัŒ ip
    http-request track-sc0 src
    #ะทะฐะฟั€ะตั‚ะธั‚ัŒ ั http ะพัˆะธะฑะบะพะน 429, ะตัะปะธ ะทะฐ ะฟะพัะปะตะดะฝะธะต 10 ัะตะบ ะฑะพะปัŒัˆะต 4 ะพัˆะธะฑะพะบ
    http-request deny deny_status 429 if { sc_http_err_rate(0) gt 4 }
	
	...
    server rdgw01 192.168.1.33:443 maxconn 1000 weight 10 ssl check cookie rdgw01
    server rdgw02 192.168.2.33:443 maxconn 1000 weight 10 ssl check cookie rdgw02

เชถเซเชฐเซ‡เชทเซเช  เชตเชฟเช•เชฒเซเชช เชจเชฅเซ€, เชšเชพเชฒเซ‹ เชคเซ‡เชจเซ‡ เชœเชŸเชฟเชฒ เชฌเชจเชพเชตเซ€เช. เช…เชฎเซ‡ เชฌเซ‡เช•เชเชจเซเชก เชชเชฐ เช—เชฃเชคเชฐเซ€ เช•เชฐเซ€เชถเซเช‚ เช…เชจเซ‡ เช†เช—เชณเชจเชพ เชญเชพเช—เชฎเชพเช‚ เชฌเซเชฒเซ‹เช• เช•เชฐเซ€เชถเซเช‚.

เช…เชฎเซ‡ เชนเซเชฎเชฒเชพเช–เซ‹เชฐ เชธเชพเชฅเซ‡ เช…เชธเช‚เชธเซเช•เชพเชฐเซ€ เชตเชฐเซเชคเชจ เช•เชฐเซ€เชถเซเช‚ เช…เชจเซ‡ เชคเซ‡เชจเซเช‚ TCP เช•เชจเซ‡เช•เซเชถเชจ เช›เซ‹เชกเซ€ เชฆเชˆเชถเซเช‚.

frontend fe_rdp_tsc
    bind *:443 ssl crt /etc/haproxy/cert/ertelecom_ru_2020_06_11.pem
    mode http
    ...
    #ัะพะทะดะฐั‚ัŒ ั‚ะฐะฑะปะธั†ัƒ ip ะฐะดั€ะตัะพะฒ, 1000 ัะปะตะผะตะฝั‚ะพะฒ, ะฟั€ะพั‚ัƒั…ะฝะตั‚ ั‡ะตั€ะตะท 15 ัะตะบ, ัะพั…ั€ัะฝัั‚ัŒ ะธะท ะณะปะพะฑะฐะปัŒะฝะพะณะพ ัั‡ั‘ั‚ั‡ะธะบะฐ
    stick-table type ip size 1k expire 15s store gpc0
    #ะฒะทัั‚ัŒ ะธัั‚ะพั‡ะฝะธะบ
    tcp-request connection track-sc0 src
    #ะพั‚ะบะปะพะฝะธั‚ัŒ tcp ัะพะตะดะธะฝะตะฝะธะต, ะตัะปะธ ะณะปะพะฑะฐะปัŒะฝั‹ะน ัั‡ั‘ั‚ั‡ะธะบ >0
    tcp-request connection reject if { sc0_get_gpc0 gt 0 }
	
    ...
    default_backend be_rdp_tsc


backend be_rdp_tsc
    ...
    mode http
    ...
	
    #ัะพะทะดะฐั‚ัŒ ั‚ะฐะฑะปะธั†ัƒ ip ะฐะดั€ะตัะพะฒ, 1000 ัะปะตะผะตะฝั‚ะพะฒ, ะฟั€ะพั‚ัƒั…ะฝะตั‚ ั‡ะตั€ะตะท 15 ัะตะบ, ัะพั…ั€ะฐะฝัั‚ัŒ ะบะพะป-ะฒะพ ะพัˆะธะฑะพะบ ะทะฐ 10 ัะตะบ
    stick-table type ip size 1k expire 15s store http_err_rate(10s)
    #ะผะฝะพะณะพ ะพัˆะธะฑะพะบ, ะตัะปะธ ะบะพะป-ะฒะพ ะพัˆะธะฑะพะบ ะทะฐ 10 ัะตะบ ะฟั€ะตะฒั‹ัะธะปะพ 8
    acl errors_too_fast sc1_http_err_rate gt 8
    #ะฟะพะผะตั‚ะธั‚ัŒ ะฐั‚ะฐะบัƒ ะฒ ะณะปะพะฑะฐะปัŒะฝะพะผ ัั‡ั‘ั‚ั‡ะธะบะต (ัƒะฒะตะปะธั‡ะธั‚ัŒ ัั‡ั‘ั‚ั‡ะธะบ)
    acl mark_as_abuser sc0_inc_gpc0(fe_rdp_tsc) gt 0
    #ะพะฑะฝัƒะปะธั‚ัŒ ะณะปะพะฑะฐะปัŒะฝั‹ะน ัั‡ั‘ั‚ั‡ะธะบ
    acl clear_as_abuser sc0_clr_gpc0(fe_rdp_tsc) ge 0
    #ะฒะทัั‚ัŒ ะธัั‚ะพั‡ะฝะธะบ
    tcp-request content track-sc1 src
    #ะพั‚ะบะปะพะฝะธั‚ัŒ, ะฟะพะผะตั‚ะธั‚ัŒ, ั‡ั‚ะพ ะฐั‚ะฐะบะฐ
    tcp-request content reject if errors_too_fast mark_as_abuser
    #ั€ะฐะทั€ะตัˆะธั‚ัŒ, ัะฑั€ะพัะธั‚ัŒ ั„ะปะฐะถะพะบ ะฐั‚ะฐะบะธ
    tcp-request content accept if !errors_too_fast clear_as_abuser
	
    ...
    server rdgw01 192.168.1.33:443 maxconn 1000 weight 10 ssl check cookie rdgw01
    server rdgw02 192.168.2.33:443 maxconn 1000 weight 10 ssl check cookie rdgw02

เชคเซ‡ เชœ เชตเชธเซเชคเซ, เชชเชฐเช‚เชคเซ เชจเชฎเซเชฐเชคเชพเชชเซ‚เชฐเซเชตเช•, เช…เชฎเซ‡ เชญเซ‚เชฒ เชชเชฐเชค เช•เชฐเซ€เชถเซเช‚ http 429 (เช˜เชฃเซ€ เชฌเชงเซ€ เชตเชฟเชจเช‚เชคเซ€เช“)

frontend fe_rdp_tsc
    ...
    stick-table type ip size 1k expire 15s store gpc0
    http-request track-sc0 src
    http-request deny deny_status 429 if { sc0_get_gpc0 gt 0 }
    ...
    default_backend be_rdp_tsc

backend be_rdp_tsc
    ...
    stick-table type ip size 1k expire 15s store http_err_rate(10s)
    acl errors_too_fast sc1_http_err_rate gt 8
    acl mark_as_abuser sc0_inc_gpc0(fe_rdp_tsc) gt 0
    acl clear_as_abuser sc0_clr_gpc0(fe_rdp_tsc) ge 0
    http-request track-sc1 src
    http-request allow if !errors_too_fast clear_as_abuser
    http-request deny deny_status 429 if errors_too_fast mark_as_abuser
    ...

เชนเซเช‚ เชคเชชเชพเชธเซเช‚ เช›เซเช‚: เชนเซเช‚ mstsc เชฒเซ‰เชจเซเชš เช•เชฐเซเช‚ เช›เซเช‚ เช…เชจเซ‡ เชฐเซ‡เชจเซเชกเชฎเชฒเซ€ เชชเชพเชธเชตเชฐเซเชกเซเชธ เชฆเชพเช–เชฒ เช•เชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซเช‚ เช›เซเช‚. เชคเซเชฐเซ€เชœเชพ เชชเซเชฐเชฏเชพเชธ เชชเช›เซ€, 10 เชธเซ‡เช•เชจเซเชกเชจเซ€ เช…เช‚เชฆเชฐ เชคเซ‡ เชฎเชจเซ‡ เชชเชพเช›เซ‹ เชฒเชพเชค เชฎเชพเชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ mstsc เชญเซ‚เชฒ เช†เชชเซ‡ เช›เซ‡. เชœเซ‡เชฎ เช•เซ‡ เชฒเซ‹เช—เชฎเชพเช‚ เชœเซ‹เชˆ เชถเช•เชพเชฏ เช›เซ‡.

เช–เซเชฒเชพเชธเชพเช“. เชนเซเช‚ เชนเซ‡เชชเซเชฐเซ‹เช•เซเชธเซ€ เชฎเชพเชธเซเชŸเชฐเชฅเซ€ เชฆเซ‚เชฐ เช›เซเช‚. เชนเซเช‚ เชถเชพ เชฎเชพเชŸเซ‡ เชธเชฎเชœเซ€ เชถเช•เชคเซ‹ เชจเชฅเซ€, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡
http-เชตเชฟเชจเช‚เชคเซ€ deny_status 429 เชœเซ‹ { sc_http_err_rate(0) gt 4 }
เชคเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เชคเซ‡ เชชเชนเซ‡เชฒเชพเช‚ เชคเชฎเชจเซ‡ เชฒเช—เชญเช— 10 เชญเซ‚เชฒเซ‹ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡.

เชนเซเช‚ เช•เชพเช‰เชจเซเชŸเชฐเซเชธเชจเชพ เชจเช‚เชฌเชฐเชฟเช‚เช— เชตเชฟเชถเซ‡ เชฎเซ‚เช‚เชเชตเชฃเชฎเชพเช‚ เช›เซเช‚. เชนเซ‡เชชเซเชฐเซ‹เช•เซเชธเซ€เชจเชพ เชฎเชพเชธเซเชŸเชฐเซเชธ, เชœเซ‹ เชคเชฎเซ‡ เชฎเชจเซ‡ เชชเซ‚เชฐเช• เชฌเชจเชพเชตเซ‹, เชฎเชจเซ‡ เชธเซเชงเชพเชฐเชถเซ‹, เชฎเชจเซ‡ เชตเชงเซ เชธเชพเชฐเซเช‚ เชฌเชจเชพเชตเซ‹ เชคเซ‹ เชฎเชจเซ‡ เช†เชจเช‚เชฆ เชฅเชถเซ‡.

เชŸเชฟเชชเซเชชเชฃเซ€เช“เชฎเชพเช‚ เชคเชฎเซ‡ เช†เชฐเชกเซ€ เช—เซ‡เชŸเชตเซ‡เชจเซ‡ เชธเซเชฐเช•เซเชทเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช…เชจเซเชฏ เชฐเซ€เชคเซ‹ เชธเซ‚เชšเชตเซ€ เชถเช•เซ‹ เช›เซ‹, เชคเซ‡ เช…เชญเซเชฏเชพเชธ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฐเชธเชชเซเชฐเชฆ เชฐเชนเซ‡เชถเซ‡.

เชตเชฟเชจเซเชกเซ‹เช เชฐเซ€เชฎเซ‹เชŸ เชกเซ‡เชธเซเช•เชŸเซ‹เชช เช•เซเชฒเชพเชฏเช‚เชŸ (mstsc) เชตเชฟเชถเซ‡, เชคเซ‡ เชจเซ‹เช‚เชงเชตเซเช‚ เชฏเซ‹เช—เซเชฏ เช›เซ‡ เช•เซ‡ เชคเซ‡ TLS1.2 (เช“เช›เชพเชฎเชพเช‚ เช“เช›เซเช‚ Windows 7 เชฎเชพเช‚) เชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเชคเซเช‚ เชจเชฅเซ€, เชคเซ‡เชฅเซ€ เชฎเชพเชฐเซ‡ TLS1 เช›เซ‹เชกเชตเซเช‚ เชชเชกเซเชฏเซเช‚; เชตเชฐเซเชคเชฎเชพเชจ เชธเชพเช‡เชซเชฐเชจเซ‡ เชธเชฎเชฐเซเชฅเชจ เช†เชชเชคเซเช‚ เชจเชฅเซ€, เชคเซ‡เชฅเซ€ เชฎเชพเชฐเซ‡ เชœเซ‚เชจเชพเชจเซ‡ เชชเชฃ เช›เซ‹เชกเชตเซเช‚ เชชเชกเซเชฏเซเช‚.

เชœเซ‡เช“ เช•เช‚เชˆเชชเชฃ เชธเชฎเชœเซ€ เชถเช•เชคเชพ เชจเชฅเซ€, เชซเช•เซเชค เชถเซ€เช–เซ€ เชฐเชนเซเชฏเชพ เช›เซ‡ เช…เชจเซ‡ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชธเชพเชฐเซเช‚ เช•เชฐเชตเชพ เชฎเชพเช—เซ‡ เช›เซ‡, เชนเซเช‚ เชคเชฎเชจเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃ เชฐเซ‚เชชเชฐเซ‡เช–เชพ เช†เชชเซ€เชถ.

haproxy.conf

global
        log /dev/log    local0
        log /dev/log    local1 notice
        chroot /var/lib/haproxy
        stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
        stats timeout 30s
        user haproxy
        group haproxy
        daemon

        # Default SSL material locations
        ca-base /etc/ssl/certs
        crt-base /etc/ssl/private

        # See: https://ssl-config.mozilla.org/#server=haproxy&server-version=2.0.3&config=intermediate
        #ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE
-RSA-AES256-GCM-SHA384
        ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
        ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
        #ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets
        ssl-default-bind-options no-sslv3
        ssl-server-verify none


defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        timeout connect 5000
        timeout client  15m
        timeout server  15m
        errorfile 400 /etc/haproxy/errors/400.http
        errorfile 403 /etc/haproxy/errors/403.http
        errorfile 408 /etc/haproxy/errors/408.http
        errorfile 500 /etc/haproxy/errors/500.http
        errorfile 502 /etc/haproxy/errors/502.http
        errorfile 503 /etc/haproxy/errors/503.http
        errorfile 504 /etc/haproxy/errors/504.http


frontend fe_rdp_tsc
    bind *:443 ssl crt /etc/haproxy/cert/dektop.example.com.pem
    mode http
    capture request header Host len 32
    log global
    option httplog
    timeout client 300s
    maxconn 1000

    stick-table type ip size 1k expire 15s store gpc0
    tcp-request connection track-sc0 src
    tcp-request connection reject if { sc0_get_gpc0 gt 0 }

    acl rdweb_domain hdr(host) -i beg dektop.example.com
    http-request deny deny_status 400 if !rdweb_domain
    default_backend be_rdp_tsc


backend be_rdp_tsc
    balance source
    mode http
    log global

    stick-table type ip size 1k expire 15s store http_err_rate(10s)
    acl errors_too_fast sc1_http_err_rate gt 8
    acl mark_as_abuser sc0_inc_gpc0(fe_rdp_tsc) gt 0
    acl clear_as_abuser sc0_clr_gpc0(fe_rdp_tsc) ge 0
    tcp-request content track-sc1 src
    tcp-request content reject if errors_too_fast mark_as_abuser
    tcp-request content accept if !errors_too_fast clear_as_abuser

    option forwardfor
    http-request add-header X-CLIENT-IP %[src]

    option httpchk GET /
    cookie RDPWEB insert nocache
    default-server inter 3s    rise 2  fall 3
    server rdgw01 192.168.1.33:443 maxconn 1000 weight 10 ssl check cookie rdgw01
    server rdgw02 192.168.2.33:443 maxconn 1000 weight 10 ssl check cookie rdgw02


frontend fe_stats
    mode http
    bind *:8080
    acl ip_allow_admin src 192.168.66.66
    stats enable
    stats uri /stats
    stats refresh 30s
    #stats admin if LOCALHOST
    stats admin if ip_allow_admin

เชถเชพ เชฎเชพเชŸเซ‡ เชฌเซ‡เช•เชเชจเซเชก เชชเชฐ เชฌเซ‡ เชธเชฐเซเชตเชฐ? เช•เชพเชฐเชฃ เช•เซ‡ เช† เชฐเซ€เชคเซ‡ เชคเชฎเซ‡ เชฆเซ‹เชท เชธเชนเชฟเชทเซเชฃเซเชคเชพ เชฌเชจเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹. เชนเซ‡เชชเซเชฐเซ‹เช•เซเชธเซ€ เชซเซเชฒเซ‹เชŸเชฟเช‚เช— เชตเซเชนเชพเช‡เชŸ เช†เช‡เชชเซ€ เชธเชพเชฅเซ‡ เชฌเซ‡ เชชเชฃ เชฌเชจเชพเชตเซ€ เชถเช•เซ‡ เช›เซ‡.

เช•เชฎเซเชชเซเชฏเซเชŸเชฟเช‚เช— เชธเช‚เชธเชพเชงเชจเซ‹: เชคเชฎเซ‡ "เชฌเซ‡ เช—เซ€เช—, เชฌเซ‡ เช•เซ‹เชฐ, เช—เซ‡เชฎเชฟเช‚เช— เชชเซ€เชธเซ€" เชธเชพเชฅเซ‡ เชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹. เช…เชจเซเชธเชพเชฐ เชตเชฟเช•เชฟเชชเซ€เชกเชฟเชฏเชพ เช† เชฌเชšเชตเชพ เชฎเชพเชŸเซ‡ เชชเซ‚เชฐเชคเซเช‚ เชนเชถเซ‡.

เชธเช‚เชฆเชฐเซเชญเซ‹:

HAProxy เชฎเชพเช‚เชฅเซ€ rdp-เช—เซ‡เชŸเชตเซ‡ เชธเซ‡เชŸ เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡
เชฎเชจเซ‡ เชเช•เชฎเชพเชคเซเชฐ เชฒเซ‡เช– เชฎเชณเซเชฏเซ‹ เชœเซเชฏเชพเช‚ เชคเซ‡เช“เช เชชเชพเชธเชตเชฐเซเชกเชจเซ‡ เชœเชก-เชซเซ‹เชฐเซเชธ เช•เชฐเชตเชพเชจเซ€ เชคเชธเซเชฆเซ€ เชฒเซ€เชงเซ€

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹