# 本站访问日志现已公开发布

2019-07-26 Miao Wang

我们始终认为,TUNA 开源镜像站的访问日志是一笔宝贵的数据。有若干上游向我们表示,希望能够获取对其镜像的访问数据,以便进行分析和统计。我们相信,这些访问日志也可以帮助到那些对于镜像站的运行有兴趣的研究者。基于上述愿意,我们一直以来有愿望公开这些访问日志,以便大家研究。但是在访问日志中,包含有能够追踪到用户的 IP 地址信息,我们不希望该信息能够被泄露出去。然而,完全抹除该信息,则会使得这部分数据的研究价值降低。

为了解决这一矛盾,我们对公开的日志中的 IP 地址信息进行了一定的变换,以确保用户的隐私不被泄露的同时,尽可能减少数据研究价值的减损。具体的变换规则是:保持 IPv4 地址的前 24 位或 IPv6 地址的前 48 位不变,将 IP 地址伪随机地映射至其他地址,该映射关系在 30 秒内保持固定,每隔 30 秒发生一次改变。

我们目前共有两个后端服务器,日志的访问地址分别是 https://mirrors.tuna.tsinghua.edu.cn/logs/neomirrors/https://mirrors.tuna.tsinghua.edu.cn/logs/nanomirrors/。日志的格式是:

$fake_remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$sent_http_content_type" "$http_referer" "$http_user_agent" - $scheme

FAQ

  • Q: 这对于镜像站用户的使用有何影响?

    A: 没有任何影响。

  • Q: 为何要保留 IP 地址的前若干位?

    A: 这样可以保留 IP 地址的大致的地理信息,以便用于分析。

  • Q: 为何在一段时间内固定映射关系?

    A: 这样可以在这段时间内将同一个 IP 地址发送的请求映射至同一 IP 地址,以便用于分析。

  • Q: 为何每隔一定时间改变映射关系?

    A: 由于 IP 地址(尤其是 IPv4 地址)空间有限,这样做可以避免产生长期固定的映射关系,以免通过枚举来获知该映射关系。

  • Q: 具体变换算法是什么?

    A: 首先,该算法的全局参数如下:

    • secret:二进制秘密数据,作为密钥使用;
    • mask_len:保留的 IP 地址位数,对于 IPv4 地址,取 24;对于 IPv6 地址,取 48;
    • step_time:保持映射关系的时间(单位:秒),这里取 30。

    该算法的执行步骤可以描述如下:

    1. ip 为访问者 IP 地址,len 为其位数;
    2. 取当前以秒为单位的 Unix 时间戳 time
    3. time 除以 step_time,商向下取整;
    4. 取缓冲区 buf,并将 ip 填入;
    5. 以无符号大端序 32 位整数的格式,向 buf 内追加写入 time
    6. secret 为密钥,对 buf 执行 HMAC-SHA1 算法,所得哈希值的前 len 位记为 h;
    7. ip 的前 mask_len 位代替 h 的前 mask_len 位;
    8. h 即为变换后的 IP 地址。

本站由清华大学信息化技术中心支持创办,由清华大学 TUNA 协会运行维护。

清华大学 TUNA 协会,全名清华大学学生网络与开源软件协会,是由清华大学热爱网络技术和开源软件的极客组成的学生技术社团。

本站相关源码可在 这里(镜像管理器)这里(镜像站网页) 获取。

根据相关法律法规,本站不对欧盟用户提供服务。

本站由清华大学信息化技术中心支持创办,由清华大学 TUNA 协会运行维护。

清华大学 TUNA 协会,全名清华大学学生网络与开源软件协会,是由清华大学热爱网络技术和开源软件的极客组成的学生技术社团。

本站相关源码可在 这里(镜像管理器)这里(镜像站网页) 获取。

根据相关法律法规,本站不对欧盟用户提供服务。