冷门的隧道协议Ping Tunnel,进阶配置,第二课,增加iptables双端限速 2022-02-27

段落1、前章

本篇章的Ping Tunnel进阶配置教程,承接上一篇,进阶第一课,在此基础上的配置需求,如果不了解Ping Tunnel项目基础用法,不了解增加入口服务器,前置代理的,请先看原先的两期教程和视频

基础教程

冷门的隧道协议PingTunnel概览,配置简单,可用于过市面上绝大部分的硬件防火墙 2021-12-12
https://dasmz.com/?p=867

进阶1

冷门的隧道协议Ping Tunnel,进阶配置,第一课,增加ping tunnel客户端国内云VPS入口服务器 2022-02-21
https://dasmz.com/?p=1404

段落2、概述

需求的由来:

大家在实际使用Ping Tunnel的过程中,会发现,带宽占用的问题,比如我这里的资源为

1、US服务器的配置为 1核心 1GB 15GB磁盘 500Mbps带宽,配置为Ping Tunnel服务端,操作系统为Ubuntu 20.04 LTS

2、CN沃云服务器配置为 1核心 1GB 20GB磁盘 6Mbps带宽,配置为Ping Tunnel客户端 + 前置入口代理Gost/SS服务端,操作系统为Ubuntu 18.04 LTS

3、CN自己的手机/电脑,配置为SS客户端

整体路由已经是优化的高QoS出口流量,但是,由于作为接入点的CN服务器,一般带宽都比较小(国内的商业宽带基本都很贵),所以,就像水流一样,这个数据流在这里形成了一个束缚。

故而,为了避免CN入口服务器的上行带宽被Ping Tunnel打满形成阻塞的情况,我们有必要进行双端的限速。

限速的方式,我这里推荐大家选iptables,简单实用。

段落3、配置实施

我这里的场景是端到端的TCP/IP协议簇里的ICMP协议的通信,有源IP地址,有目的IP地址,ICMP协议无端口。

iptables限速,一般可通过限制时间范围内的数据包个数来约束网络载荷。

CN服务器,带宽为6Mbps,折算其对外的上行速度为 6 * 1024 / 8 = 768.0 KB/s

先进行CN服务器,入站限速的配置,基于limit模块,进行统计匹配

基于PingTunnel的入口socks5,进行wget http/https下载测速,经过4论次的参数匹配的测速结果如下

# 创建测速脚本 /root/speedtest.sh
# 参数--limit-burst 20 即满足20秒次的突发

#!/bin/sh
rm /root/*_speedtest_report.txt
for speed in 300 400 500 600 700 800 900 1000 1100 1200 1300 1400 1500 1600 1700 1800 1900 2000 2100 2200 2300 2400 2500 2600 2700 2800 2900 3000
do
  echo "= = = = = = =  SPLIT  = = = = = = ="
  echo "GOGOGO "${speed}
  cd /root/
  /usr/sbin/iptables --flush
  /usr/sbin/iptables -A INPUT -s US服务器的IP地址 -p icmp -m icmp --icmp-type any -m limit --limit ${speed}/sec --limit-burst 20 -j ACCEPT
  /usr/sbin/iptables -A INPUT -s US服务器的IP地址 -p icmp -m icmp --icmp-type any -j DROP
  /usr/bin/proxychains4 -q wget -O /dev/null -o ${speed}_speedtest_report.txt https://mia.hostodo.com/10MB.test

done
# END

网络性能测试用例A,limit-burst参数定为20,前后多时间段,四轮次下载测速,结果如下

对照均值,建立图形可视

由图可发现,在 参数为 –limit 1500/second –limit-burst 20的时候,下载速度多次的均值为766.5KB/s,贴近我们这台CN服务器的网络性能。再往后,即便开放更高的包入站,也无法提升网络性能。故而,如果burst参数为20时候,这台CN入口服务器,优先选择1500/s的包过滤参数。

网络性能测试用例B,下面,我们把limit-burst参数设置为30,再进行一轮次测试

同样的,我们根据均值,建立折线图,可以根据图,观察到参数为 –limit 1500/second –limit-burst 30的时候,本次速度为838.75KB/s,基本实现网络性能最优组合。

如果为了保证贴近我这台6Mbps入口服务器的上行网络性能,就应该选择–limit 1300/second –limit-burst 30的参数组合。

网络性能测试用例C,limit-burst 40的时候,测试了3论次,数据如下

网络性能曲线图

总结时刻

通过观察,增加limit-burst的数值,可以增加整体速度,对于入口低的服务器,选择的条件不多。

因为我的这台入口服务器的上行带宽是6Mbps,为了保证贴近我自己的服务器的效果,我这里就有3组数据可选,是比较合适的。

--limit 1500/second --limit-burst 20   # 速度为766.5KB/s
--limit 1300/second --limit-burst 30   # 速度为769.7KB/s
--limit 1200/second --limit-burst 40   # 速度为785.0KB/s

在入口服务器设置防火墙规则,在终端中执行即可,注意保存防火墙规则,以免重启后失效

iptables -A INPUT -s 此处US服务器IP地址 -p icmp -m icmp --icmp-type any -m limit --limit 1200/second --limit-burst 40 -j ACCEPT
iptables -A INPUT -s 此处US服务器IP地址 -p icmp -m icmp --icmp-type any -j DROP

另外,US服务器,出站限速,可选做,我这里没有进行设置,因为流量多,没必要折腾。海外服务器是出站,所以是OUTPUT链,包的limit可以多一点,因为发包的网络流量,过程中,考虑丢包的情况。

iptables -A OUTPUT -d 此处CN服务器IP地址 -p icmp -m icmp --icmp-type any -m limit --limit 1300/second --limit-burst 40 -j ACCEPT
iptables -A OUTPUT -d 此处CN服务器IP地址 -p icmp -m icmp --icmp-type any -j DROP

冷门的隧道协议Ping Tunnel,进阶配置,第二课,增加iptables双端限速 2022-02-27》有1个想法

  1. Pingback引用通告: 冷门的隧道协议PingTunnel概览,配置简单,可用于过市面上绝大部分的硬件防火墙 2021-12-12 | Dasmz

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注