这个是逗比根据地的备份镜像站(非官方)。牢记域名: [doubibackup.com]。搜索:标签云
投稿文章 | 广告合作 | Telegram 群组 / 公告频道 / 使用教程
广告

Shadowsocks利用 HaProxy 实现中继(中转/端口转发)加速

Shadowsocks Toyo 34评论
广告
本文最后更新于 2018年7月19日 12:48 可能会因为没有更新而失效。如已失效或需要修正,请留言!

中继加速(也叫中转,因为国内VPS效果最好所以一般都叫国内中转),是一种技术难度低,但是颇费钱的一种方法。而且要选好的服务器,加速效果才明显。

HaProxy是其中的方法之一,使用方便,但是只支持TCP转发,

其他的优化方案:https://doub.io/ss-jc26/#三、优化Shadowsocks

其他的端口转发教程https://doub.io/ss-jc26/#服务器中继(国内中转)

HaProxy便捷管理脚本:『原创』Shadowsocks HaProxy中继(中转) 便捷管理脚本

Socat:

优点:支持 TCP/UDP 转发。缺点:不支持端口段(多个端口需要开启多个转发)

HaProxy:

优点:支持 TCP 转发,支持 端口段 转发。缺点:不支持 UDP 转发。

iptables:

优点:支持 TCP/UDP 转发,支持 端口段 转发。缺点:配置麻烦,容易莫名其妙出错。

安装步骤

说他难度低也不是没有理由,看完下面的教程就知道多简单了!

以下教程,我是用的日本和美国服务器,我的Shadowsocks服务端安装在美国VPS上。

链接原理:SSR客户端 <=> 国内VPS <=> 美国VPS

安装HaProxy

# Debian/Ubuntu系统:
apt-get -y install haproxy
# Centos系统:
yum -y install haproxy

安装完之后就是配置HaProxy的配置文件了。

配置文件

打开 /etc/haproxy/haproxy.cfg 文件。

vi /etc/haproxy/haproxy.cfg

# 如果提示没有vi这个命令,请安装:
# Debian/Ubuntu系统:apt-get -y install vim
# Centos系统:yum -y install vim

打开后把里面的内容全部删除,换成下面的内容。

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 233.233.233.233 maxconn 20480

其中 12 行的,把 6666 改成你被中转的VPS上面Shadowsocks服务端的端口,这个端口是你要转发的端口。

然后修改一下 16 行(最后一行),把 233.233.233.233 改成你要中转(被中转/远程服务器)的 VPS IP ,(不是很懂这里的先对照下面的客户端配置,在考虑如何修改),其他的都不要动!

还有,你的中转端口被中转端口是一致的,你的中转端口和被中转端口都是 6666

多端口配置

如果你需要中转多个端口,那你修改 bind 配置项为 *:端口段 格式。

也就是把连接中转VPS的 10000-30000 端口TCP数据转发到 233.233.233.233 10000-30000 端口上面。

frontend ss-in
bind *:10000-30000
default_backend ss-out

backend ss-out
server server1 233.233.233.233 maxconn 20480
HaProxy 1.5版本后也支持了ipv6,把这里的 233.233.233.233 换成 ipv6地址 就行了。

然后按 Exc键 退出vi编辑模式,输入 :wq 保存并退出,并执行下面代码运行HaProxy。

# 启动haproxy 
/etc/init.d/haproxy start
# 停止haproxy 
/etc/init.d/haproxy stop

# 如果你是 CentOS 7 系统,那么用这些命令:
# 启动haproxy 
systemctl start haproxy.service
# 启动haproxy 
systemctl stop haproxy.service

执行之后不会出现任何提示,就不需要管了,可以关闭ssh软件了。

客户端配置

假设我的国内中转VPS IP是 110.110.110.110 ,我的国外被中转的VPS IP是 233.233.233.233 ,我的国外VPS上的Shadowsocks服务端 端口是 6666 ,我设置的中继账号端口是 6666 ,那么我在Shadowsocks客户端就是如上图所填。其中密码和加密方式都是和你国外VPS上的Shadowsocks账号配置一样,你只需要改一下 服务器 IP 服务器端口 就好了!

如果无法连接,先确认你的原Shadowsocks账号能否正常使用,然后查看防火墙规则(iptables -L -n)是否有问题。
还有需要注意的是HaProxy中继只支持TCP,也就是不支持需要UDP转发的游戏!

卸载方法

# Debian/Ubuntu 系统:
apt-get -y remove haproxy

# CentOS 系统:
yum -y remove haproxy

