小樱 发表于 2016/12/26 19:51

linux centos 6安装haproxy 实现TCP代理请求中转端口转发加速的方法 SS国内阿里云服务器加速访问

移动到阿里云香港只有1MB/S,用国内深圳阿里云BGP转发下,速度瞬间飞起来。

此方法,只要是TCP的都能用,什么MC游戏啊,视频直播都可以。

阿里云购买:https://www.aliyun.com/product/swas?userCode=kj5ig4dp

centos 6 x64运行此命令安装
yum -y install haproxy


输入rpm -qi haproxy可以看到版本号是1.5.4,如果不满意可以自己去官网编译安装
# rpm -qi haproxy
Name      : haproxy                      Relocations: (not relocatable)
Version   : 1.5.4                           Vendor: CentOS
Release   : 3.el6                         Build Date: Tue 10 May 2016 07:17:37 PM UTC
Install Date: Mon 26 Dec 2016 11:29:07 AM UTC      Build Host: worker1.bsys.centos.org
Group       : System Environment/Daemons    Source RPM: haproxy-1.5.4-3.el6.src.rpm
Size      : 2552550                        License: GPLv2+
Signature   : RSA/SHA1, Thu 12 May 2016 10:49:33 AM UTC, Key ID 0946fca2c105b9de
Packager    : CentOS BuildSystem <http://bugs.centos.org>
URL         : http://www.haproxy.org/
Summary   : HAProxy is a TCP/HTTP reverse proxy for high availability environments
Description :
HAProxy is a TCP/HTTP reverse proxy which is particularly suited for high
availability environments. Indeed, it can:
- route HTTP requests depending on statically assigned cookies
- spread load among several servers while assuring server persistence
   through the use of HTTP cookies
- switch to backup servers in the event a main one fails
- accept connections to special ports dedicated to service monitoring
- stop accepting connections without breaking existing ones
- add, modify, and delete HTTP headers in both directions
- block requests matching particular patterns
- persists clients to the correct application server depending on
   application cookies
- report detailed status as HTML pages to authenticated users from a URI
   intercepted from the application

