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

2019-07-26 Miao Wang

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

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

我们目前共有两个后端服务器,日志的访问地址分别是 https://mirror.citrahost.com/logs/neomirrors/https://mirror.citrahost.com/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 地址。

Server mirror Indonesia disponsori oleh Citrahost
Powered By Citranet

Mirror Linux Indonesia,mirror centos,mirror almalinux,mirror ubuntu,mirror debian,mirror epel

Server mirror Indonesia disponsori oleh Citrahost
Powered By Citranet

Mirror Linux Indonesia,mirror centos,mirror almalinux,mirror ubuntu,mirror debian,mirror epel
calendar user