然后删掉haproxy的配置文件目录

rm -rf /etc/haproxy

使用命令

启动:/etc/init.d/haproxy start
停止:/etc/init.d/haproxy stop
重启:/etc/init.d/haproxy restart
重载:/etc/init.d/haproxy reload
状态:/etc/init.d/haproxy status

# 如果你是 CentOS 7 系统,那么用这些命令:
启动:systemctl start haproxy.service
停止:systemctl stop haproxy.service
重启:systemctl restart haproxy.service
状态:systemctl status haproxy.service

效果测试

上图是直接用美国VPS上的Shadowsocks账号的速度,下图是用国内中转服务器加速后的Shadowsocks账号速度,可以看出提升明显!

对了,如果你再用了其他优化方法,速度提升就更明显了!传送门

其他的端口转发教程https://doub.io/ss-jc26/#服务器中继(国内中转)

HaProxy便捷管理脚本:『原创』Shadowsocks HaProxy中继(中转) 便捷管理脚本

其他的优化方案:https://doub.io/ss-jc26/#三、优化Shadowsocks

转载请超链接注明:逗比根据地 » Shadowsocks利用 HaProxy 实现中继(中转/端口转发)加速
责任声明:本站一切资源仅用作交流学习,请勿用作商业或违法行为!如造成任何后果,本站概不负责!