输入rpm -ql haproxy可以看到当然的软件文件占用
# rpm -ql haproxy
/etc/haproxy
/etc/haproxy/haproxy.cfg
/etc/logrotate.d/haproxy
/etc/rc.d/init.d/haproxy
/etc/sysconfig/haproxy
/usr/bin/halog
/usr/bin/iprange
/usr/sbin/haproxy
/usr/share/doc/haproxy-1.5.4
/usr/share/doc/haproxy-1.5.4/CHANGELOG
/usr/share/doc/haproxy-1.5.4/LICENSE
/usr/share/doc/haproxy-1.5.4/README
/usr/share/doc/haproxy-1.5.4/acl-content-sw.cfg
/usr/share/doc/haproxy-1.5.4/acl.fig
/usr/share/doc/haproxy-1.5.4/architecture.txt
/usr/share/doc/haproxy-1.5.4/close-options.txt
/usr/share/doc/haproxy-1.5.4/coding-style.txt
/usr/share/doc/haproxy-1.5.4/configuration.txt
/usr/share/doc/haproxy-1.5.4/content-sw-sample.cfg
/usr/share/doc/haproxy-1.5.4/cookie-options.txt
/usr/share/doc/haproxy-1.5.4/cttproxy-src.cfg
/usr/share/doc/haproxy-1.5.4/design-thoughts
/usr/share/doc/haproxy-1.5.4/design-thoughts/backends-v0.txt
/usr/share/doc/haproxy-1.5.4/design-thoughts/backends.txt
/usr/share/doc/haproxy-1.5.4/design-thoughts/be-fe-changes.txt
/usr/share/doc/haproxy-1.5.4/design-thoughts/binding-possibilities.txt
/usr/share/doc/haproxy-1.5.4/design-thoughts/buffer-redesign.txt
/usr/share/doc/haproxy-1.5.4/design-thoughts/buffers.fig
/usr/share/doc/haproxy-1.5.4/design-thoughts/config-language.txt
/usr/share/doc/haproxy-1.5.4/design-thoughts/connection-reuse.txt
/usr/share/doc/haproxy-1.5.4/design-thoughts/cttproxy-changes.txt
/usr/share/doc/haproxy-1.5.4/design-thoughts/entities-v2.txt
/usr/share/doc/haproxy-1.5.4/design-thoughts/how-it-works.txt
/usr/share/doc/haproxy-1.5.4/design-thoughts/http_load_time.url
/usr/share/doc/haproxy-1.5.4/design-thoughts/rate-shaping.txt
/usr/share/doc/haproxy-1.5.4/design-thoughts/sess_par_sec.txt
/usr/share/doc/haproxy-1.5.4/gpl.txt
/usr/share/doc/haproxy-1.5.4/haproxy-en.txt
/usr/share/doc/haproxy-1.5.4/haproxy-fr.txt
/usr/share/doc/haproxy-1.5.4/haproxy.1
/usr/share/doc/haproxy-1.5.4/haproxy.cfg
/usr/share/doc/haproxy-1.5.4/internals
/usr/share/doc/haproxy-1.5.4/internals/acl.txt
/usr/share/doc/haproxy-1.5.4/internals/body-parsing.txt
/usr/share/doc/haproxy-1.5.4/internals/buffer-operations.txt
/usr/share/doc/haproxy-1.5.4/internals/buffer-ops.fig
/usr/share/doc/haproxy-1.5.4/internals/connect-status.txt
/usr/share/doc/haproxy-1.5.4/internals/connection-header.txt
/usr/share/doc/haproxy-1.5.4/internals/connection-scale.txt
/usr/share/doc/haproxy-1.5.4/internals/entities.fig
/usr/share/doc/haproxy-1.5.4/internals/entities.pdf
/usr/share/doc/haproxy-1.5.4/internals/entities.svg
/usr/share/doc/haproxy-1.5.4/internals/entities.txt
/usr/share/doc/haproxy-1.5.4/internals/hashing.txt
/usr/share/doc/haproxy-1.5.4/internals/header-parser-speed.txt
/usr/share/doc/haproxy-1.5.4/internals/header-tree.txt
/usr/share/doc/haproxy-1.5.4/internals/http-cookies.txt
/usr/share/doc/haproxy-1.5.4/internals/http-docs.txt
/usr/share/doc/haproxy-1.5.4/internals/http-parsing.txt
/usr/share/doc/haproxy-1.5.4/internals/naming.txt
/usr/share/doc/haproxy-1.5.4/internals/pattern.dia
/usr/share/doc/haproxy-1.5.4/internals/pattern.pdf
/usr/share/doc/haproxy-1.5.4/internals/polling-states.fig
/usr/share/doc/haproxy-1.5.4/internals/repartition-be-fe-fi.txt
/usr/share/doc/haproxy-1.5.4/internals/sequence.fig
/usr/share/doc/haproxy-1.5.4/internals/stats-v2.txt
/usr/share/doc/haproxy-1.5.4/internals/stream-sock-states.fig
/usr/share/doc/haproxy-1.5.4/internals/todo.cttproxy
/usr/share/doc/haproxy-1.5.4/lgpl.txt
/usr/share/doc/haproxy-1.5.4/proxy-protocol.txt
/usr/share/doc/haproxy-1.5.4/queuing.fig
/usr/share/doc/haproxy-1.5.4/tarpit.cfg
/usr/share/doc/haproxy-1.5.4/url-switching.cfg
/usr/share/haproxy
/usr/share/haproxy/400.http
/usr/share/haproxy/403.http
/usr/share/haproxy/408.http
/usr/share/haproxy/500.http
/usr/share/haproxy/502.http
/usr/share/haproxy/503.http
/usr/share/haproxy/504.http
/usr/share/haproxy/README
/usr/share/man/man1/halog.1.gz
/usr/share/man/man1/haproxy.1.gz
/var/lib/haproxy
#

修改配置文件vi /etc/haproxy/haproxy.cfg
global
    chroot /var/lib/haproxy
    pidfile /var/run/haproxy.pid
    maxconn 65535
    user haproxy
    group haproxy
    daemon
defaults
    mode tcp
    log global
    option dontlognull
    timeout queue 1m
    timeout connect 10s
    timeout client 1m
    timeout server 1m
    timeout check 10s
    maxconn 65535
frontend ss-in *:端口##阿里云深圳中转服务器本地使用端口port自己改
    default_backend ss-out
backend ss-out
    balance roundrobin##阿里云香港源服务器多个后端轮循
    server app1 ip:端口 check##阿里云香港源服务器 IP 和 SS 端口port自己改1号服务器
    server app2 ip:端口 check##阿里云香港源服务器 IP 和 SS 端口port自己改2号服务器,如果没有多台服务器则删除不写此行

启动
service haproxy start


开机自动启动
chkconfig --level 2345 haproxy on


如果要多端口用户,做不同的东西,比如说同时使用MC,就可以在配置文件最下方增加
frontend mc-in *:端口
    default_backend mc-out
