Haproxy中转Shadowsocks(TCP)

haproxy

编辑

HAProxy是一个使用C语言编写的自由及开放源代码软件[1],其提供高可用性负载均衡,以及基于TCPHTTP的应用程序代理
HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。
HAProxy实现了一种事件驱动单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户空间(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以 使每个CPU时间片(Cycle)做更多的工作。
包括 GitHubBitbucket[3]、Stack Overflow[4]、RedditTumblrTwitter[5][6]和 Tuenti[7]在内的知名网站,及亚马逊网络服务系统都使用了HAProxy。

中转说明

假设你的本地电脑为 A,haproxy 服务器为 B,Shadowsocks 服务器为 C。A 当然可以直接去连C,但如上所说,往往你的本地网络国际带宽不足,实际上的可用速度并不快。假设 B 是国内某机房的服务器,机房服务器带宽一般来说比你本地网络带宽要大得多。A 连接 B,通过 B 连接 C 中转流量,如此一来,虽然成本有所上升,但却能明显改善网络带宽情况。

系统支持

本脚本支持系统:CentOS,Debian,Ubuntu

安装方法

使用root登录做中转的那台服务器,执行下面的命令:

  1. # Debian/Ubuntu系统:
  2. aptget y install haproxy
  3. # Centos系统:
  4. yum y install haproxy

配置目录在

/etc/haproxy/haproxy.cfg

把文件内容改成下面内容

 global

defaults
log global
mode tcp
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000

frontend ss-in
bind *:6666
default_backend ss-out

backend ss-out
server server1 66.66.66.666 maxconn 20480

 

bind 是要转发的端口

66.66.66.666 是要转发的IP

如果要多端口 可以在bind *:6666 改成 bind *:10000-65000 现在可以在10000到65000之间的端口进行转发使用命令

启动haproxy

service  haproxy start

重启

service  haproxy   restart

关闭

service  haproxy stop

可能出现的问题

如果在centos 6 和7 安装了 iptable 或者firewalld 对端口禁止了

直接的处理方式,可以使用

关闭iptables

service iptables stop

关闭firewalld

service firewalld stop

也可以通过对防火墙的跪着开放端口后,然后再重启haproxy服务器就行了

zh-CN Chinese (Simplified)
X