VPN技术 · 2023年11月10日 0

Haproxy转发Shadowsocks(TCP)

通过HAProxy转发Shadowsocks (TCP)

HAProxy

编辑

HAProxy是一个用C语言开发的自由与开源软件,提供高可用性、负载均衡以及TCP和HTTP的应用程序代理功能。
HAProxy特别适合处理高负载的网站,这些网站通常需要会话保持或七层处理。它能够在现有硬件上运行,并支持数以万计的并发连接。其运行模式使得HAProxy可以轻松而安全地集成到现有架构中,同时保护您的web服务器不暴露于网络上。
HAProxy采用了事件驱动单进程模型,能够支持大量的并发连接。相比之下,多进程或多线程模型受到内存限制、系统调度和锁的影响,难以处理数千个并发连接。事件驱动模型在用户空间中实现了更好的资源和时间管理,因此克服了这些限制。然而,在多核系统上,这种模型的扩展性通常较差,因此需要进行优化,以使每个CPU时间片能够执行更多的任务。
包括GitHub、Bitbucket、Stack Overflow、Reddit、Tumblr、Twitter和Tuenti等知名网站,以及亚马逊网络服务系统都在使用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

重启HAProxy:

service haproxy restart

关闭HAProxy:

service haproxy stop

可能出现的问题:

如果在CentOS 6和7上安装了iptables或firewalld,并禁用了相关端口,您可以使用以下命令处理:

关闭iptables:

service iptables stop

关闭firewalld:

service firewalld stop

您也可以通过开放防火墙端口,然后重启HAProxy服务来解决此问题。