backend mc-out
    server app1 ip:端口

然后重启服务即可
service haproxy restart


查看进程端口占用情况
netstat -apn | grep haproxy


lunksana 发表于 2016/12/27 08:58

使用iptables规则其实也可以实现上述功能,haproxy本身还不支持udp中转,而iptables支持

小樱 发表于 2016/12/27 18:04

lunksana 发表于 2016/12/27 08:58
使用iptables规则其实也可以实现上述功能,haproxy本身还不支持udp中转,而iptables支持

那肯定,,然而iptables并不会写←v←

lunksana 发表于 2016/12/28 08:09

本帖最后由 lunksana 于 2017/1/3 16:19 编辑

小樱 发表于 2016/12/27 18:04
那肯定,,然而iptables并不会写←v←

首先开启linux转发功能echo 1 > /proc/sys/net/ipv4/ip_forward
然后在/etc/sysconfig/iptables文件中添加以下代码
iptables -t nat -A PREROUTING -p tcp --dport [端口] -j DNAT --to-destination [目标IP:端口]
iptables -t nat -A PREROUTING -p udp --dport [端口] -j DNAT --to-destination [目标IP:端口]
iptables -t nat -A POSTROUTING -p tcp -d [目标IP] --dport [端口] -j SNAT --to-source [本地服务器公网IP]
iptables -t nat -A POSTROUTING -p udp -d [目标IP] --dport [端口] -j SNAT --to-source [本地服务器公网IP]
其中端口指你要开放的本地转发端口。目标IP:端口是国外vps的IP和需要转发的端口,这样就开启了tcp和udp中转,然后重启一下iptables就可以进行测试了
同样的centos7的firewalld也可以实现上述功能,直接几条命令就可以了
echo 1 > /etc/sys/net/ipv4/ip_forward
firewall-cmd --permanent --add-port=端口/tcp #开启本地tcp中转端口
firewall-cmd --permanent --add-port=端口/udp #开启本地udp中转端口
firewall-cmd --permanent --add-masquerade #添加伪装
firewall-cmd --permanent --add-forward-port=port=端口:proto=tcp:toport=vps端口:toaddr=x.x.x.x(vps IP) #建立tcp远程中转端口转发
firewall-cmd --permanent --add-forward-port=port=端口:proto=udp:toport=vps端口:toaddr=x.x.x.x(vps IP) #建立udp远程中转端口转发
firewall-cmd --reload #重启firewalld
以上即完成了防火墙转发

小樱 发表于 2016/12/28 15:19

lunksana 发表于 2016/12/28 08:09
首先开启linux转发功能echo 1 > /proc/sys/net/ipv4/ip_forward
然后在/etc/sysconfig/iptables文件中添 ...

大大大大佬

lunksana 发表于 2016/12/29 08:43

小樱 发表于 2016/12/28 15:19
大大大大佬

我不是大佬,我只是一个搬运工外加实践者,还要感谢你的推荐,否则就没有国际版阿里云让我来做测试了

小樱 发表于 2016/12/31 01:45

lunksana 发表于 2016/12/29 08:43
我不是大佬,我只是一个搬运工外加实践者,还要感谢你的推荐,否则就没有国际版阿里云让我来做测试了


service iptables restart
netstat -apn参数竟然看不到网络监听状态。。不过实测的确可用

ysbreh 发表于 2016/12/31 15:16

两位大大大大佬{:130:}

ysbreh 发表于 2016/12/31 15:16

两位大大大大佬{:130:}

小樱 发表于 2016/12/31 17:19

lunksana 发表于 2016/12/28 08:09
首先开启linux转发功能echo 1 > /proc/sys/net/ipv4/ip_forward
然后在/etc/sysconfig/iptables文件中添 ...

iptables转发把服务器网络搞死了怎么办。。

http://p1.bqimg.com/572924/74d7f037363290b4.png

lunksana 发表于 2017/1/2 08:04

估计你是在没启用iptables的服务器上启用了,然后忘记打开了22端口然后不能SSH了吧,一般vps 后台都能执行一些命令,登录你的vps后台暂时禁用iptables然后去修改一下iptables文件添加22端口再启用就好了

小樱 发表于 2017/1/2 15:28

lunksana 发表于 2017/1/2 08:04
估计你是在没启用iptables的服务器上启用了,然后忘记打开了22端口然后不能SSH了吧,一般vps 后台都能执行 ...

没有,不是这问题,重启下就好了。不知道什么情况。

