现在 MJJ 都很关注上网体验,除了中转服务器还有落地服务器,甚至人手都部署自己的专属探针。
但是问题来了!你的探针想监测落地服务器网络延迟,总不能直接和测试国内服务器吧?
那延迟肯定高得吓人,而且和使用场景也不符合。

  • 为什么不用 ICMP?
    • 很多地方都封了,测不出来。
  • 为什么用 TCP?
    • TCP 是真实协议,就像你实际使用时一样。
    • TCP 连接时间更准确,不会“骗人”。

解决方案:让中转服务器“露脸”
我们需要在中转服务器上部署 TCP Ping 服务,让它“露个脸”:

  • ✅ 真实测试:从任何地方都能测试到中转服务器的网络质量
  • ✅ 选最优中转:哪个中转服务器延迟最低,一目了然
  • ✅ 实时监控:中转服务器网络状态随时掌握
  • ✅ 优化体验:根据数据调整配置,用户体验 up up up

脚本功能亮点 🚀

核心功能

  • 一键搞定:安装、卸载、管理,一条命令解决
  • 开机自启:重启后自动运行,不用手动启动
  • 三种模式:pingechotimestamp,想怎么测就怎么测
  • 精确数据:RTT、连接时间
  • 自动重启:服务挂了自动恢复,稳如老狗

技术特点 🛠️

  • 自动装依赖:Python3、iproute2,缺啥装啥
  • 彩色日志:绿色成功、红色错误,一目了然
  • 自定义端口:9966 不够用?随便改

一键运行脚本

# 一键安装并启动(默认端口 9966)bash <(curl -s https://raw.githubusercontent.com/lidebyte/bashshell/refs/heads/main/tcp_ping.sh) install# 一键安装到自定义端口bash <(curl -s https://raw.githubusercontent.com/lidebyte/bashshell/refs/heads/main/tcp_ping.sh) install 0.0.0.0 8888# 一键测试bash <(curl -s https://raw.githubusercontent.com/lidebyte/bashshell/refs/heads/main/tcp_ping.sh) test 127.0.0.1 9966就是这么简单!一条命令搞定所有事情。

常用命令

服务管理

查看状态

./tcp_ping.sh status

启动 / 停止 / 重启

./tcp_ping.sh start
./tcp_ping.sh stop
./tcp_ping.sh restart

查看日志

./tcp_ping.sh logs

卸载(一键清理)

./tcp_ping.sh uninstall

测试参数

基本语法

./tcp_ping.sh test <IP> <端口> [选项]

参数说明

-c, --count 测试次数 (默认 10 次)
-i, --interval 间隔秒数 (默认 1 秒)
-t, --timeout 超时秒数 (默认 5 秒)
--type 测试类型 (ping/echo/timestamp)
--data 发送数据 (echo 模式用)

三种测试模式

Ping 模式(默认)
• 测延迟,返回时间戳
• 最常用,数据最准确

Echo 模式
• 发送自定义数据
• 测试数据传输性能

Timestamp 模式
• 获取服务器时间
• 时间同步测试

💡 实际应用:配合探针食用

防火墙配置 ⚠️

部署前一定要开防火墙!不然连不上别怪我!

开放端口 9966

Ubuntu/Debian

ufw allow 9966/tcp

或者 iptables

iptables -A INPUT -p tcp --dport 9966 -j ACCEPT

限制访问(推荐)

只允许特定 IP 访问

ufw allow from 192.168.1.0/24 to any port 9966

或者 iptables

iptables -A INPUT -p tcp --dport 9966 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 9966 -j DROP

自定义端口

如果用其他端口,记得改防火墙

ufw allow 8888/tcp

安全建议 🔒
• 限制访问:别让所有人都能连,容易被扫
• 使用非标准端口:9966 不够安全?换个端口
• 监控日志:定期看看谁在连你的服务器

脚本地址
博客原文