赞 (18)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(34)个小伙伴在吐槽
  1. Jul 19 08:39:49 localhost.localdomain systemd[1]: Started HAProxy Load Balancer.
    Jul 19 08:39:49 localhost.localdomain systemd[1]: Starting HAProxy Load Balancer...
    Jul 19 08:39:49 localhost.localdomain haproxy-systemd-wrapper[33803]: haproxy-systemd-wrapper: executing /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds
    Jul 19 08:39:49 localhost.localdomain haproxy-systemd-wrapper[33803]: [ALERT] 199/083949 (33804) : Starting frontend ss-in: cannot bind socket [0.0.0.0:18762]
    Jul 19 08:39:49 localhost.localdomain haproxy-systemd-wrapper[33803]: haproxy-systemd-wrapper: exit, haproxy RC=1
    Jul 19 08:39:49 localhost.localdomain systemd[1]: haproxy.service: main process exited, code=exited, status=1/FAILURE
    Jul 19 08:39:49 localhost.localdomain systemd[1]: Unit haproxy.service entered failed state.
    Jul 19 08:39:49 localhost.localdomain systemd[1]: haproxy.service failed.
    
    这个是为什么呢?haproxy的配置照搬上面的
    arwind2018-07-19 08:41 回复
    • Jul 19 08:39:49 localhost.localdomain haproxy-systemd-wrapper[33803]: [ALERT] 199/083949 (33804) : Starting frontend ss-in: cannot bind socket [0.0.0.0:18762]
      # 似乎是无法绑定到 18762 端口,是不是端口被占用了?
      netstat -lntp
      # 查看端口监听情况
      # 或者尝试更换端口看看
      
      Toyo2018-07-19 11:13 回复
  2. AB均为酸酸主机,服务端口都为12345,A为B加速的端口为23456,B为A加速的端口为23456,用12345的时候都可以用,但是用23456的都不行。是不是因为主机上有酸酸,要把加速端口做什么设置。
    Thapana2018-06-01 22:35 回复
    • 你的意思是 A 和 B 服务器上面的代理服务端端口都是 12345 ,而 A 和 B 服务器上面同时都搭建了端口转发程序,中转端口都是 23456?
      访问 A 23456 = 访问 B 12345
      访问 B 23456 = 访问 A 12345
      
      试过其他端口转发程序吗?
      Toyo2018-06-02 06:20 回复
      • 对的,你的理解是对的,改其他端口是一样的,在访问haproxy转发的端口时数据是通的,但是上不了网,我不确定是不是要在主机上把转发端口设置iptable或者防火墙之类的。安装的一键酸酸R,应该是把所有12345端口的数据处理了吧
        Thapana2018-06-02 09:57 回复
        • 端口不一样,两个程序就不会存在冲突,尝试其他端口转发程序试试。
          Toyo2018-06-03 10:59 回复
      • 但是用一台没有装酸酸R的机器 来用haproxy转发端口,一切正常的。
        Thapana2018-06-02 09:59 回复
  3. 您好,如果想要访问国内服务器是A端口,然后转发到国外服务器是B端口,且国外服务器是ipv6地址,请问配置该怎么写? 我个人写的,一直无法使用,求解。 frontend ss-vultr-in bind *:100 default_backend ss-vultr-out backend ss-vultr-out server server1 [ipv6地址]:443 maxconn 20480
    姜辰2018-01-28 00:10 回复
    • IPv6 与 IPv4 之间转发可能不行,不管我也没测试过,没有环境。
      Toyo2018-01-28 16:10 回复
  4. Hello!Toyo,我有个问题,以上的教程是安装在境内的vps,还是境外的vps上?境内境外的我都装上了,发现连不通(直连可以),希望能指点迷津,谢谢啦!
    拱猪的小白菜2222017-11-14 12:30 回复
    • ShadowsocksR服务端安装在海外服务器上面(因为要翻墙),HaProxy中转程序安装在国内服务器上面(国内服务器是国内中转,也可以是海外服务器中转(当然肯定不能是SSR服务端所在的海外服务器,否则还中转什么))。
      Toyo2017-11-14 12:52 回复
  5. 国内大牌云服务商不是都说“不能使用“流量穿透”吗”,会不会被查水表 :eek:
    一颗比赛的艇2017-08-24 23:20 回复
    • 你以为谁都有资格被查水表?动不动就怕查水表,想太多。怕就不要用,没人逼你。
      Toyo2017-08-25 11:00 回复
  6. 国外的vps用了锐速,然后再中转之后还没直接用国外的快。是我的问题吗?
    sea2017-05-14 19:32 回复
    • 中转不一定就比直连快,这还取决于,VPS与中转服务器之间的网络质量和你与中转服务器之间的网络质量。
      Toyo2017-05-14 23:50 回复
      • 谢谢回答~
        sea2017-06-03 23:05 回复
  7. 启动失败,是centos系统 “-bash: etc/init.d/haproxy: No such file or directory”
    teny2017-03-13 16:11 回复
    • 少了一个 “/”
      etc/init.d/haproxy
      /etc/init.d/haproxy
      # 或者用这个
      service haproxy start
      
      Toyo2017-03-13 17:30 回复
  8. 启动haproxy出错: [ALERT] 364/001048 (14919) : parsing [/etc/haproxy/haproxy.cfg:2]: unknown keyword 'bal' out of section. [ALERT] 364/001048 (14919) : parsing [/etc/haproxy/haproxy.cfg:3]: unknown keyword 'ulimit-n' out of section. [ALERT] 364/001048 (14919) : Error(s) found in configuration file : /etc/haproxy/haproxy.cfg [ALERT] 364/001048 (14919) : Fatal errors found in configuration. Errors in configuration file, check with haproxy check. 求助!!!
    Yun2016-12-30 00:11 回复
    • 把你的配置文件内容发出来看看。
      Toyo2016-12-30 01:30 回复
      • 我把CentOS系统换成Debian就成功了 :mrgreen: ,但是速度没有感觉到提升。之后我把haproxy换成了Socat,启动后效果也是没感觉有提升,看youtube 1080P还是卡。我国内服务器用的是阿里云的最低配服务器(朋友开的,我用来试试效果)
        Yun2016-12-30 11:18 回复
  9. 没有人和我一样的想法?
    小伙伴2016-07-07 13:32 回复
  10. 直接用日本的VPS做SS服务端不就行了吗?为什么非要用美国的做?这样你日本的光跑流量了。其他啥也不干,不是浪费吗
    小伙伴2016-07-07 13:32 回复
    • 没看文章吗?我没有国内的服务器,所以拿日本的做教程。
      Toyo2016-07-07 23:29 回复
  11. 启动后要关闭吗
    kk2016-06-22 23:35 回复
    • 启动后就不需要管了
      Toyo2016-06-23 10:48 回复
  12. 执行启动haproxy 后没有反应是怎么回事?
    老豆丁2016-06-20 19:52 回复
    • 正常情况就是没有反应,不需要管,已经正常启动了
      Toyo2016-06-20 22:47 回复
      • 谢谢,已经成功,速度提升一倍 :evil:
        老豆丁2016-06-22 13:07 回复
  13. 这个怎么配置多用户版的ss-panel对应很多端口转发,求博主指教。
    小马2016-05-11 16:23 回复
    • 已经更新了多端口转发的方法
      Toyo2016-07-23 08:26 回复
  14. 可以使用一个国内服务器中转多个国外服务器吗?如果可以的话,怎么配置?
    没时间解释了快上车2016-04-27 13:29 回复
    • 已经更新了多端口转发的方法
      Toyo2016-05-03 08:18 回复
  15. 顶一个 :shock:
    醉花阴柳2016-04-24 19:56 回复