Recommended Services
Amazon Web Services
LeanCloud
New Relic
ClearDB
TulvL
V2EX  ›  云计算

IPv6 测速节点搭建教程

  •  
  •   TulvL · May 15, 2021 · 3160 views
    This topic created in 1850 days ago, the information mentioned may be changed or developed.

    本教程是搭建 IPv6.stream 测速节点的经验记录,对其他应用可能也有参考价值

    本文使用 Apache 作为网络服务器,Nginx 版见 这里

    如使用 Docker 可能需要更高配置,本教程暂不涉及

    VPS 准备

    最低硬件要求:
    128MB RAM 、1 GB 剩余空间、IPv6 支持

    操作系统以 Debian 10 为例

    网络准备

    部分服务商可能配置有系统或者服务商级防火墙,应使其允许 80 、443 入站

    由于存在 OpenVZ 机型,为保证测速结果的可比性,本站测速点默认不开启 BBR

    测试 IPv4 连通性

    在 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
    

    此命令会覆盖原有的配置

    测试 IPv6 连通性

    在 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
    

    提出申请、解析完成后建议删除此记录

    HTTP 配置

    安装教程所需的软件

    apt update  
    apt install php libapache2-mod-php unzip curl vim
    

    speedtest-x

    下载 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;
    

    Apache

    新建文件 /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 部分已经配置完成。

    HTTPS 配置

    该部分需要域名已经完成解析

    本教程使用 acme.sh 申请,cerbot 可参考 Nginx 教程

    acme.sh

    使用前可先参考 官方文档

    获取并安装

    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"
    

    Apache

    启用 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 列表。

    2 replies    2021-05-15 12:40:19 +08:00
    datou
        1
    datou  
       May 15, 2021
    推荐使用 golang 版的 librespeed-speedtest

    直接二进制部署简单粗暴
    TulvL
        2
    TulvL  
    OP
       May 15, 2021
    @datou 如果只做测速这一件事情的话那是不错。我这里是要在 80 、443 提供服务,而且还有 Looking Glass,所以难免网络服务器和 php 配置。相信这样也更有借鉴意义。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1454 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 57ms · UTC 16:54 · PVG 00:54 · LAX 09:54 · JFK 12:54
    ♥ Do have faith in what you're doing.