lunksana 发表于 2017/1/3 07:42

小樱 发表于 2017/1/2 15:28
没有,不是这问题,重启下就好了。不知道什么情况。

重启之后有没有再尝试一下,会不会是服务器抽风了?

悠悠 发表于 2017/1/3 11:05

- -阿里云国际2017年是按年买 109刀的香港服务器 每个月512G流量

悠悠 发表于 2017/1/3 11:06

不过就是有个小问题不太敢买 系统选择里只能选centos6.8
不知道小樱的一键安装还能不能搞定...没什么区别吧 小樱?

小樱 发表于 2017/1/3 16:02

lunksana 发表于 2017/1/3 07:42
重启之后有没有再尝试一下,会不会是服务器抽风了?

没试了==!直接换haproxy跑了。现在没问题。

小樱 发表于 2017/1/3 16:02

悠悠 发表于 2017/1/3 11:05
- -阿里云国际2017年是按年买 109刀的香港服务器 每个月512G流量

月付活动延期到3月份了。

小樱 发表于 2017/1/3 16:03

悠悠 发表于 2017/1/3 11:06
不过就是有个小问题不太敢买 系统选择里只能选centos6.8
不知道小樱的一键安装还能不能搞定...没什么区别 ...

可以的,支持6.x系列系统

lunksana 发表于 2017/1/3 16:21

小樱 发表于 2017/1/3 16:02
没试了==!直接换haproxy跑了。现在没问题。

我没用iptables测试,我直接用的firewalld进行了中转,现在使用没多少问题

小樱 发表于 2017/1/3 16:22

lunksana 发表于 2017/1/3 16:21
我没用iptables测试,我直接用的firewalld进行了中转,现在使用没多少问题

嗯,我的机器都是centos 6 跑起来连接数都是上万每分钟的。估计iptables撑不住了吧

lunksana 发表于 2017/1/3 16:29

小樱 发表于 2017/1/3 16:22
嗯,我的机器都是centos 6 跑起来连接数都是上万每分钟的。估计iptables撑不住了吧

iptables理论上不会那么菜吧!这货当防火墙都没啥问题的

小樱 发表于 2017/1/3 16:31

lunksana 发表于 2017/1/3 16:29
iptables理论上不会那么菜吧!这货当防火墙都没啥问题的

vultr的机器。。一脸懵逼

悠悠 发表于 2017/1/4 15:11

小樱 发表于 2017/1/3 16:02
月付活动延期到3月份了。

买一年没有月付划算,先月付着 等后面看要不要用回vultr

悠悠 发表于 2017/1/4 15:25

本帖最后由 悠悠 于 2017/1/4 15:30 编辑

- -话说这个配置文件 是不是有版本问题 我haproxy是1.5.4没错

小樱你重启haproxy的时候不会提示吗
还是说你修改过啥了。。在贴里没写 能不能截图一下xshell haproxy.cfg给我看看或者QQ私聊发我看一下

我上次就是这个配置文件怎么改都不对,后来就放弃了。。

悠悠 发表于 2017/1/13 13:35

小樱 发表于 2017/1/3 16:31
vultr的机器。。一脸懵逼

噗,小樱救命啊!试了一上午还是不行QAQ,给看看你的haproxy.cfg这个文件被

小樱 发表于 2017/1/13 17:31

悠悠 发表于 2017/1/13 13:35
噗,小樱救命啊!试了一上午还是不行QAQ,给看看你的haproxy.cfg这个文件被

诶呀,我试了下,好像真的不可以。。squid的转发不出来。游戏MC SS这些都是过可以。迷了。。等会我去掉认证再试试转发。。

悠悠 发表于 2017/1/25 19:32

本帖最后由 悠悠 于 2017/1/25 19:34 编辑

- -反正我感觉不太好使

小樱 发表于 2017/1/25 20:24

悠悠 发表于 2017/1/25 19:32
- -反正我感觉不太好使

一晃半个月过去,我依旧没有去试。。

小樱 发表于 2017/1/28 00:19

悠悠 发表于 2017/1/25 19:32
- -反正我感觉不太好使

我测了,,国内阿里云服务器把25端口数据给封了,端口监听了也没用,数据直接给吞了,用其他国内服务器没问题。

小樱 发表于 2017/1/28 00:41

悠悠 发表于 2017/1/25 19:32
- -反正我感觉不太好使

21端口没问题
页: [1] 2
查看完整版本: linux centos 6安装haproxy 实现TCP代理请求中转端口转发加速的方法 SS国内阿里云服务器加速访问