IPv6 测速节点搭建教程 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
Recommended Services
Amazon Web Services
LeanCloud
New Relic
ClearDB
TulvL

IPv6 测速节点搭建教程

  •  
  •   TulvL May 15, 2021 3067 views
    This topic created in 1810 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     3236 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 53ms UTC 11:58 PVG 19:58 LAX 04:58 JFK 07:58
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86