
本教程是搭建 IPv6.stream 测速节点的经验记录,对其他应用可能也有参考价值
本文使用 Apache 作为网络服务器,Nginx 版见 这里
如使用 Docker 可能需要更高配置,本教程暂不涉及
最低硬件要求:
128MB RAM 、1 GB 剩余空间、IPv6 支持
操作系统以 Debian 10 为例
部分服务商可能配置有系统或者服务商级防火墙,应使其允许 80 、443 入站
由于存在 OpenVZ 机型,为保证测速结果的可比性,本站测速点默认不开启 BBR
在 VPS 上执行:
ping -4 ip.sb 带 IPv4 的机型通常可以连通(含 NAT )
仅 IPv6 的机型通常不通
如果不通,不支持 IPv6 的在线安装可能会出现问题,可配置 DNS64 解决:
echo -e "nameserver 2001:67c:2b0::4\nnameserver 2001:67c:2b0::6\nnameserver 127.0.0.1" > /etc/resolv.conf 此命令会覆盖原有的配置
在 VPS 上执行:
ping -6 ip.sb 应当可以连通,否则会影响测速程序正常运行
个别服务商的 DHCPv6 配置存在问题,会获得意外的 IPv6 地址,导致服务器无法出站
如遇到此情况,设网卡为 eth0,则可在 /etc/sysctl.conf 中增加:
net.ipv6.conf.eth0.autocOnf=0 net.ipv6.conf.eth0.accept_ra=0 net.ipv6.conf.eth0.use_tempaddr=0 从而禁止意外的自动地址配置
以下是本文示例使用的域名和地址,操作时请记得替换:
示例域名 example.ipv6.stream
示例 IP 地址 2001:db8::1
如果是自己持有域名,在 DNS 提供商处设置 example.ipv6.stream 的 AAAA 记录为 2001:db8::1
如果想使用本站域名,但还未解析,可先在本地计算机的 hosts 增加一条记录用于后续配置:
2001:db8::1 example.ipv6.stream 提出申请、解析完成后建议删除此记录
安装教程所需的软件
apt update apt install php libapache2-mod-php unzip curl vim 下载 speedtest-x 代码并解压缩
cd /var/www/ wget https://github.com/BadApple9/speedtest-x/archive/refs/heads/master.zip unzip master.zip mv speedtest-x-master speedtest rm master.zip 授予 Apache ( www-data )测速记录所在目录的读写权限
chown www-data:www-data /var/www/speedtest/backend/ 本站的配置文件 /var/www/speedtest/backend/config.php 如下:
<?php /** * 最多保存多少条测试记录 */ const MAX_LOG_COUNT = 150; /** * IP 运营商解析服务:(1) ip.sb | (2) ipinfo.io (如果 1 解析 ip 异常,请切换成 2 ) */ const IP_SERVICE = 'ip.sb'; /** * 是否允许同一 IP 记录多条测速结果 */ const SAME_IP_MULTI_LOGS = true; 新建文件 /etc/apache2/sites-available/speedtest.conf
写入:
<VirtualHost *:80> ServerName example.ipv6.stream DocumentRoot /var/www/speedtest ErrorLog ${APACHE_LOG_DIR}error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> 启用网站
a2ensite speedtest.conf 如果希望记录的时间与北京时间保持一致,可在 /etc/php/7.3/apache2/php.ini 中配置时区:
date.timezOne= "PRC" (大约位于第 956 行,去掉注释)
重启 Apache
systemctl restart apache2 如无报错,打开域名 http://example.ipv6.stream 应能显示出测速页面
检查上下行测速、记录是否正常工作
至此 HTTP 部分已经配置完成。
该部分需要域名已经完成解析
本教程使用 acme.sh 申请,cerbot 可参考 Nginx 教程
使用前可先参考 官方文档
获取并安装
curl https://get.acme.sh | sh 退出并重新登陆终端
签署证书
acme.sh --issue -d example.ipv6.stream --apache 新建证书目录并安装
mkdir /var/ssl/ acme.sh --install-cert -d example.ipv6.stream \ --cert-file /var/ssl/cert.pem \ --key-file /var/ssl/key.pem \ --fullchain-file /var/ssl/fullchain.pem \ --reloadcmd "service apache2 force-reload" 启用 SSL
a2enmod ssl 新建文件 /etc/apache2/sites-available/speedtest-ssl.conf
写入:
<VirtualHost *:443> ServerName example.ipv6.stream DocumentRoot /var/www/speedtest ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined SSLEngine on SSLCertificateFile /var/ssl/cert.pem SSLCertificateKeyFile /var/ssl/key.pem SSLCertificateChainFile /var/ssl/fullchain.pem </VirtualHost> 启用新配置
a2ensite speedtest-ssl.conf 重启 Apache
systemctl restart apache2 如无报错,打开域名 https://example.ipv6.stream 应能显示出测速页面
至此 HTTPS 部分已经配置完成。
可提交 Issue 加入 IPv6.stream 列表。
1 datou May 15, 2021 推荐使用 golang 版的 librespeed-speedtest 直接二进制部署简单粗暴 |