VPN技术 · 2023年11月10日

Haproxy用于转发Shadowsocks(TCP)

Haproxy中转Shadowsocks(TCP)

haproxy

编辑

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

OpenMagic API

Need more than content? Move into the product flow.

If you are here for model access, pricing, developer docs, or the future API console, the dedicated product path now lives on api.openmagic.ai.