welcome: please sign in
location: WorkLog / All

目录

  1. 2016-04-30 工作志
    1. bigeagle
  2. 2016-04-10 工作志
    1. bigeagle
  3. 2016-03-25 工作志
    1. bigeagle
  4. 2016-03-07 工作志
    1. bigeagle
  5. 2016-02-21 工作志
    1. bigeagle
  6. 2015-11-11 工作志
    1. bigeagle
  7. 2015-10-08 工作志
    1. bigeagle
  8. 2015-10-07 工作志
    1. bigeagle
  9. 2015-09-15 工作志
    1. bigeagle
  10. 2015-06-14 工作志
    1. bigeagle
  11. 2015-05-11 工作志
    1. bigeagle
  12. 2015-03-15 工作志
    1. bigeagle
  13. 2015-03-10 工作志
    1. bigeagle
  14. 2015-01-30 工作志
    1. bigeagle
  15. 2015-01-22 工作志
    1. bigeagle
  16. 2014-12-30 工作志
    1. bigeagle
  17. 2014-12-25 工作志
    1. bigeagle
  18. 2014-12-11 工作志
    1. bigeagle
  19. 2014-12-10 工作志
    1. bigeagle
  20. 2014-12-09 工作志
    1. bigeagle
  21. 2013-12-08 工作志
    1. bigeagle
  22. 2014-12-06 工作志
    1. bigeagle
  23. 2014-12-05 工作志
    1. bigeagle
    2. django-helpdesk
    3. 校内用户访问教育网IP时的警告
  24. 2014-11-29 工作志
    1. bigeagle
  25. 2014-11-26 工作志
    1. huiyiqun
  26. 2014-11-22 工作志
    1. bigeagle
  27. 2014-11-20 工作志
    1. bigeagle
  28. 2014-11-18 工作志
    1. bigeagle
      1. pypi
      2. linux.git
  29. 2014-11-15 工作志
    1. bigeagle
      1. 封迅雷
      2. edgefonts
  30. 2014-11-13 工作志
    1. bigeagle
    2. btrfs 加盘
    3. android open source project
  31. 2014-11-11 工作志
    1. bigeagle
  32. 2013-01-21 工作志
    1. aron
  33. 2013-01-17 工作志
    1. fqj1994
  34. 2012-12-28 工作志
    1. alick
  35. 2012-12-26 工作志
    1. heroxbd
  36. 2012-12-14 工作志
    1. alick
  37. 2012-12-03 工作志
    1. xiaq, alick
    2. solar reloaded
  38. 2012-09-23 工作志
    1. alick, xiaq
    2. ftp3 现场
  39. 2012-09-20 工作志
    1. alick, hyq, xiaq
    2. 恢复 ftp3
      1. 症状
      2. 操作
      3. 参考
  40. 2012-09-08 工作志
    1. xiaq
  41. 2012-09-02 工作志
    1. heroxbd
  42. 2012-08-27 工作志
    1. heroxbd
  43. 2012-08-20 工作志
    1. alick
    2. ws topdf 服务 IPv6 代理
  44. 2012-08-15 工作志
    1. heroxbd
  45. 2012-07-31 工作志
    1. huiyiqun
  46. 2012-07-30 工作志
    1. xiaq
  47. 2012-07-29 工作志
    1. heroxbd
  48. 2012-07-26 工作志
    1. heroxbd
    2. alick
    3. xiaq
    4. ray
    5. alick & xiaq/安装 Windows Server
      1. 步骤
      2. NOTE
    6. xiaq/ cygwin, openssh
  49. 2012-07-25 工作志
    1. alick
  50. 2012-07-20 工作志
    1. xiaq
  51. 2012-07-18 工作志
    1. heroxbd
  52. 2012-07-17 工作志
    1. heroxbd
  53. 2012-07-15 工作志
    1. heroxbd
    2. solar route split
  54. 2012-07-04 工作志
    1. heroxbd
    2. lxc
  55. 2012-07-02 工作志
    1. xiaq
    2. heroxbd
    3. git.tuna
    4. solar 的 ethernet 调整
  56. 2012-07-01 工作志
    1. xiaq
  57. ftp4 迁移至 solar
  58. 2012-06-30 工作志
    1. heroxbd
    2. ftp4 到 solar 迁移
  59. 2012-06-24 工作志
    1. xiaq
  60. 服务器迁移计划
    1. 现状
    2. 目标
    3. 决议
    4. Ref
  61. 2012-05-22 工作志
    1. xiaq
  62. 2012-05-19 工作誌
    1. byvod
  63. 2012-05-14 工作志
    1. fqj1994
    2. byvoid
    3. heroxbd
  64. fqj1994
    1. 生成前
    2. 生成
      1. 详细生成过程
        1. 目录的遍历与版本号的取得
        2. 生成ISO文件
    3. 需要改进的地方
    4. 贴代码
  65. 2012-05-11 工作志
    1. xiaq
    2. xiaq/ LDAP 用户组结构变动
      1. 旧结构
      2. 问题
      3. 发现,以及新结构
      4. 展望
  66. 2012-05-07 工作志
    1. xiaq
  67. 2012-04-29 工作志
    1. alick at ftp3
  68. 2012-04-27 工作志
    1. xiaq
  69. 2012-04-21 工作志
    1. alick
  70. 2012-04-18 工作志
    1. heroxbd
  71. 2012-03-28 工作志
    1. alick
  72. 2012-03-12 工作志
    1. xiaq
  73. 2012-03-11 工作志
    1. xiaq
  74. 2012-03-08 工作志
    1. huiyiqun/对lux-003上的lvm进行了resize
    2. huiyiqun
  75. 2012-03-07 工作志
    1. xiaq
  76. 2012-02-25 工作志
    1. xiaq
    2. huiyiqun
  77. 2012-02-07 工作志
    1. xiaq
  78. 2012-02-06 工作志
    1. xiaq
  79. 2012-02-01 工作志
    1. alick
    2. xiaq
  80. 2012-01-31 工作志
    1. xiaq
  81. 2012-01-10 工作志
    1. alick
  82. 2012-01-09 工作志
    1. heroxbd
    2. 升级 ftp3 到 CentOS 6
  83. 2012-01-03 工作志
    1. alick
    2. ftp4 镜像站主页等 git 管理
  84. 2011-12-31 工作志
    1. xiaq
  85. 2011-12-15 工作志
    1. heroxbd
  86. 2011-11-28 工作志
    1. xiaq
  87. 2011-11-10 工作志
    1. alick
  88. 2011-11-07 工作志
    1. xiaq
    2. heroxbd
  89. 2011-11-06 工作志
    1. heroxbd
  90. 2011-11-04 工作志
    1. heroxbd
  91. 2011-10-30 工作志
    1. xiaq
  92. 2011-10-29 工作志
    1. xiaq
  93. 2011-10-28 工作志
    1. alick
  94. 2011-10-27 工作志
    1. yuexin
  95. 2011-10-26 工作志
    1. xiaq
    2. alick
    3. xiaq/ wiki lang -> zh-cn
  96. 2011-10-25 工作志
    1. alick
  97. 2011-10-22 工作志
    1. xiaq
  98. 2011-10-21 工作志
    1. huiyiqun
    2. alick
    3. huiyiqun/ 端口号待定
  99. 2011-10-20 工作志
    1. alick
    2. heroxbd
  100. 2011-10-19 工作志
    1. byvoid
    2. huiyiqun
    3. xiaq
    4. yue xin
    5. scateu
    6. alick
  101. 2011-10-18 工作志
    1. huiyiqun
    2. nox-003网络环境
    3. nox-003 php服务
  102. 2011-10-12 工作志
    1. heroxbd
  103. 2011-10-11 工作志
    1. xiaq
    2. alick
  104. 2011-10-08 工作志
    1. xiaq
  105. 2011-09-29 工作志
    1. xiaq
  106. 2011-09-27 工作志
    1. xiaq
  107. 2011-09-19 工作志
    1. heroxbd
    2. xiaq
  108. 2011-09-17 工作志
    1. xiaq
    2. xiaq/ pdns-ldap on major
  109. 2011-09-16 工作志
    1. heroxbd
  110. 2011-09-11 工作志
    1. xiaq
  111. 2011-09-08 工作志
    1. michael
    2. michael/ 在 ftp4 上添加 ubuntu-releases
  112. 2011-09-01 工作志
    1. heroxbd
  113. 2011-08-31 工作志
    1. heroxbd
    2. xiaq
  114. 2011-08-30 工作志
    1. xiaq
    2. 肖骐 周越 郭家寶 小聚会纪要
  115. 2011-08-27 工作志
    1. heroxbd
    2. heroxbd/dns2 slave mode
    3. heorxbd/dropbear on major
    4. xiaq/ 处理 major 宕机
  116. 2011-08-12 工作志
    1. xiaq
    2. xiaq/ 配置 lux-002~004
  117. 2011-08-11 工作志
    1. xiaq
    2. michael
    3. michael/ lux-002~004 服务器操作系统安装
  118. 2011-08-08 工作志
    1. xiaq
  119. 2011-08-04 工作志
    1. xiaq
    2. xiaq/ issue61 (续)
    3. xiaq/ Hacking moin: 添加 @ PAGETAIL @ 变量
  120. 2011-08-03 工作志
    1. xiaq
    2. xiaq/ issue61
  121. 2011-08-02 工作志
    1. xiaq
  122. 2011-07-29 工作志
    1. xiaq
  123. 2011-07-27 工作志
    1. heroxbd
    2. heroxbd/ 阻止中国境内的同学通过 muon 代理访问中国境内的网站
  124. 2011-07-26 工作志
    1. xiaq
    2. xiaq/ 使用 $INCLUDE 指令组织 BIND 的 zone 文件
  125. WorkLog/2011-07-25 工作志
    1. xiaq
  126. 2011-07-24 工作志
    1. xiaq
    2. xiaq/ LDAP 服务器证书问题
      1. 小插曲
  127. 2011-07-23 工作志
    1. xiaq
  128. 2011-07-22 工作志
    1. xiaq
  129. 2011-07-21 工作志
    1. byvoid
  130. 2011-07-20 工作志
    1. xiaq
    2. xiaq/ debootstrap on alef
  131. 2011-07-17 工作志
    1. xiaq
    2. xiaq/ openssl x509 子命令
    3. xiaq/ major 上 squid 相关路由
  132. 2011-07-15 工作志
    1. xiaq
  133. 2011-07-12 工作志
    1. xiaq
  134. 2011-07-11 工作志
    1. xiaq
  135. 2011-07-10 工作志
    1. xiaq/ Hacking phpLDAPadmin
  136. 2011-07-09 工作志
    1. xiaq
  137. WorkLog/2011-07-07 工作志
    1. xiaq
  138. 2011-07-06 工作志
    1. xiaq
  139. 2011-07-05 工作志
    1. xiaq
    2. 物理系精密实验室无法访问图书馆、清华邮箱系统
  140. 2011-07-04 工作志
    1. xiaq
    2. xiaq/ LDAP 客户端 TLS 配置
    3. cuckoo/ 教育基金会采用openwrt路由器替代原有台式机
  141. 2011-07-03 工作志
    1. heroxbd
    2. xiaq
    3. ldap.tuna 改用 https
      1. mod_gnutls memo
      2. mod_rewrite memo
    4. 生物系网络故障处理
    5. cernet.cn 邮件服务器故障处理
  142. 2011-07-02 工作志
    1. xiaq:
    2. xiaq/ oka 主机路由问题解决
    3. byvoid/ mirrors.tuna.tsinghua.edu.cn使用nginx
  143. 2011-07-01 工作志
  144. 2011-06-30 工作志
  145. 2011-06-29 工作志
  146. 2011-06-28 工作志

2016-04-30 工作志

bigeagle

nginx 1.9.11 开始支持 dynamic module, 自己编译的 lua_module 过不去,所以换到自带的 perl_module 需要注意的是,perl_set 必须在 server{} 以外使用。所以 miktex 访问 CTAN 的大小写问题如下解决:

perl_set $uri_lowercase 'sub {
        my $r =  shift;
        return lc($r->uri);
}';

location /CTAN {
        root /srv/mirror;
        autoindex on;
        try_files $uri $uri/ $uri_lowercase $uri_lowercase/ =404;
}

2016-04-10 工作志

bigeagle

  • 使用 nginx-extras 提供的 lua,将 CTAN 的大写 uri 重定向至小写

MiKTeX 非常XX地请求 CJK 宏包时使用 /CTAN/....../CJK.tar.lzma, 而实际存储的是 /CTAN/..../cjk.tar.lzma 所以使用以下代码解决:

location /CTAN {
        set_by_lua $uri_lowercase "return string.lower(ngx.var.uri)";
        root /srv/mirror;
        autoindex on;
        try_files $uri $uri/ $uri_lowercase $uri_lowercase/ =404;
}

这样有个问题,lower_uri 会变成 /ctan/.../cjk.tar.lzma,所以需要再建立个软链接 ctan -> CTAN 或者改进那段lua小代码。

2016-03-25 工作志

bigeagle

  • LDAP 从 master-master 改为 mirror master (双主节点)

2016-03-07 工作志

bigeagle

  • 浏览器访问 mirrors,自动转向 https

server {
        listen 80;
        listen [::]:80;

        server_name mirrors.* mirror.* mirror2.* mirrors4.* mirrors6.* mirrors-i.*;
        
        if ($host ~ "mirrors\.(4|6)\.(.*)") {
                return 301 https://mirrors$1.$2$request_uri;
        }
        if ($host ~ "mirrors\.(i)\.(.*)") {
                return 301 https://mirrors-$1.$2$request_uri;
        }

        if ($http_user_agent ~ "Mozilla/5.0\ ") { 
                return 301 https://$host$request_uri;
        }
        
        location = / {
                return 301 https://$host$request_uri;
        }
        
        include /etc/nginx/conf.d/mirrors_body.confi;
}

server {
        listen 443 ssl;
        listen [::]:443 ssl;

        server_name mirrors.* mirror.* mirror2.* mirrors4.* mirrors6.* mirrors-i.*;
        
        include /etc/nginx/conf.d/mirrors_body.confi;
}

2016-02-21 工作志

bigeagle

  • backport dnsmasq from jessie to wheezy
  • 用 dnsmasq 配合 ipset 按域名让一些流量通过 VPN

2015-11-11 工作志

bigeagle

  • 关闭 AOSP HTTPS 的 proxy_buffering,对于大文件传输意义不大,占用磁盘 IO 且 tmpfs 放不下

2015-10-08 工作志

bigeagle

  • 更改 AOSP 镜像服务方式为 nginx+haproxy 反代

HAProxy如下配置:

defaults
        log     global
        mode    tcp

frontend googlesource-in
        bind 127.0.0.1:4242
        default_backend googlesource-out

backend googlesource-out
        server server1 2404:6800:4008:c03::52:443 maxconn 20480

Nginx 如此配置:

location / {
    proxy_pass https://127.0.0.1:4242/;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host "android.googlesource.com";
    proxy_http_version 1.1;
    proxy_read_timeout 2d;
    proxy_redirect off;
}

2015-10-07 工作志

bigeagle

  • 建立内核L2TP隧道

在机器A上:

modprobe l2tp_eth
ip l2tp add tunnel tunne_id 1000 peer_tunnel_id 2000 remote $remote_ip local $local_ip udp_sport $port udp_dport $port
ip l2tp add session name l2tpeth0 tunnel_id 1000 session_id 3000 peer_session_id 4000
ip link set dev l2tpeth0 mtu 6000 # jumbo frame
ip addr add ...

机器B上:

modprobe l2tp_eth
ip l2tp add tunnel tunne_id 2000 peer_tunnel_id 1000 remote $remote_ip local $local_ip udp_sport $port udp_dport $port
ip l2tp add session name l2tpeth0 tunnel_id 2000 session_id 4000 peer_session_id 3000
ip link set dev l2tpeth0 mtu 6000 # jumbo frame
ip addr add ...

ip l2tp show tunnel
ip l2tp show session
ip l2tp del tunnel tunel_id xxxx
ip l2tp del session tunnel_id xxxx session_id xxxx

2015-09-15 工作志

bigeagle

  • 找到 pypi 同步错误解决方法

当出现

Expected PyPI serial 1723410 for request https://pypi.python.org/pypi/OpenFisca-Core/json but got 1722336

时,对所有出同样错误的 URL 执行

curl -X PURGE https://pypi.python.org/pypi/OpenFisca-Core/json

重启同步任务即可。

注意 https://pypi.python.org/simple/youtube_dl/ 这样的,要换成 https://pypi.python.org/simple/youtube-dl/,具体根据是否返回 301/302 判断。

2015-06-14 工作志

bigeagle

  • 增加按服务统计流量

iptables, ip6tables 加入以下规则

-A OUTPUT -j TRAFFIC_ACCT
-A TRAFFIC_ACCT -p tcp -m tcp --sport 9418 -m comment --comment git-daemon
-A TRAFFIC_ACCT -p tcp -m tcp --sport 80 -m comment --comment http
-A TRAFFIC_ACCT -p tcp -m tcp --sport 443 -m comment --comment https
-A TRAFFIC_ACCT -p tcp -m tcp --sport 873 -m comment --comment rsync

用以下 munin 脚本监控

   1 #!/bin/bash
   2 # ln -s /path/to/this/script.sh service_traffic_IPv4
   3 # ln -s /path/to/this/script.sh service_traffic_IPv6
   4 
   5 traffic_type=${0##*service_traffic_}
   6 
   7 case $1 in 
   8 config)
   9     echo "graph_title ${traffic_type} Service Traffic"  
  10     echo 'graph_args --base 1000'
  11     echo 'graph_vlabel bits out per ${graph_period} by service'
  12     echo 'graph_category network'
  13     
  14     echo 'git.label git'
  15     echo 'git.type DERIVE'
  16     echo 'git.draw AREA'
  17     echo 'git.cdef git,8,*'
  18     echo 'git.min 0'
  19     
  20     echo 'http.label http'
  21     echo 'http.type DERIVE'
  22     echo 'http.draw STACK'
  23     echo 'http.cdef http,8,*'
  24     echo 'http.min 0'
  25     
  26     echo 'https.label https'
  27     echo 'https.type DERIVE'
  28     echo 'https.draw STACK'
  29     echo 'https.cdef https,8,*'
  30     echo 'https.min 0'
  31     
  32     echo 'rsync.label rsync'
  33     echo 'rsync.type DERIVE'
  34     echo 'rsync.draw STACK'
  35     echo 'rsync.cdef rsync,8,*'
  36     echo 'rsync.min 0'
  37 
  38     exit 0;;
  39 esac
  40 
  41 traffic_type=$(echo $traffic_type | tr '[:upper:]' '[:lower:]')
  42 
  43 case $traffic_type in
  44 ipv4)
  45     IPTABLES=iptables
  46     ;;
  47 ipv6)
  48     IPTABLES=ip6tables
  49     ;;
  50 esac
  51 
  52 services=(git http https rsync)
  53 for service in ${services[@]}
  54 do
  55     out_bytes=$($IPTABLES -L TRAFFIC_ACCT -vnx| grep "$service"'[ \-]' | awk '{print $2}')
  56     echo "${service}.value $out_bytes"
  57 done
  58 
  59 # vim: sw=4 sts=4 ts=4 expandtab
  60 

2015-05-11 工作志

bigeagle

  • 增加 lxc-images 镜像
  • 增加 ubuntu-ports 镜像

2015-03-15 工作志

bigeagle

  • 增加 manjaro 镜像

根据 https://wiki.manjaro.org/index.php?title=Manjaro_Mirrors 申请官方源

2015-03-10 工作志

bigeagle

  • pypi nginx bug fix
  • upgrade bandersnatch to 1.7

2015-01-30 工作志

bigeagle

  • 更新 glibc

2015-01-22 工作志

bigeagle

  • 增加针对 Android SDK 的声明

2014-12-30 工作志

bigeagle

  • 修改 git daemon 启动参数为 --export-all --reuseaddr --max-connections=128 --init-timeout=10 --timeout=60

  • 限制 git 单 IP 连接上限为 4 iptables -A INPUT -p tcp --syn --dport 9418 -m connlimit --connlimit-above 4 -j REJECT --reject-with tcp-reset

2014-12-25 工作志

bigeagle

  • 增加 homebrew-sciencehomebrew-python

2014-12-11 工作志

bigeagle

  • 开坑 LogLyzer

  • 在 misc 上部署 loglyzer,目前只做 archive

2014-12-10 工作志

bigeagle

  • 停用 github-pages
    • 在 misc 和 linode 上 serve 网站
    • 使用 webhook 更新

2014-12-09 工作志

bigeagle

  • tunasync 更新
    • 增加 exec_post_syncexec_pre_sync 选项

2013-12-08 工作志

bigeagle

  • misc 使用 ldap 账户
  • tunasync 更新
    • 启动时读取 status 文件,到按计划下次同步时再启动 job
    • 把 upstream 放入 status

2014-12-06 工作志

bigeagle

  • 在 misc 上搭建 pdns 作为 major 的备份

2014-12-05 工作志

bigeagle

  • 搭建 issues
  • 更新 mirror-web,增加清华用户使用校外IP访问时警告

django-helpdesk

定制 django-helpdesk 搭建新的 issues,这个定制起来比较方便,支持匿名提交。 与原版相比有如下改动:

  1. django 1.7 兼容性
  2. 桌面端使用 bootstra-datepicker, 移动端使用 html5 date 类型表单填时间
  3. mobile friendly
  4. 改了下前端样式

校内用户访问教育网IP时的警告

在 nginx 中增加

        location = /static/tunet.json {
                if ($limit) {
                        return 200 "false";
                } 
                return 200 "true";
        }

关于 limit,参见 WorkLog/2014-11-29 的备忘录。 页面上增加一个 ajax,若访问 tunet.json 返回 true 则弹出警告。

2014-11-29 工作志

bigeagle

  • nginx 对外网下载iso限速

geo $ipwhitelist {
        default 1;
        127.0.0.0/8 0;
        172.18.0.0/16 0;
        166.111.0.0/16 0;
        59.66.0.0/16 0;
        101.5.0.0/16 0;
        101.6.0.0/16 0;
        183.172.0.0/16 0;
        183.173.0.0/16 0;
        118.20.0.0/20 0;
        ::/0 0;
}

map $ipwhitelist $limit {
        1 $binary_remote_addr;
        0 "";
}

limit_conn_zone $limit zone=limit:10m;

server {
        location ~ .iso$ {
                root /srv/mirror;
                limit_conn limit 2;
                if ($limit) {
                        limit_rate 200K;                        
                }
        }
}

2014-11-26 工作志

huiyiqun

  • 更新了mirror和misc的物理机,找时间重启

2014-11-22 工作志

bigeagle

  • 趁网速快,增加以下镜像:
    • puppy
    • slackware
    • CRAN
    • repo-ck

2014-11-20 工作志

bigeagle

  • 增加 homebrew.git
  • MirrorUsageTemplate 中增加 ACL,给匿名用户增加 write 权限

2014-11-18 工作志

bigeagle

  • pypi 终于好了
  • linux.git

pypi

同步工具 bandersnatch,配置文件位于 /etc/bandersnatch.conf,5分钟同步一次

linux.git

git over http 太慢了,添加 /etc/systemd/system/git-daemon.service,服务位于 /srv/git 的文件夹,建立到 linux.git 的软链接。

2014-11-15 工作志

bigeagle

  • 迅雷
  • edgefonts proxy
  • tunasync 增加 logrotate

封迅雷

/etc/nginx/agent-block.conf 里加入:

if ($http_user_agent ~ "Mozilla/4.0\ \(compatible;\ MSIE\ 6.0;\ Windows\ NT\ 5.1;\ SV1;\ .NET\ CLR\ 1.1.4322;\ .NET\ CLR\ 2.0.50727\)") { return 444; }
if ($http_user_agent ~ "Mozilla/4.0\ \(compatible;\ MSIE\ 7.0;\ Windows\ NT\ 6.1;") { return 444; }
if ($http_user_agent ~ "Mozilla/4.0\ \(compatible;\ MSIE\ 7.0;\ Windows\ NT\ 6.2;") { return 444; }

edgefonts

edgefonts通过返回js+AJAX方式加载字体,简单反向代理只能代理js, 字体无效,需要使用nginx的字符串替换。 在 nginx 配置中加入

proxy_set_header  Accept-Encoding  "";
sub_filter  '//use.edgefonts.net' '//edgefonts.tuna.tsinghua.edu.cn';
sub_filter_types text/javascript;
sub_filter_once off;  # 仅替换一次,设为 on 也行 

2014-11-13 工作志

bigeagle

  • 新增一块 4TB 硬盘
  • 增加 android open source project 镜像

btrfs 加盘

btrfs device add /dev/vdc /mnt/mirrors/ 

增加设备,之后需要

btrfs fi balance start -mconvert RAID1 /mnt/mirrors 

使得 metadata 使用 RAID1 存储,以后再加盘就不需要加转换参数了,直接 balance 即可,过程比较长

android open source project

这货必须使用 git-http-backend 服务,注意 nginx 和 fcgiwrap.socket 的权限。

2014-11-11 工作志

bigeagle

  • 到机房接好了网线,mirrors 和 misc IPv4 通了,感动的要哭了
  • 发现交换机配置仍有问题,需要解决

2013-01-21 工作志

aron

  • 在 solar 上建立 sshfs 帐号,用于自远端服务器挂载文件夹
  • 提供有电信电路的服务器资源下载 downloads.openwrt.org 上的文件,通过 CERNET2 IPv6 连接 sshfs 写入到 solar
  • 感谢 fqj 提出用 lftp 同步的想法,命令为 lftp -c mirror -e -P 10 -v http://downloads.openwrt.org/

2013-01-17 工作志

fqj1994

把dove上加一个反向代理到pypi.tuna(solar),因为e.pypi必须绑定两个IPv6

2012-12-28 工作志

alick

  • ftp3: updated and rebooted

2012-12-26 工作志

heroxbd

  • squid white domain: 整理 squid 的 white domain, 从 saturn 和 thirsty 收集,写在 white_domain.acl 中
  • saturn: gentoo-prefix 升级 (主要是 unison)

2012-12-14 工作志

alick

  • 写了些维基文档

2012-12-03 工作志

xiaq, alick

  • solar reloaded

solar reloaded

上午,solar 的 Web 服务无反应。ssh 正常,登录后发现 load 超过 100... htop 发现有大量 mirror 的未完成的 cron 任务。

原因:mirror-nas 连接的交换机挂了。mirror-nas NFS 连不上,相关任务无响应(包括执行 df 命令-_-)。

杀掉大量未完成 cron 任务后,系统 load 降到正常值。但 Web 服务仍不行,umount -f  报设备忙...

最终重启机器。重启很慢,但还是起来了。

2012-09-23 工作志

alick, xiaq

  • ftp3 现场恢复(虽然后来过了1h又挂了)

ftp3 现场

现场接上显示器,显示 kernel panic 信息,如图:

Panic

Service Code 标签如图,可以辨认出来

Service Tag: B8XPW1X
Express Service Code: 24484970373

Service code

Mfg. Date: 011406

2012-09-20 工作志

alick, hyq, xiaq

恢复 ftp3

症状

syslog at Sep 20 02:25:56

 kernel:Uhhuh. NMI received for unknown reason b1 on CPU 0.
 kernel:You have some hardware problem, likely on the PCI bus.
 kernel:Dazed and confused, but trying to continue

机器上LCD小屏幕显示

... EB10C ...
... ECC Uncorr Err ...

搜索显示与内存故障相关(?)

重启 BIOS 显示信息类似:

memory read fail at 0xDEADBEEF..., expected 0xDEADBEEE

应该是内存问题。

操作

简单的拆卸外壳(需要螺丝刀)。发现共有5个内存条,一个在上面,另外4个在主板上。 主板上有6个内存插槽。

对各内存条进行了擦拭。

进行了多次内存条的放回、移位,以重启BIOS信息为判断标准,最终认定第3、4号内存条很可能有硬件问题。 最终保留3个正常的内存条,重启了系统,恢复了各服务。现有内存 512+512+256:=1019.6MB

小提示:

  • 操作板上内存条前,需要移去(平移?)上面的memory shroud(护罩)

  • 内存条可以挨着插1,2,4个。但不可以只插3个,原来这是设计使然

参考

一些有用的手册:

  1. PE2800 User Guide https://support.dell.com/support/edocs/systems/pe2800/en/ug_en/n1871c10.htm

  2. PE2800 Systems Installation and Troubleshooting Guide https://support.dell.com/support/edocs/systems/pe2800/en/it_en/index.htm

  3. PE2800 各手册入口 https://support.dell.com/support/edocs/systems/pe2800/en/index.htm

2012-09-08 工作志

xiaq

  • solar 上的 /srv/data NFS (debian 和 fedora 镜像所在地) 恢复了,灭哈哈。

2012-09-02 工作志

heroxbd

  • SoSo 清理 rootfs,重启 logrotate

2012-08-27 工作志

heroxbd

  • fedora 目录移至 8.195:/vol/NA2A_4T_stu/ (由马老师提供), closing Issue298

2012-08-20 工作志

alick

  • ws topdf 服务 IPv6 代理(或端口映射)

ws topdf 服务 IPv6 代理

ws 上的 Apache 本身没有 IPv6 支持。根据 zayoo 的建议,使用 Windows 的 portproxy 进行端口转发:

netsh interface portproxy add v6tov4 listenport=80 connectaddress=166.111.9.139 connectport=80

注:connectaddress 缺省或填写 127.0.0.1 都不行,都不会监听 [::]:80。原因不详, 参考这里

参见邮件列表的讨论:https://groups.google.com/d/msg/tunet_admin/3g6xkoQk9lY/k9yyF8dM49YJ

2012-08-15 工作志

heroxbd

2012-07-31 工作志

huiyiqun

  • 通宵学习squid3的配置

2012-07-30 工作志

xiaq

2012-07-29 工作志

heroxbd

2012-07-26 工作志

heroxbd

  • solar 加入 219.243.209.173/24 IP, eth1 上
  • solar 加入 /etc/cron.hourly/open-cernet 用于激活 219.243.209.1 网关

alick

  • 安装 Windows Server

xiaq

  • 和 alick 一起装机后,安装了 cygwin,并在 cygwin 上安装和配置了 OpenSSH Server。

ray

alick & xiaq/安装 Windows Server

步骤

  1. 得到 ISO 镜像。
  2. 传 ISO 文件到 154,进而上传到虚拟化服务器 ESX 的数据存储上。
  3. 建立虚拟机,装系统。

NOTE

  • vSphere Client 似乎只有 Windows 版本。这是需要 154 的原因。
  • 最终用 meepo 获得 ISO 镜像。其实还可以考虑 MS 的 DreamSpark 计划。

  • 154 上的 meepo 客户端有问题,报 DoKan 驱动错误,本地出不来挂载盘,放弃之。于是又找了台校内机器做中继,于是传 ISO 用到了两级中继……

  • 中继之间的传递用了 FTP。客户端是 FileZilla。对于大文件传输做 MD5/SHA 校验是很有必要的。昨晚就没有校验,而 ISO 真的传坏了,而且在安装系统时复制文件时才报错……后来下了 !WinMD5 Free 进行校验,发现两个中继上 ISO MD5 不一致……于是任务就拖到了今天。

  • (xiaq 可以补充) 我们建虚拟机用了两次。第一次新建虚拟机后直接改了存储名,而虚拟机配置里改不了,悲剧的开机报错。
  • 远程桌面连接 Windows 容易黑掉/卡掉。rdesktop 的一些参数对慢速网络可能有帮助(-a 15 -z -P -p -,另有 -m 可用但装系统时就不要用了)。
  • VMWare 按 Esc 键弹出 BIOS 选择启动介质的界面。时间短暂,要手快。
  • 我们安装了 2008R2 Standard Edition。
  • 装好系统后配置网络时尝试了 140/139 等 IP,发现都 ping 不到学校的 DNS 服务器(28/29);后来偶然发现可以 ping 到 8.8.8.8。
  • 服务器默认不回复 ping ICMP 请求。可用 netsh firewall set icmpsetting 8 打开

  • Windows Server 远程桌面有每个用户最大一个连接数、最多两个用户登录的限制。尚无尝试解除或放松之,留一参考连接

  • 最后吐嘈一下,昨晚我这还停电了十多分钟,断电断网呃 -_-b

xiaq/ cygwin, openssh

安装了 http://www.cygwin.com/ 和上面的 OpenSSH (server 和 client 是一个包)。

OpenSSH 的配置略麻烦,步骤:

1. 用 cygwin 的 setup.exe (实际上它就是 cygwin 的包管理器) 安装 openssh 包。要用管理员身份运行,不然没法创建桌面快捷方式……

2. 用管理员身份运行 Cygwin Terminal,执行 1

$ ssh-host-config # 这是一个交互式程序,问什么答什么就行……
$ cygrunsrv -I sshd # 这是 Cygwin 的 service 命令,-I = install (开机自启动)
$ cygrunsrv -S sshd # -S = start

3. 添加防火墙规则,允许外来 22 端口的访问。

4. 然后就可以了~ 用本地的密码登录即可。

  1. ref: cygwin 的 /usr/share/doc/Cygwin/openssh.README (1)

2012-07-25 工作志

alick

  • Set up yet another bare repo of ftp3's mirror scripts on git.tuna. (Just a mirror. Real magic is still on ftp3.)

2012-07-20 工作志

xiaq

  • poorman 上配置 MTA (Postfix) 和 MDA (Dovecot)。

2012-07-18 工作志

heroxbd

  • tuna2 from zayoo, set up ldap access NslcdLogin. set its dn as zyo2.tuna

2012-07-17 工作志

heroxbd

  • major.tuna split route issue243
  • solar detele raid modules
  • solar install open-vm-tools
  • solar ipv6/ipv4 split route

2012-07-15 工作志

heroxbd

  • solar route split. 有时 166.111.9 的网络有问题,另一个地址就非常有用了。

solar route split

aron 报告了 solar 166.111.9.128/27 网段的问题:

traceroute to mirrors.4.tuna.tsinghua.edu.cn (166.111.9.148), 64 hops max
1 * * *
2 222.28.240.57 (222.28.240.57) 0.521ms 0.428ms 0.441ms
3 222.28.240.5 (222.28.240.5) 0.316ms 0.307ms 0.318ms
4 202.112.41.49 (202.112.41.49) 0.579ms 0.522ms 0.548ms
5 202.112.53.193 (202.112.53.193) 1.210ms 1.137ms 0.841ms
6 202.112.53.170 (202.112.53.170) 0.585ms 0.581ms 0.563ms
7 202.112.38.74 (202.112.38.74) 0.624ms 0.550ms 0.616ms
8 118.229.4.2 (118.229.4.2) 1.820ms 1.906ms 2.220ms
9 59.66.2.77 (59.66.2.77) 2.098ms 3.062ms 1.761ms
10 118.229.2.2 (118.229.2.2) 1.953ms 1.945ms 1.709ms
11 118.229.3.42 (118.229.3.42) 9.500ms 17.723ms 1.900ms
12 59.66.4.197 (59.66.4.197) 2.101ms 2.182ms 1.879ms
13 59.66.4.1 (59.66.4.1) 1.813ms 1.871ms 1.491ms
14 * 166.111.9.148 (166.111.9.148) 2036.067ms 2799.952ms

2012-07-04 工作志

heroxbd

  • tuna4: add lxc for testing
  • mirror: fix awffull
  • mirror: fix logrotate

lxc

编译新内核 3.4.4

http://wiki.gentoo.org/wiki/Lxc

2012-07-02 工作志

xiaq

  • git.tuna

heroxbd

  • solar 与 tuna4 的 ethernet 调整

git.tuna

对原来 mirrors 中的 git http-backend (http://mirrors.tuna.tsinghua.edu.cn/git/) 和 gitweb (http://mirrors.tuna.tsinghua.edu.cn/gitweb/) 服务做了一些调整,形成了新的 http://git.tuna.tsinghua.edu.cn 。相比于以前的配置有两点改动

  • 出于安全性考虑去掉了 git http-backendGIT_HTTP_EXPORT_ALL 参数,并在 /etc/gitweb.conf 中配置了 $export_ok = "git-daemon-export-ok"。给 /home/git/mirror 下的 repo 均创建了 git-daemon-export-ok

  • /git/gitweb 下的 URL 会根据 useragent 内部把 rewrite 为 /git/gitweb 下的对应地址。仍然可以通过后面两个地址直接访问 git http-backend 和 gitweb,但是大多数时候已经不需要了。

  • files
    • solar:/etc/nginx/sites-available/git

    • solar:/etc/gitweb.conf

solar 的 ethernet 调整

solar 为虚拟机,宿主机总带宽为 1Gbps。虚拟机加双网卡没有意义。

  • solar 上单网卡,bind 两个 v4 地址,获得一个 v6 地址
  • tuna4 进行类似的调整

2012-07-01 工作志

xiaq

  • ftp4 -> solar

ftp4 迁移至 solar

在香港回归十五周年之际,我们完成了 ftp4 -> solar 的迁移。

未来的服务器部署计划是把大多数服务部署在同一台高配置的虚拟机上。原来打算复用 major 的名字,但是考虑到一段时间内新的虚拟化会和旧的 major 共存,新的全能 VM 取名为 solar。

ftp4 现改名为 mirror-nas,顾名思义,以后只用于提供镜像站的 NAS(NFS) 服务。待公用 VM omni 搭建好之后,请各位把自己存放在原 ftp4 上的资料转移到 omni 上去。转移文件的具体时间另行通告。镜像站的前端和同步脚本迁移到了 solar 上。

趁着迁移,我把一些技术细节做了调整。

  • 现在跑 cron 同步各个镜像的用户名字叫做 mirror,家目录是 /home/mirror。镜像的数据放置在 /mirror 下面。

  • 镜像脚本和 web 文件的 git repo 分别在 /home/git/mirror/{scripts,web,stg.web}.git 下,对应于原来的 /home/git/{ftp4,web,stg.web}.git。请各位修改自己的 git repo 对 origin 的引用地址。例如脚本 repo 的 .git/config 中的 [remote "origin"] 一节现在应该是这样的:

    [remote "origin"]
            fetch = +refs/heads/*:refs/remotes/origin/*
            url = solar:~git/mirror/scripts

    (你可能需要把 solar 写成 solar.tuna.tsinghua.edu.cn。)

  • wheel 组成员 sudo 成为 root 需要打密码了 (去掉了原来的 NOPASSWD)。

To 不知道的同学:名字为 xxx 的主机都有 xxx.tuna.tsinghua.edu.cn 的域名。

2012-06-30 工作志

heroxbd

ftp4 到 solar 迁移

  • solar 装机 debian wheezy
  • 升级 ftp4 的包
  • 重置 ftp4 root 密码
  • purge mysql 和 apache
    1. 重置 mysql root 密码 (cf. http://www.debian-administration.org/articles/442)

    2. 把 mysql dump 至 /dev/sdb1:/srv/bak/ftp4.sql,rm -rf /var/lib/mysql
    3. 备份 apache 的配置
      tar Jcf  apache-etc.tar.xz /etc/apache2
    4. 备份 tangfoundation 和 thucomp
      tar Jcf html.tar.xz /var/www/html && rm -rf /var/www/html/
    5. 备份 skiing
      tar Jcf skiing.tar.xz /var/www/wp_skiing/ && rm -rf /var/www/wp_skiing/
  • ftp4 上布署 nfs4, solar mount 在 /srv
  • rsync ftp4:/home/ftp

2012-06-24 工作志

xiaq

  • 语音会议。see below

服务器迁移计划

现状

312 机房中有归 TUNA 用的 5 台物理机器,alef major poorman thucld ftp4,还有一台康哥跟小雨哥拼的一个较牛B的HP服务器 (CPUx2 mem32G)

DragonLab 有三个网段可由小雨分配,12U 至 20U 的机位可分配,NAS 5T可分配。

目标

HP服务器与ftp4物理机进入DragonLab, 所有现有的服务器做成HP上的 VMWare 虚拟机。

决议

今天语音会议形成的决议,请大家审阅

  1. 本次迁移不影响 ftp3
  2. 用一周时间 (6.24 -- 7.1) 把 alef major poorman thucld ftp4(镜像除外) minor-vpn minor-newtunet minor-toy 迁移进 HP 服务器成为虚拟机。ftp4 物理机安装 freeNAS 做成 NAS,名叫 mirnas (可选,目前的 linux 不变提供 nfs 服务也可以,但 freeBSD 更拉风)
  3. 7.1 日,把 HP 与 mirnas 搬入 DragonLab 改 IP,HP 上的虚拟机上线,312原机器下线 (初定4人出场,点名 zayoo, xiaq, hyq, vuryleo,欢迎大家踊跃报名围观帮忙)

  4. 7.1 日,改 DNS 记录等收尾工作。服务停机时间至多一天
  5. 312 机房里残留的机器做一个分布式的文件系统,甚至操作系统,求方案。(fqj 总结:mogilefs lustre mosefs plan9 glusterfs coda pvfs2)

Ref

  1. http://etherpad.osuosl.org/tuna-migration

  2. http://issues.tuna.tsinghua.edu.cn/issue219

2012-05-22 工作志

xiaq

  • 在中主测试即将部署的无线网 portal。把相关代码拷贝出来并且在 alef 上建了 git repo。

2012-05-19 工作誌

byvod

  • 恢復mirrors上epel的更新。

Include: 找不到"^----"!

2012-05-14 工作志

fqj1994

  • issue109 中请求,记录jigdo生成debian stable和testing的iso的方法。

byvoid

heroxbd

fqj1994

生成前

使用rsync同步除iso以外的其余镜像

生成

jigdo-lite 可以下载制定url的.jigdo文件和.template文件,通过/etc/apt/sources.list指定的源获取需要的其他文件。

详细生成过程

目录的遍历与版本号的取得

对于debian testing来说,文件名中使用的版本号为testing,目录结构为$ARCH/iso-{cd,dvd}/

对于debian stable来说,需要先获取到数字的版本号,具体方法如下:

1. 取得根目录的列表

2. 去掉current和project

剩下的及为所有可能的版本号。

目录结构为$VER/$ARCH/iso-{cd,dvd}

生成ISO文件

先删除旧的iso '其实这里可以先通过HASH校验,仅仅删除有变化的iso'。

使用一下命令

jigdo-lite --noask http://localhost/$DIRECTORY/$JIGDOFILE.jigdo

即可生成对应的iso

在一个目录中的iso生成完后,可以(不必须)删除jigdo-file-cache.db

需要改进的地方

1. 在删除iso之前,检查iso的HASH值,若校验成功则无需删除,无需重新生成

2. 一个iso生成失败不应该影响另一个iso的生成

贴代码

2012-05-11 工作志

xiaq

  • issue207 中请求,记录 LDAP 中的用户组结构变动。

xiaq/ LDAP 用户组结构变动

此事缘起于 fqj1994 被我加入 mirrors 用户组后,登录 ftp3/ftp4 却不能正常获得 mirrors 组员身份(id 命令的结果显示没有获得)。我在调试 LDAP 客户端 nslcd 的时候对 LDAP 中的用户组结构有了更多的了解,在解决了 fqj1994 的问题的同时对现有 LDAP 的结构做了变动。对 ftp3 在 LDAP 中的数据做了变动之后没有相应地修改 ftp3 中 nslcd.conf 导致了 issue206 。应 Aron 的请求,就有了这一份文档。

首先假设读者知道 TUNA LDAP 数据库当前的总体结构,不知道的话请移步 LdapArch

旧结构

以 major 为例,在 ou=groups,cn=major,ou=hosts,o=tuna 下有如是结构(信息取自 ldapsearch 的输出并加以调整):

dn: cn=userDNs,ou=groups,cn=major,ou=hosts,o=tuna
cn: userDNs
objectClass: groupOfNames
member: uid=scateu,ou=people,o=tuna
member: uid=xiaq,ou=people,o=tuna

dn: cn=users,ou=groups,cn=major,ou=hosts,o=tuna
cn: users
objectClass: posixGroup
objectClass: tunaMemberUidURIObject
gidNumber: 1500
tunaMemberUidURI: ldap:///ou=people,o=tuna?uid?one?(&(objectClass=posixAccount)(memberOf=cn=userDNs,ou=groups,cn=major,ou=hosts,o=tuna))
# automatic generated by dynlist overlay
memberUid: xiaq
memberUid: scateu

其中 cn=userDNs 是管理员在授予某个用户登录权限的时候要编辑的。cn=users 则借助 OpenLDAP 的 dynlist overlay,自动从 cn=userDNs 获取 memberUid 的值。另外,借助 memberof overlay,用户可以自动获得 memberof 属性作为 member 属性的 backlink。例如要获取在 cn=userDNs,ou=groups,cn=major,ou=hosts,o=tuna 这一节点的 member 属性中列出的成员,可以使用 filter memberOf=cn=userDNs,ou=groups,cn=major,ou=hosts,o=tuna1

两个 overlay 的配置是(摘自 major:/etc/ldap/slapd.conf):

overlay dynlist
dynlist-attrset tunaMemberUidURIObject tunaMemberUidURI memberUid:uid

overlay memberof
memberof-group-oc groupOfNames

nslcd 中关于用户和组信息的配置如下(摘自 major:/etc/nslcd.conf):

base   passwd ou=people,o=tuna
filter passwd (memberOf=cn=userDNs,ou=groups,cn=major,ou=hosts,o=tuna)
base   shadow ou=people,o=tuna
filter shadow (memberOf=cn=userDNs,ou=groups,cn=major,ou=hosts,o=tuna)
base   group  ou=groups,cn=major,ou=hosts,o=tuna

为什么需要两个对象来维护组信息呢?cn=userDNs 是必要的,否则 nslcd.conf 中的 filter passwd 就没法写了,这样任何一个 LDAP 帐号都可以登录 major。cn=users 也是必要的,因为 nslcd 只会从对象类为 posixGroup 的节点中提取组信息。

users 组需要费事地建立两个对象,但是其他组就不用了——只需要一个 posixGroup 类的对象,因为它不需要写在 nslcd.conf 里面用来过滤属于本机的用户。但这种做法并不是很干净,因为 posixGroupmemberUid 属性是直接存储用户名,而不是用户在 LDAP 数据库中的 DN。

此外,像 mirrors 这种多机器共用的组也不能只用一个 posixGroup 来实现。可能的做法是:

  1. ou=groups 下建立一个 posixGroup,然后借助别名机制引入到 ftp3, ftp4 下;

  2. ou=groups 下建立一个 groupOfNames,然后用上面的 tunaMemberUidURI 把前面群组中引用的用户的 uid 属性动态地提取出来,放到 memberUid 中。

我采用的是第二种方法。于是就带来了后面的问题。

问题

上述的方案似乎是完美的。但是实际操作中,mirrors 组的用户却不能被授予组员身份。

当 nss-pam-ldapd 的 PAM 模块授予登录用户组身份的时候,会执行如下搜索(假设登录用户是 xiaq,登录主机是 ftp4;输出来自 nslcd -d):

nslcd: [7b23c6] <group/member="xiaq"> DEBUG: myldap_search(base="ou=groups,cn=ftp4,ou=hosts,o=tuna", filter="(&(objectClass=posixGroup)(|(memberUid=xiaq)(member=uid=xiaq,ou=people,o=tuna)))")

这个搜索并不会返回 cn=mirrors,ou=groups,cn=ftp4,ou=hosts,o=tuna 这个组。但是如果尝试获取 cn=mirrors,ou=groups,cn=ftp4,ou=hosts,o=tuna,它的 memberUid 属性中是包含 xiaq 的。

原因在于,它的 memberUid 属性是借助 dynlist 这个 overlay 动态地生成的,而这个动态生成操作只有在显式地请求它本身的时候才会被触发,在对它所在的树进行过滤操作的时候并不会触发。

实际上,借助于 dynlist 生成 memberUidcn=userss,ou=groups,cn=ftp4,ou=hosts,o=tuna 也有完全一样的问题。但因为它是所有用户的 primary group,在 PAM 模块中对 primary group 会做特殊处理,所以问题就没有显露出来。

发现,以及新结构

还是上面的调试输出:

nslcd: [7b23c6] <group/member="xiaq"> DEBUG: myldap_search(base="ou=groups,cn=ftp4,ou=hosts,o=tuna", filter="(&(objectClass=posixGroup)(|(memberUid=xiaq)(member=uid=xiaq,ou=people,o=tuna)))")

注意其中的 filter 中的 (|(memberUid=xiaq)(member=uid=xiaq,ou=people,o=tuna))LDAP search filter 使用前缀表达式,操作符 |& 分别代表逻辑或和逻辑与)。这意味着除了 memberUid 可以用来定位用户,member 也可以用来定位用户。

于是我前面所做的,用 dynlist 把 memberUid 映射成 member,全都是白费的。不过也要怪 nss-pam-ldapd 的文档中并没有提到这个给力的特性。

再看完整的 filter:(&(objectClass=posixGroup)(|(memberUid=xiaq)(member=uid=xiaq,ou=people,o=tuna)))。也就是说要求组对象的对象类是 objectClassposixGroup。可是 posixGroup 并不支持 memberUid 属性,而支持 memberUid 属性的 groupOfNamesposixGroup 一样是 structural object class 所以不能同时用于一个对象。

解决方案其实很简单,我在 schema 中创建了 tunaGroup 这一新的对象类,继承自 posixGroup,并允许 memberUid 属性。自此以后 cn=userDNscn=users 就合并了。

此外,共用 mirrors 组的实现也通过 alias 来实行。新的方案中完全抛弃了不给力的 dynlist overlay。

展望

下一步要做的就是把所有设备的组信息都迁移到新方案上来。鉴于机器并不算太多,手工迁移也是可行的,不过我正在考虑怎么写脚本。不管怎样,近期一定会都迁移好。

  1. “搜索某个节点的 member 属性所引用的全部成员”,这种操作必须借助非标准的 OpenLDAP overlay 以这种复杂的方式来完成,这是 LDAP 协议标准的缺陷。Anyway, live with it. (1)

2012-05-07 工作志

xiaq

  • 改进 ftp4 的 nginx 配置。参见 issue201

2012-04-29 工作志

alick at ftp3

  • work on issue189,issue190
  • stop arpwatch
  • sshd disable password auth

2012-04-27 工作志

xiaq

  • 今天 wiki.tuna 出现 HTTP 500,登录上 major 看发现是 Apache 的日志把分区填满了。把日志文件移到自己的 home 下发现日志中出现大量

PANIC: fatal region error detected; run recovery

以致日志达到了 25GB。Google 发现这条错误信息似乎和 Berkerley DB 或者 GnuTLS 有关。刚好 aptitude update 后发现 GnuTLS 和 Apache 均有更新,更新之。继续观察。

2012-04-21 工作志

alick

  • 给 ftp3 安了 ntpd,从 ntp.tuna 对时。

2012-04-18 工作志

heroxbd

  • ftp3 加入 arpwatch 进行 lan 的嗅侦

2012-03-28 工作志

alick

  • 修正 ftp3 rsyncd.log 的 SELinux 属性,使得日志可以正常记录。参考 SelinuxHowto

2012-03-12 工作志

xiaq

  • 把 ldap.tuna (major) 和 ldap2.tuna (beth-ldap) 配成了 mirror 模式。[1]

1. http://www.openldap.org/doc/admin24/replication.html#MirrorMode%20replication

2012-03-11 工作志

xiaq

2012-03-08 工作志

huiyiqun/对lux-003上的lvm进行了resize

  • lux-003上现在有一个OpenWrt的镜像,用wget每周更新一次,但是最近发现容量快要不够了,所以进行了扩容,但是扩容之后发现重新mount之后df中显示的容量还是扩容之前的,查资料结果是扩容,减容之后都需要用resize2fs命令更新容量,现在lux-003上mirror分区的大小为22G

huiyiqun

  • 持续学习web.py,js,jquery等东西,希望能把主页弄得更酷。

2012-03-07 工作志

xiaq

  • 在 alef 上配置了 libvirt (装了一大堆可选依赖之后才能用),把原来放在 /deb 的 slapd 移到了虚拟机 beth-ldap 上。端口转发 389 -> 389, 22389 -> 22,只有 root 帐号。

2012-02-25 工作志

xiaq

  • 为 LDAP DB 中 ou=people 下的每个结点添加了一个 ou=contacts 以支持私人通信录。

huiyiqun

  • 完成了contagged的代码修改,初步建成了比较适合我们现阶段的通讯录系统。

  • @xiaq,结果还是失败了,权限问题,记得有时间解决。
  • 实际上contagged的代码已经有一年没有更新了,也没有找到什么更加适合我们的基于ldap的通讯录,contagged中也没有实现start_tls,基于以上原因,想要建立一个安全的通讯录需要自己写代码了,下次有时间做吧。

2012-02-07 工作志

xiaq

  • 把 ftp4 上的同步脚本目录 ftp4:~git/ftp4.git 及其下属文件的所属者改成了 mirrors 组。把 ray 加入了该组。

2012-02-06 工作志

xiaq

2012-02-01 工作志

alick

  • ftp3 安装 setroubleshoot 包。

xiaq

2012-01-31 工作志

xiaq

  • 在 major 上安装并开启了 libvirt 服务。

2012-01-10 工作志

alick

  • ftp3 上开启 rsync daemon 服务。(安装 xinetd,xinetd 管理 rsync daemon)

2012-01-09 工作志

heroxbd

  • 整理 ftp3:/usr 删除 /usr/local/apache2 删除旧 kernel 们
  • 备份 / 到 /data/centos4_bak

升级 ftp3 到 CentOS 6

详见 issue142

2012-01-03 工作志

alick

  • 给 ftp4 镜像站门户网页们的 git 仓库搬家了。

ftp4 镜像站主页等 git 管理

新建了 /srv/ftp/stg,作为网站的 staging 区域。stg 目录做了 ACL同时修改了 robots.txt 以让爬虫忽视 stg 目录。

建立两个 bare repo:/home/git/web.git 和 /home/git/stg.web.git。 两个目录也设置了 ACL 方便群组成员合作。两个仓库的群组为 www-data。

设置 post hook:

$cat /home/git/web.git/hooks/post-receive
#!/bin/sh
git --work-tree=/srv/ftp checkout -f
$cat /home/git/stg.web.git/hooks/post-receive
#!/bin/sh
git --work-tree=/srv/ftp/stg checkout -f

其他参见 issue 117MirrorMaintainance 等。

2011-12-31 工作志

xiaq

  • 在 2011 年的最后一天,我把 minor-vpn 上的 syslog daemon 换成了 syslog-ng(以前是 rsyslog)。

    syslog-ng 的好处是它可以设置复杂的 filter。这样就可以把 PPTP server 的日志分离出来,方便日后分析。这个需求 byvoid 多次提到的。

    Debain 的 syslog-ng.conf 里面预置了 ppp 相关的 filter(f_ppp)和 destination(d_ppp),但是相关的 log 指令是被注释了的;我把它取消注释了。f_ppp 的写法是

    filter f_ppp { facility(local2) and not filter(f_debug); };

    我对它的正确性颇为怀疑,因为没有证据表示 local2 这一 facility 是被且仅被 PPTP server 占用的。但因为是发行版预置的,目前就采用它了,若有错日后再改。

  • UPDATE: 经过简单的 Google 之后发现,/var/ppp.log 的用途似乎是限于 PPPoE 拨号的日志。我为 pptpd 另写了相应的 filter、destination 和 log 指令。

2011-12-15 工作志

heroxbd

  • 恢复 sky 与徐老师一起把 sky 恢复了,把系统稳定在 Debian Squeeze。manifold 进行了升级,上 etckeeper

2011-11-28 工作志

xiaq

2011-11-10 工作志

alick

  • ftp3 上开启 sendmail 服务,可以发邮件。之前 sendmail 没开,/var/spool/clientmqueue 下积压了 2000 多份邮件(17MB),大抵是 cron 邮件、镜像同步失败提醒等,被我删除了(实际上mv到了我的主目录下old-not-sent-mail/中)。

2011-11-07 工作志

xiaq

  • 修改了 phpLDAPadmin 的配置,现在可以直接用用户的 uid 登录了,而不需要打完整的 DN;完整的 DN 登录仍然被接受。比如原来必须用 uid=xiaq,ou=people,o=tuna 登录,现在也可以用 xiaq 直接登录。

  • 域名 ftp.tuna.tsinghua.edu.cn 现在指向 alef,同时提供 http 服务ftp 服务。根目录是 alef:/srv/ftp。在根下面有一个 pub 目录,是所有人可写的。因为 alef 是允许所有拥有 TUNA 帐号的人登录的,所以 alef:/srv/ftp/pub (http://ftp.tuna.tsinghua.edu.cn/pub) 也就是所有人可写的。

heroxbd

  • 使用 gentoo prefix 中的 nginx 替代了 /usr/local 中的 nginx,ftp3 80 端口可通过 ipv6 访问了。 closing issue126

2011-11-06 工作志

heroxbd

2011-11-04 工作志

heroxbd

开始在 thirty 上进行工作

  • 在 soso, storm 与 thirsty 上 etckeeper
  • 改掉了 thirsty 上的 snsreal , 去掉了 soso reverse proxy 上指向 /sns/ 的路径
  • 使用 ftp4 成为 thirsty 的 smarthost
  • 在 ftp4 上布署 gentoo-portage-prefix

2011-10-30 工作志

xiaq

2011-10-29 工作志

xiaq

  • 给 166.111.111.78——一台 Windows 服务器配置了 DNS search domain。并且补充了 ShortDomainHowto

2011-10-28 工作志

alick

  • 应用了 yuexin 对 sync.sh 和 crontab 的修改,改动了 ftp3 上 status.txt 的更新策略。帮忙将这些改动提交到了 git repo。
  • 在 ftp3 的 /home/ftpadm 中真正启用了 POSIX ACL 群组权限管理,去除了 git 自动checkout时的sudo chown 操作。

2011-10-27 工作志

yuexin

  • 对qemu-kvm页做了一些补充

2011-10-26 工作志

xiaq

  • 把 moinmoin wiki (就是本站~) 的语言设成了 zh-cn

alick

  • ftp3 开启 /home 上的 ACL:tune2fs -o acl XXX; mount -o remount,acl /home

xiaq/ wiki lang -> zh-cn

原来 moinmoin 的语言是设置为 zh。Firefox 不认语言码 zh,这样会导致字体渲染异常(在我的 Firefox 上是这样……)所以做了一个 hack,把语言码改成了 zh-cn。改动就是 wikiconfig.py 里面的一句 language_default = 'zh' 中的 zh 改成了 zh-cn

这样改动之后,重启 Apache,访问 wiki 有错。查日志后发现错误来自 /usr/local/lib/python2.6/dist-packages/MoinMoin/i18n/__init__.py。简单阅读源码后,确认是此目录下没有 zh-cn.MoinMoin.po 导致。把原来的 zh.MoinMoin.po 符号链接为 zh-cn.MoinMoin.po。hack 完毕。实际上 zh.MoinMoin.po 中的 zh 就应该是 zh-cn(繁体的本地化资源在另一个文件 zh-tw.MoinMoin.po 中),这是 moin 的 bug。

2011-10-25 工作志

alick

  • ftp3.git 添加 post-receive 的 hook,调整权限设置(git 可以 checkout 仓库中文件到 /home/ftpadm,且恢复 checkout 出的文件的属主为 ftpadm:ftp)。这样就自动检出新版本脚本文件到合适目录,无需手动 SSH 登录上去再 pull 仓库中的新版本。/home/ftpadm 下也无 .git/ 的必要。

2011-10-22 工作志

xiaq

  • 把 minor-vpn 的 RAM 配置缩减至 256 MB。

2011-10-21 工作志

huiyiqun

  • 在lux-003上安装了一个nginx,用proxy_pass的方法把指向contacts.tuna.tsinghua.edu.cn的请求传给nox-003的80端口
  • 删除了原先的端口映射 lux-003:80 => nox-003:80

  • 修改了原先的端口映射 lux-003:222 => nox-003:22 为 lux-003:10022 => nox-003:22

alick

  • ftp3 上 etckeeper。
    • 版本为 SHA1值 09e7c045049328cebde375e28ed3ad315c364a90。这个版本使用 find 的 -path 参数而非 -wholename,更 portable(事实上这是我们的 CentOS 需要的)

    • 安装步骤:
      1. 编辑 etckeeper.conf(apt-->yum, dpkg-->rpm)

      2. make prefix=/usr/local install

      3. 手动 install README, TODO, GPL 到 /usr/local/share/doc/etckeeper-09e7c04 :(

    • README 是使用必读文档 {*}

huiyiqun/ 端口号待定

肖骐认为10000以内的端口号是不安全的,暂时lux-003上的端口映射都以lux-003:(10000+$original_port_number)=> nox-003:($original_port_number) 的形式映射,直到有人有更好的方案

2011-10-20 工作志

alick

  • 搞定 git 用户公钥登录 ftp3。要能正常地公钥登录,/home/git 需要比较严格的权限,对于非属主来说不能是可写的,所以最宽松的权限是 755,这里最终设成了 750(5是为了让 ftpadm 可以 pull)。参考这里

  • 应该可以 git 维护 ftp3 上脚本了。详细步骤见 MirrorMaintainance。配置情况参考 progit

heroxbd

  • [manifold vpn only] 在 soso 上面对 manifold 开启了一个新的 squid3,现在的网络太差,从前的 earth 给不上力了。

2011-10-19 工作志

byvoid

  • 將mirrors.tuna.tsinghua.edu.cn上的Apache卸載,PHP由nginx通過php-cgi方式解析。

huiyiqun

  • contagged已经可以从ldap中读取信息,但是还有一些小细节需要修改。

xiaq

  • contacts.tuna 域名现在指向 lux-003 (ConTagged 所在 IP)。

yue xin

  • 在 ftp3 上手动安装了 xfs mod 的 rpm 包

scateu

  • 给若干机器安装了snmpd
  • 搭建snmp.tuna.tsinghua.edu.cn 的zenoss
  • xiaq你为啥把我的major权限给取消了

alick

  • ftp3 上编译安装 git 1.7.7 (git-core) 到 /usr/local 下,另 git-manpages 直接用 tar 解压缩到 /usr/local/man 目录中即安装。
  • ftp3 上编译安装 cvsps 2.1,为了导出 CVS 历史为 patch sets,配合 git cvsimport
  • git cvsimport 将 ftp3 同步脚本CVS历史导出到git仓库,提交最新版本脚本
  • ftp3 新建 git 帐号,做 bare repo。将 ftpadm 加入 git 群组,push 仓库内容到 bare repo (push仅此一次,以后都只需 pull)。
  • 配置 git 帐号 SSH 公钥登录未果,留待第二天解决……

2011-10-18 工作志

huiyiqun

  • 在nox-003上搭建了一个contagged,不过还没有和肖骐的ldap数据库连接上
  • 学习ldap中

nox-003网络环境

nox-003是一台以xen方式运行在lux-003(202.112.3.93)上的虚拟机,以nat的SNAT方式配置网络,在虚拟网络中nox-003的ip地址为10.0.0.3,用DNAT方式做了端口映射,nox-003的80端口被映射到了lux-003的80端口(http默认端口),nox-003的22端口被映射到了lux-003的222端口(ssh端口)。

nox-003 php服务

nox-003上的php服务是用nginx+fastcgi+php5做的

2011-10-12 工作志

heroxbd

2011-10-11 工作志

xiaq

alick

修正 ftp3 的 NTP 服务。 之前,在 ftp3 上使用 ntpstat 查询 NTP 状态时,总是报 timeout,返回值 $? 为2。 ntp.conf 里配置的 server 们都很古老了,例如 s1a.time.edu.cn 是一个 2.4.18 内核的 Linux。 (通过 ntpq -n -c rv s2a.time.edu.cn 查询得知)

经过排查,问题根源在于配置中 restrict 过于严格。 restrict default ignore 会阻止所有 unauthorized hosts 的连接,包括指定的 server 的连接。 所以要正常工作,需要给同步的ntp服务器添加例外。对每一个 server a.b.c.d 都要有相应的 restrict a.b.c.d 且注意:server 行可以指定主机名或IP地址,restrict 行只能指定 IP地址。 另外还可以指定 restrict 127.0.0.1 使得本机上通过 ntpdc 调整 ntp 配置不受限制。 参考这里 http://support.ntp.org/bin/view/Support/AccessRestrictions

最后,我修改了 ntp.conf,使用 cn.pool.ntp.org 和 2.cn.pool.ntp.org 做 server,使用 dig 查询它们的 IP 地址放开其限制。另外,放开了本机上的限制。 重启服务后,ntpstat 等命令正常,过一会儿显示 synchronised to NTP server。

2011-10-08 工作志

xiaq

location /robots.txt {
     root /srv/roundup/misc/;
}  

2011-09-29 工作志

xiaq

  • issues 多处改进。(commit 55e004d8b545abd65aa4bd7a9bbcbe77ddf897cf)
    • 引入“部门”的概念
    • 添加“抄送我的”
  • 去网络中心联系老师,修改了 dns.tuna.tsinghua.edu.cn 的指向(166.111.111.118 -> 202.112.3.241)

  • 修订 LDAP 中的主机信息:删除了若干已经不存在的虚拟机。

2011-09-27 工作志

xiaq

  • major 重装,Xen 配置、OpenVPN 配置。在 xiaq/MajorConf 上列出了一些用于给我自己备忘的命令;我有时间的时候再展开写。

2011-09-19 工作志

heroxbd

  • purge bind9 @soso

xiaq

  • ftp4 的网线被插反了。。前往 312 机房修复之。

2011-09-17 工作志

xiaq

xiaq/ pdns-ldap on major

原先在 major 上的 BIND9 是权威 + 递归 DNS。PowerDNS 的权威服务器和递归服务器是分开的;权威服务器叫做 pdns,递归服务器叫做 pdns-recursor

pdns 开在 530 端口上;BIND9 将 tuna.tsinghua.edu.cn. 子域的请求转发给 127.0.0.1:530。目前 pdns 监听所有 iface 的 530 端口。实际上只需要监听 127.0.0.1;当前的配置是为了方便调试,稳定之后将会只监听 127.0.0.1:530。

BIND9 原有的权威服务器配置保存为 /etc/bind/named.conf.local.authoritative;新的转发配置是上述目录中的 named.conf.local.fwdpdns,现在的 named.conf.local 是指向它的一个符号链接。pdns 的配置是 /etc/powerdns/pdns.conf

2011-09-16 工作志

heroxbd

2011-09-11 工作志

xiaq

  • issues.tuna 侧边栏添加一下链接:Show Resolved (所有已解决的) Issues Created by You (我创建的) Issues Resolved by You (我解决的) 其中最后一项为由我负责且状态为已解决的。原 You Issues 改名为 Issues Assigned to You。
    • 同时更新 po 文件。

2011-09-08 工作志

michael

michael/ 在 ftp4 上添加 ubuntu-releases

  • 新增 /home/ftp/etc/ubuntu-releases.conf 。 rsync 自 http://mirror6.bjtu.edu.cn/ubuntu-releases (IPv6)

  • crontab 中设置每天 4:30 进行同步。
  • 修改 /var/www/mirror/index.php 添加 ubuntu-releases 对应信息。

2011-09-01 工作志

heroxbd

  • 在 mirror 上加入 HTTP 统计

  • 在 mirror 上引入 robots.txt。我们的大部分访问来自各公司的 spider。对于镜像,除了首页之外,其它的内容对搜索引擎是没有意义的。

2011-08-31 工作志

gy 参与镜像维护。

heroxbd

  • acg服务器DNS acg.tuna.tsinghua.edu.cn A 166.111.111.75
  • acg apt use mirror.tuna.tsinghua.edu.cn

xiaq

处理(敏感词)的界面优化需求,在过程中熟悉了 Roundup 采用的 HTML 模板语言 TAL (Template_Attribute_Language) 以及 Roundup 数据库的基本结构。参见 Roundup 官方文档相关章节

清理了 issues.tuna 的网页模板,完善中文翻译。具体情况从略。

2011-08-30 工作志

xiaq

肖骐 周越 郭家寶 小聚会纪要

于 2012-02-06 存档自 issue74。

1. 招新。电脑协会在各协会公开招新的时间段摆摊公开招新,招新过程中对技术较好的, 吸收入网管会。网管会只贴海报招新,贴海报的目的是招到觉得“电脑协会”名字不靠谱的、 或是比较懒的技术宅;其他类型的人可以通过前述电脑协会的招新吸收。 1.1 招新重点之一是招到类似于康哥的人,负责借教室什么的……

2. 排班。即在 307 值班和修电脑任务的排班。可以开出一定报酬。 2.1 307 值班。要求值班人员写工作日志。前几周的值班,保证我们三个中有一个在场。 2.2 修电脑任务。预计电脑协会招新过程中会招到以修电脑为乐的人,可以把修电脑任务都 派给他们。

3. 无线网。先分两条线——邮件列表通告和线下单独联系,招到感兴趣的人员;首先自己尝 试搭建一些 AP (自己从头搭感觉比较爽),有一部分人对技术熟悉之后可以去检修已有的 AP、或者带其他人。

4. 美工。现在 TUNA 需要一个 logo,byvoid 的提议是用一个鱼 (tuna=金枪鱼),简单的 矢量图就行。不过以后长期的发展就需要美工人员。

5. Ubuntu 11.10 发布会。除了会场问题,没有大的障碍。

2011-08-27 工作志

heroxbd

  • dns2 slave mode
  • dropbear on major

heroxbd/dns2 slave mode

  • 在 major 上开启了 bind9 给 dns2(alef) 的 zone transfer 权限
  • pdns 的 sqlite3 backend 支持 supermaster 中有 bug ,pdns 上的人们建议使用 opendbx 但是 archlinux 的 pdns 包没有提供 opendbx ,因此最后我临时恢复了 dns2 上的 mysqld。当然如果不用 supermaster 的话,还是可以使用 sqlite 为后端的。
  • pdns 的配置在 dns2:/etc/powerdns/pdns.conf ,主要修改为里面的 launch 项用于调用数据库,以及 slave=yes
  • 在 mysql 中建立一个名为 dnsTuna 的 database
    # mysql -p -u root
    mysql> create database dnsTuna;
    mysql> use dnsTuna;

    然后把下面的 sql 命令贴过来,源自 powerDNS 的文档

    create table domains (
     id              INT auto_increment,
     name            VARCHAR(255) NOT NULL,
     master          VARCHAR(128) DEFAULT NULL,
     last_check      INT DEFAULT NULL,
     type            VARCHAR(6) NOT NULL,
     notified_serial INT DEFAULT NULL, 
     account         VARCHAR(40) DEFAULT NULL,
     primary key (id)
    ) Engine=InnoDB;
    
    CREATE UNIQUE INDEX name_index ON domains(name);
    
    CREATE TABLE records (
      id              INT auto_increment,
      domain_id       INT DEFAULT NULL,
      name            VARCHAR(255) DEFAULT NULL,
      type            VARCHAR(10) DEFAULT NULL,
      content         VARCHAR(255) DEFAULT NULL,
      ttl             INT DEFAULT NULL,
      prio            INT DEFAULT NULL,
      change_date     INT DEFAULT NULL,
      primary key(id)
    ) Engine=InnoDB;
    
    CREATE INDEX rec_name_index ON records(name);
    CREATE INDEX nametype_index ON records(name,type);
    CREATE INDEX domain_id ON records(domain_id);
    
    create table supermasters (
      ip VARCHAR(25) NOT NULL, 
      nameserver VARCHAR(255) NOT NULL, 
      account VARCHAR(40) DEFAULT NULL
    ) Engine=InnoDB;
    
    GRANT SELECT ON supermasters TO pdns;
    GRANT ALL ON domains TO pdns;
    GRANT ALL ON records TO pdns;
    把 dns(major) 加为自己的 supermaster:
    insert into supermasters values  ('166.111.111.118','dns.tuna.tsinghua.edu.cn',NULL);
    剩下的都是 powerdns 自动完成,把自己的 slave 身份加入 domains 表,再向主 DNS 请求 zone transfer 等一会可以从 /var/log/daemon.log 看到 pdns 的 log
    Aug 27 00:56:56 alef pdns[1795]: Initiating transfer of 'tuna.tsinghua.edu.cn' from remote '166.111.111.118'
    Aug 27 00:56:56 alef pdns[1795]: AXFR started for 'tuna.tsinghua.edu.cn', transaction started
    Aug 27 00:56:56 alef pdns[1795]: AXFR done for 'tuna.tsinghua.edu.cn', zone committed
    看看,好使啦
    $ dig issues.tuna.tsinghua.edu.cn @202.112.3.240
    
    ; <<>> DiG 9.6.1-P3 <<>> issues.tuna.tsinghua.edu.cn @202.112.3.240
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24591
    ;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
    ;; WARNING: recursion requested but not available
    
    ;; QUESTION SECTION:
    ;issues.tuna.tsinghua.edu.cn.   IN      A
    
    ;; ANSWER SECTION:
    issues.tuna.tsinghua.edu.cn. 120 IN     CNAME   alef.tuna.tsinghua.edu.cn.
    alef.tuna.tsinghua.edu.cn. 120  IN      A       59.66.66.242
    
    ;; Query time: 105 msec
    ;; SERVER: 202.112.3.240#53(202.112.3.240)
    ;; WHEN: Sat Aug 27 11:22:13 2011
    ;; MSG SIZE  rcvd: 80
    从日本 dig 一下
    $ dig issues.tuna.tsinghua.edu.cn
    
    ; <<>> DiG 9.6.1-P3 <<>> issues.tuna.tsinghua.edu.cn
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57605
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
    
    ;; QUESTION SECTION:
    ;issues.tuna.tsinghua.edu.cn.   IN      A
    
    ;; ANSWER SECTION:
    issues.tuna.tsinghua.edu.cn. 120 IN     CNAME   alef.tuna.tsinghua.edu.cn.
    alef.tuna.tsinghua.edu.cn. 120  IN      A       59.66.66.242
    
    ;; Query time: 233 msec
    ;; SERVER: 10.16.8.1#53(10.16.8.1)
    ;; WHEN: Sat Aug 27 11:22:33 2011
    ;; MSG SIZE  rcvd: 80
  • AXFR 及 IXFR 是现在 zone transfer 的方式,debug 的时候可以用 dig 验证权限,比如在 dns2 上
    # dig AXFR tuna.tsinghua.edu.cn @166.111.111.118
    
    ; <<>> DiG 9.8.0-P4 <<>> AXFR tuna.tsinghua.edu.cn @166.111.111.118
    ;; global options: +cmd
    tuna.tsinghua.edu.cn.   120     IN      SOA     dns.tuna.tsinghua.edu.cn. dns.tuna.tsinghua.edu.cn. 2011082501 28800 3600 604800 38400
    tuna.tsinghua.edu.cn.   120     IN      A       166.111.111.118
    tuna.tsinghua.edu.cn.   120     IN      NS      dns.tuna.tsinghua.edu.cn.
    tuna.tsinghua.edu.cn.   120     IN      NS      dns2.tuna.tsinghua.edu.cn.
    tuna.tsinghua.edu.cn.   120     IN      MX      10 mta.tuna.tsinghua.edu.cn.
    alef.tuna.tsinghua.edu.cn. 120  IN      A       59.66.66.242
    bugs.tuna.tsinghua.edu.cn. 120  IN      CNAME   alef.tuna.tsinghua.edu.cn.
    dns.tuna.tsinghua.edu.cn. 120   IN      A       166.111.111.118
    dns2.tuna.tsinghua.edu.cn. 120  IN      A       202.112.3.240
    files.tuna.tsinghua.edu.cn. 120 IN      CNAME   major.tuna.tsinghua.edu.cn.
    ftp4.tuna.tsinghua.edu.cn. 120  IN      A       166.111.111.74
    ftp46.tuna.tsinghua.edu.cn. 120 IN      AAAA    2402:f000:1:8a1:2e0:81ff:febc:5016
    irc.tuna.tsinghua.edu.cn. 120   IN      CNAME   alef.tuna.tsinghua.edu.cn.
    issues.tuna.tsinghua.edu.cn. 120 IN     CNAME   alef.tuna.tsinghua.edu.cn.
    ldap.tuna.tsinghua.edu.cn. 120  IN      CNAME   major.tuna.tsinghua.edu.cn.
    major.tuna.tsinghua.edu.cn. 120 IN      A       166.111.111.118
    mirror.tuna.tsinghua.edu.cn. 120 IN     CNAME   ftp4.tuna.tsinghua.edu.cn.
    mirror6.tuna.tsinghua.edu.cn. 120 IN    CNAME   ftp46.tuna.tsinghua.edu.cn.
    mirrors.tuna.tsinghua.edu.cn. 120 IN    CNAME   ftp4.tuna.tsinghua.edu.cn.
    mirrors6.tuna.tsinghua.edu.cn. 120 IN   CNAME   ftp46.tuna.tsinghua.edu.cn.
    mta.tuna.tsinghua.edu.cn. 120   IN      A       166.111.111.74
    scateu.tuna.tsinghua.edu.cn. 120 IN     CNAME   major.tuna.tsinghua.edu.cn.
    wiki.tuna.tsinghua.edu.cn. 120  IN      CNAME   major.tuna.tsinghua.edu.cn.
    www.tuna.tsinghua.edu.cn. 120   IN      CNAME   major.tuna.tsinghua.edu.cn.
    tuna.tsinghua.edu.cn.   120     IN      SOA     dns.tuna.tsinghua.edu.cn. dns.tuna.tsinghua.edu.cn. 2011082501 28800 3600 604800 38400
    ;; Query time: 4 msec
    ;; SERVER: 166.111.111.118#53(166.111.111.118)
    ;; WHEN: Sat Aug 27 10:29:33 2011
    ;; XFR size: 25 records (messages 1, bytes 572)
  • 剩下的问题是,dns2 上的 view 还没有实现。powerdns 不支持 view,需要自己写脚本搞定。

heorxbd/dropbear on major

listening at port 8022, LDAP not included.

xiaq/ 处理 major 宕机

我来到中央主楼 206 机房,找到了 major。接上键盘,键盘的三个灯亮了一下旋即熄灭;此后按 Caps Lock 等键,键盘均无响应;换键盘亦如此,可知 major 此次宕得不轻。接上显示器,屏幕显示如图下所示,也不知是遭受了什么劫难,全都是

BUG: soft lockup - CPU#0 stuck for 61s! [netstat:3712]

,似乎和 netstat 有着莫大的干系。在按下机身的 reset 键之前,我特意拍下了此照片。

major 宕机之屏幕显示

重启之后,想到 major 上的硬件虚拟化或许尚未开启,我又进了 BIOS。不出所料,没有开启。我开启了硬件虚拟化,开启之后的照片如下。

major BIOS 之硬件虚拟化选项

启动过程一切顺利,我又看到了熟悉的主机名 major.tuna

major up

2011-08-12 工作志

xiaq

  • 配置新装 Debian squeeze 的 lux-002~004。memo 见下

xiaq/ 配置 lux-002~004

参见 WorkLog/2011-08-11

配置时区:

# dpkg-reconfigure tzdata

安装 nslcd

# aptitude install libnss-ldapd

安装完之后会有 dpkg 的配置对话框。前面的几项直接忽略(它们是配置 nslcd.conf 用的,下面反正要重新做。)有一步是配置 nsswitch.conf,选中 group hosts passwd shadow

TODO 以下部分还只是个人备忘录。

安装其它包:

aptitude install sudo zsh vim rsync git

nslcd.conf.sh(major:~xiaq/my/tuna/bin/nslcd.conf.sh) 脚本生成 nslcd.conf。把 major:~xiaq/my/tuna/etc/wheel 复制到 /etc/sudoers.d/

# ./nslcd.conf.sh > /etc/nslcd.conf
# cp ./wheel /etc/sudoers.d/

2011-08-11 工作志

xiaq

  • 把 nox-001 从 lux-004 迁移到了 lux-001。
  • 这两天纠结于 qemu-kvm,即将有成效了……
  • 同时纠结 Xen。发现了一个巨给力的网站 http://stacklet.com/ ,提供各种发行版的 prebuilt image。Xen 装系统从来都是老大难,现在好了~~还有 Gentoo wiki 的 这个页面上给出了几个工具。

    • 然后发现下载这里的镜像是要收费的…… T_T

michael

  • 把 lux-002, lux-003, lux-003 上的操作系统由 CentOS 更换为 Debian Squeeze,以方便部署 Xen。原硬盘上数据全部清空,配置详见下面 memo。

michael/ lux-002~004 服务器操作系统安装

任务:将 lux 002, lux-003, lux-004 三台服务器原硬盘内容清空,将原有 CentOS 操作系统更换为 Debian Squeeze。Debian 安装说明页面 提供各种语言版本的安装手册。

  • 安装镜像文件 debian-6.0.2.1-i386-netinst.iso 为 Hybrid ISO/IMG 格式,直接写入闪存盘,从闪存盘引导进入安装程序。
  • 使用默认的 Debian-Installer 安装程序,部分安装选项如下:
    • 地区、语言、键盘等设置一律选择“英语”“美国”,之后的时区设置中安装程序只列出美国时区,任选一个,安装完成后再做更改。
    • 网络手动配置,其中 lux-002 的配置如下,其他两台机器只有 IP 地址和 hostname 不同,参见 服务器列表

      IP address: 202.112.3.92
      Netmask: 255.255.255.0
      Gateway: 202.112.3.254
      Nameserver: 202.112.3.176
      Hostname: lux-002
  • 重建硬盘分区表,分区划分如下(以 lux-002 为例):
    PARTITION mount=/boot, size=200MB, fs=ext2, label=boot
    LVM VG lux-002 {
      LV lvname=root mount=/ size=15GB fs=ext4 label=root
      LV lvname=swap size=8GB fs=swap
      LV lvname=vm mount=/vm size=20GB fs=ext4 label=vm
    }
  • 软件源手动设置为 http://mirrors.tuna.tsinghua.edu.cn/

  • 选择了 SSH server 和 Standard system utilities 两个预定义软件组。

2011-08-08 工作志

xiaq

  • 在自己机器上配置 qemu-kvm,计划写一个 QemuKvmHowto。主要解决显示和网络的问题,以准备在服务器上部署。

2011-08-04 工作志

xiaq

  • 接续昨天issue61

  • 给 moin 添加了 @PAGETAIL@ 变量。

xiaq/ issue61 (续)

修改 /srv/roundup/html 下的 issue.index.htmlissue.search.html,依然是仿照 priority 字段添加 category 字段。此外修改了 page.htmlhome.html 中的默认 query 使其显示 category 字段。去除了上述文件尾部的 SHA 校验和(似乎没有什么后果)。

尚有待改进之处是,现在网页模板里面都是直接写的中文,而不是使用干净的 i18n 方式。Roundup 使用 TAL 网页模板,有时间再导出 pot 并翻译。

此外,Roundup 的 status 字段对新手可能需要解释,有时间在 issue.item.html 的 status 字段右侧加一个链接指向一个解释 status 各值的含义。

xiaq/ Hacking moin: 添加 @ PAGETAIL @ 变量

有关 Moin 的页面变量:HelpOnVariables

Moin 自带的@PAGE@ 有时不够用,所以添加了 @PAGETAIL@

@PAGETAIL@ 被替换成当前页面名的最后一部分(“部分”是以 / 分割的)。例如 @PAGE@ 替换成 WorkLog/2011-08-04@PAGETAIL@ 替换成 2011-08-04。这个页面变量现在用在 WorkLogTemplate 中。

TIMESTAMP 是一个页面变量的名字,而且似乎在其它场合出现的可能性不大。于是在 /srv/moin/package/PageEditor.py 在里面搜索 TIMESTAMP(这是一个页面变量名):

grep TIMESTAMP -R .

找到了文件 PageEditor.py。剩下的就很简单了。

2011-08-03 工作志

xiaq

  • 基本解决 issue61 。memo 见下。

xiaq/ issue61

摘自 issue61

……我拟定增加一个类别(type)字段,并修改原有优先级(priority)字段,改进后如下:

type: bug wish trash
priority: critical normal low

type 是必填字段,priority 则不是(这样就不需要 undetermined 了。)

因为 type 是 Python 内部函数名,所以实际使用的名字是 category

Roundup 能够正确地处理 schema 的变动。关掉 Roundup,修改 schema.py 仿照 priority 创建 category 的类和在 issue 类中的字段,再重启 Roundup。使用 roundup-admin 重新组织数据。

后端数据结构发生了变化,前段(网页模板)也要修改。我目前只修改了 issue.item.html 即查看单个 issue 的网页模板。还需要修改 issue.index.html——issue 列表页模板和 issue.search.html——issue 搜索页模板。

以上说的很简略,因为涉及到 Roundup 的设计的方面都被我一笔带过了。参见:

http://roundup.sourceforge.net/docs/customizing.html#tracker-schema

http://roundup.sourceforge.net/docs/user_guide.html#command-line-tool

http://roundup.sourceforge.net/docs/user_guide.html#web-interface

相关文件(均位于 alef:/srv/roundup):

* schema.py * html/issue.*.html

2011-08-02 工作志

xiaq

2011-07-29 工作志

xiaq

  • 把原来的 Bugzilla 上的开放的条目都迁移到 Roundup 上去了。

2011-07-27 工作志

heroxbd

  • 阻止中国境内的同学通过 muon 代理访问中国境内的网站

heroxbd/ 阻止中国境内的同学通过 muon 代理访问中国境内的网站

acl waste dstdomain .qq.com .126.com .renren.com .sohu.com .sougou.com .cn .baidu.com .163.com \                                                                                                        
                    .douban .youku.com .ykimg.com .mop.com .weibo.com .cctv.com .pptv.com
acl manifold src 192.168.0.0/16
http_access deny manifold waste
deny_info http://192.168.7.51/squid/denied.html waste

2011-07-26 工作志

xiaq

  • 使用 $INCLUDE 重新组织了 BIND 的 zone 文件。memo 见下

  • 申请了 Google Group <test_tuna AT WHATEVER googlegroups DOT DOTA com> https://groups.google.com/group/test_tuna ,当前用于测试 Roundup 和邮件列表(特别地,Google Group)的互操作性。

xiaq/ 使用 $INCLUDE 指令组织 BIND 的 zone 文件

参考 http://www.zytrax.com/books/dns/ch8/include.html ,语法是:

$INCLUDE <filename> [new-origin]

[new-origin] 用于给被包含的文件指定新的 $ORIGIN,下面没有用到。

我把用于校内解析的 tuna.tsinghua.edu.cn.db 和用于校外解析的 tuna.tsinghua.edu.cn-external.db 的公共部分抽取出来放在了 tuna.tsinghua.edu.cn-common.db 中,前面两个文件分别 $INCLUDE 它:

$INCLUDE tuna.tsinghua.edu.cn-common.db

然而重启 BIND 服务后在本机查询 tuna.tsinghua.edu.cn 始终是 SERVFAIL,只可能是 zone 文件有错,然而用 named-checkzone 检验 zone 文件提示没有错误。Google "bind include example",参照其他人的写法,试验多种写法后发现,采用绝对路径并加双引号是可以的:

$INCLUDE "/etc/bind/zones/tuna.tsinghua.edu.cn-common.db"

这个问题的原因尚不明确。

相关文件(均在 major 上):

  • /etc/bind/zones/tuna.tsinghua.edu.cn*.db

WorkLog/2011-07-25 工作志

xiaq

  • 写好了 IRC 日志机器人。alef:myrepo/bin/fido.py

  • IRC 搭建完毕。IRC 服务器是 alef,服务端软件使用 ngircd,web 界面使用 qwebirc(http://alef:9090),同时用 nginx 做 proxy_pass 把 irc.tuna.tsinghua.edu.cn 转发到 localhost:9090

  • 初步学习 DNS 反解相关知识。

2011-07-24 工作志

xiaq

  • 解决 LDAP 服务器证书问题——用 GnuTLS 建立了 PKI。https://ldap.tuna.tsinghua.edu.cn 使用新的证书。备忘录见下。

  • python-ldap 会读取 /etc/openldap (Arch) 或者 /etc/ldap (Debian) 下的配置,如 CA 证书路径。

xiaq/ LDAP 服务器证书问题

LDAP 服务器 major 以前使用的是自签名的证书(参见 WorkLog/2011-07-17WorkLog/2011-07-20),然而大多数 LDAP 客户端如 python-ldap、OpenLDAP 的 ldap-utils 默认是拒绝自签名证书的。因此生成一个 PKI 是更方便的解决方案。

Linux 世界广泛使用的 TLS 库有 OpenSSL 和 GnuTLS 两种。我尝试参照 OpenVPN 的 PKI 教程 生成 PKI,然后按 OpenLDAP 文档的相关部分 配置 OpenLDAP,然而尝试运行 slapd 时却一直报告以下错误

main: TLS init def ctx failed: -207

OpenLDAP 邮件列表的这个线索明确地指出这是因为 GnuTLS 采用的证书格式和 OpenSSL 不兼容。这封回信指出可以用 GnuTLS 的 certtool 重新生成证书,或者把原有的 OpenSSL 证书转成 GnuTLS 兼容的格式。我采取了前一种方法,按照 Ubuntu Forums 中的这个详细的 howto 重新生成了 PKI。

相关文件(均在 major 上):

  • /etc/ldap/slapd.conf

  • /etc/ldap/keys/*

小插曲

  • 形如上面的
    main: TLS init def ctx failed: -207
    这样的错误信息是由 GnuTLS 产生的。-207 是 GnuTLS 内部使用的错误号码。
  • 证书的 CN 字段很重要,必须和服务器的 FQDN 相匹配。客户端在连接的时候也必须使用该域名连接。如 ldap.tuna.tsinghua.edu.cn 的证书的 CN 字段填写的是 ldap.tuna.tsinghua.edu.cn,则 LDAP 客户端在连接时也必须使用该域名。如果使用其它域名或者 IP 地址将导致证书验证失败。不过一般来说都可以禁用严格的证书验证。

2011-07-23 工作志

xiaq

  • 依照 byvoid 的 Google Doc 服務器資源統計 在 LDAP 数据库中给几台主机添加了 IPv6 地址。

  • 研究了半天 IRC bot 的解决方案。已有的框架如 Schongo、Eggdrop、Yauib 都过于强大了,我需要的只是一个记录日志的机器人……决定参照 logbot.py 实现一个,明天上线。

  • WorkLog/2011-07-22 里提到的 .tk 的 DNS 问题的原因似乎是 dot.tk 域的权威 DNS ns01.dot.tk ~ ns04.dot.tk 和 202.112.3.0/24 网段之间不通。

2011-07-22 工作志

xiaq

  • alef 上使用 ngircd 搭建了 IRC 服务器。修改 ngircd 提供的配置文件模板即可。配置文件是 /etc/ngircd.conf,进站通告是 /etc/ngircd.motd

  • 使用 qwebirc 搭建了 web 前端。qwebirc 就是一个 IRC 客户端,和 IRC 服务端没有耦合。参照官方 FAQ http://qwebirc.org/faq ,修改 config.py 即可。暂时放置在 ~xiaq/src/qwebirc-qwebirc-f62bc5faa983 下面,开在 :9090 端口,然后使用 nginx 的 proxy_passhttp://irc.tuna.tsinghua.edu.cn 上映射过去。参看 /etc/nginx/conf/sites/irc

  • 因为 dns.tuna.tsinghua.edu.cn 只设置了 166.111.111.118 一个 IP,很多地方访问不到。申请了 tuna-sucks.tk 和 tuna-rocks.tk 两个免费 TK 顶级域名,想要把 tuna-rocks.tk 子域也托管给 TUNA 的 DNS 服务器 major,这样就可以通过 http://wiki.tuna-rocks.tk/ 访问本站。

    • 尚未成功,所以在 tuna-sucks.tk 上临时配置了几个 A 记录。当前的配置是:

      tuna-sucks.tk

      tuna-sucks.tk.png

      tuna-rocks.tk

      tuna-rocks.tk.png

      nslookup wiki.tuna-rocks.tk 报告 SERVFAIL。有待调查。

  • 给很多页面加了 Category

2011-07-21 工作志

byvoid

  • 關閉了 mirrors.tuna.tsinghua.edu.cn 的FTP服務。

2011-07-20 工作志

xiaq

  • 再次尝试重新组织工作志的结构。原来的尝试是想把所有备忘录在一个页面上呈现出来,但是不必要地复杂化了页面结构。以后的做法是

    • 工作志的备忘录部分前面放置一行注释 ##memo

    • 使用 Moin 的 include 宏的 start 参数即可抓取备忘录。

    • 这样做的问题是,某条工作志没有备忘录的话会在 Memo 里面有一个空页面,这个暂时忽略啦

  • alef 上搭建备份 LDAP 服务器,支持查询。

    • Archlinux 源中的 OpenLDAP (slapd) 居然不支持 overlay;加之 Arch 做服务器各种不爽,于是折腾了一个 debootstrap,在其中再跑了一个 slapd。备忘录见下。
    • alef 上配备了 LVM。用 LVM 新划出一个逻辑卷(logical volume) 挂载到 /deb 用于跑 Debian。

    • 备份服务器使用与主服务器 (major) 相同的证书(目前暂时是自签名证书)和相同的 ACL。暂时不知道在备份服务器上写入数据会发生什么,但是这种做法在目前的主-从模型下是没有意义的。

xiaq/ debootstrap on alef

debootstrap 是一套用于建立 Debian 的 chroot 环境的一套脚本。Archlinux 的 AUR 里面可以直接下载到:

yaourt -S debootstrap

Debian 系统的建立非常简单

# cd /deb
# debootstrap --arch amd64 sid . http://mirrors.tuna.tsinghua.edu.cn/debian/

进入这一 chroot 环境的方法是(脚本 alef:~xiaq/myrepo/godeb

cd /deb
for mp in /dev /dev/pts /dev/shm /proc /sys /home /media; do
    mount -B $mp ./$mp
done
chroot . /bin/zsh

2011-07-17 工作志

xiaq

  • LDAP 的备份服务。alef 上配置了冗余,但是没有对外服务。开启 alef 上的对外服务,LDAP 的 ACL 也一并配好。

    • 因为想要完全解决证书的问题,暂时没有做完。
  • LDAP 的 TLS 证书由自签名证书改成土制 CA 签名。自签名的证书问题多多。期间学习 openssl 命令的使用,memo 见下。

    • 暂未做完。
  • 重新工作志的结构。每天的 memo 单独放到一个页面中,如 WorkLog/2011-07-17/Memo,然后 WorkLog/2011-07-17 include 它。这样做的好处是可以把所有的 memo 放到某一个地方集中呈现出来。

  • major 上 squid 的相关路由配置。memo 见下。

xiaq/ openssl x509 子命令

证书文件直接打开看只能看到一堆乱七八糟的字符,但是实际上里面是编码了证书的签发单位、加密算法、有效期限等信息的。

使用 openssl x509 -text -in /path/to/certificate 查看证书的信息。X509 貌似是某个密码学技术标准的名字。

xiaq/ major 上 squid 相关路由

写得很简略了。

iptables 给 squid 发出的包加上一个 fwmark。fwmark 是 Linux 处理数据包时使用的一个标志变量。匹配包的方法是匹配进程的 uid。

iptables -t mangle -I OUTPUT -m owner --uid-owner proxy -j MARK --set-mark 0xaa

0xaa 这个值是随便选的,只要和下面 ip rule 的对应就行。用 ip rule 为带有这个标志的包选择路由表:

ip rule add 9994 from all fwmark 0xaa lookup vpn

相关文件是 ~vpn/route/01-iptables.sh~vpn/route/02-ip_rule.sh

2011-07-15 工作志

xiaq

  • 写 Roundup 的 LDAP 登录扩展。
    • Roundup 配好啦~~~~~啦啦啦啦~~~~
    • 开始在 TUNA 内部测试~~~~
  • 在 ftp3 上部署 nslcd。
    • 使用 LDAP 验证,发现除了我自己之外谁都无法登录……最后发现是坑爹的 /etc/ssh/sshd_config 里面指定了 AllowUsers……

  • 在生物系新馆装了一台新机器 bio

2011-07-12 工作志

xiaq

  • alef 上深入学习 PAM。在 /etc/pam.d 下有 useradd 这类文件让我觉得有些困惑。结论是 PAM 是不提供修改用户记录的服务的(修改用户密码是个例外),这些文件只用于调用这些命令时的身份验证。

    • NOTE: 不过我还是不知道 useradd 这类命令的身份验证的规则是什么。root 运行它们是不要密码的,其它用户应该输入什么密码不明确:root 密码是不行的,自己的密码也不行。

    • chsh 的行为则非常有意思。在 /etc/pam.d/chsh 中加入 LDAP 配置之后,它接受 LDAP 密码,但是不能修改 LDAP 中的 loginShell 属性,而是修改了 /etc/passwd 中的对应字段。

  • 在学习 PAM 时因为监视 /var/log/auth.log 发现了一件很刺激的事情。日志显示 209.159.133.7 反复尝试登陆 ssh,换用各种登录名,先是一直用 root(估计在不断换密码)而后改用 newroom, magazine, research, export, sarah, isabella, girl 等等等等。初步推测是一起字典攻击。虽然 alef 的安全措施没有问题,我还是尝试封禁这个 IP。iptables 暂时不会,我用了最土的方法:

    # ip route add blackhole 209.159.133.7
  • 重启 alef 开启 BIOS 中的硬件虚拟化,测试新内核和新配好的 ifplugd + netcfg。

    • ifplugd 可耻地失败了。有时间折腾的时候再试。
  • 申请了邮箱 <wiki.tuna AT WTFSPAMFREE gmail WTFWTF DOT WTF com>

列出的 TODO

  • moin 的冗余。
  • 备份 LDAP 服务器 alef 的服务接口。当前只有备份,没有服务。
  • 还有一周就要回家了,而现在 major 的 202 网段路由有问题,需要解决。顺便在上面再架一个 OpenVPN。

2011-07-11 工作志

xiaq

alef 上的 Roundup 配置基本完成,域名是 issues.tuna。

  • 使用 AUR 中的包安装,修改 PKGBUILD 以使用最新的版本 1.4.18。

  • 运行时:Roundup 自带的服务器 + nginx proxy_pass。
  • 使用 Gmail 的邮件服务,邮箱是 <issues.tuna AT WTFSPAMFREE gmail WTFWTF DOT WTF com>。SMTP 发信,IMAP 收信。

TODO(按优先级排序):

  1. LDAP 认证。
  2. nginx mod_wsgi。
  3. IMAP 收信目前是用 cron 每分钟检查一次,所以有讨厌的延时。roundup-mailgw 原生不支持 IMAP 的持久模式,但是是可扩展的(支持从管道收信)。计划改成 IMAP 持久模式客户端 + 管道 + roundup-mailgw。

2011-07-10 工作志

xiaq/ Hacking phpLDAPadmin

把 phpLDAPadmin(PLA) 的默认编辑模板中的 labeledURI 字段的编辑区域改成了多行的 textarea

/srv/phpldapadmin (我安装 PLA 的位置) grep textarea -r .,注意到了如下一行:

./lib/config_default.php:                * A multi-line textarea will be drawn instead of a single-line text field

修改这个文件即可。注释是自明的。有图有真相:

Before

After

labeledURI_before.png

labeledURI_after.png

2011-07-09 工作志

xiaq

  • alef 上配置 Roundup 无果。向 scateu 索要到了 thucld 的权限,在上面配了 nslcd,以后可能在它上面做。

WorkLog/2011-07-07 工作志

xiaq

  • LDAP 冗余 done. 现在 alef 是从服务器。还有我的本本也是 ;)

2011-07-06 工作志

xiaq

  • 大致看了下 moin 的扩展机制,非常简单明了。
  • 苦学 OpenLDAP 之冗余/备份技术……
  • lux-001 上装了一台虚拟机 nox-003

2011-07-05 工作志

xiaq

物理系精密实验室无法访问图书馆、清华邮箱系统

参与人: cuckoo 记录人:cuckoo

问题简述:由于内部全部采用同一校园IP访问校内资源,导致校内各服务自动封锁该IP

解决方法:增加另一网卡连接校园网,通过该网卡连接校内资源

网络环境: 一个出国包月账号登记IP:166.111.185.11,物理系这边比较坑人的是内网采用166.111.185.0/128网段,采用166.111.185.9作为网关

eth0: 166.111.185.11 静态IP,包月账号,连接出校和出国

eth1: 坑人的166.111.185.9内网

eth2: 166.111.185.32(dhcp)新增专用于链接校内资源

路由设置

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.7.0.2        0.0.0.0         255.255.255.255 UH    0      0        0 tun0
166.111.185.0   0.0.0.0         255.255.255.0   U     0      0        0 eth1
10.7.0.0        10.7.0.2        255.255.255.0   UG    0      0        0 tun0
166.111.0.0     166.111.185.1   255.255.0.0     UG    0      0        0 eth2
59.66.0.0       166.111.185.1   255.255.0.0     UG    0      0        0 eth2
0.0.0.0         166.111.185.1   0.0.0.0         UG    0      0        0 eth0

2011-07-04 工作志

xiaq

  • heroxbd 讨论之后,决定搭建一个 Debian Bug Tracking System。挨个打电话,终于找到了 introom 同时具有能力和兴趣!表扬一下自己~~

    • DBTS 居然不支持 LDAP 验证。发现了一个非常给力的 BTS Roundup。改用它了。

    • 参与人换成了 cyrilfeng

  • LDAP 客户端的 TLS 配置。memo 见下。

xiaq/ LDAP 客户端 TLS 配置

目前的 LDAP 客户端均是使用 nss-pam-ldapd,它的守护进程叫做 nslcd/etc/ldap/ldap.conf(在 Arch 下是 /etc/openldap/ldap.conf) 这个文件可以暂时忽略。这是 ldap-utils 即 ldapsearchldapadd 这一套工具的客户端配置,而我们把 nslcd 配好就行。在 /etc/nslcd.conf 里面取消这两句的注释就行:

# Use StartTLS without verifying the server certificate.
ssl start_tls
tls_reqcert never

cuckoo/ 教育基金会采用openwrt路由器替代原有台式机

1. 利用路由器替代原有台式机

2.改用专线接入替代原有ADSL拨号

OpenWrt/OpenWrt Vlan 配置

2011-07-03 工作志

heroxbd

xiaq

  • phpLDAPadmin 已经改用 https,用 mod_gnutls 实现。memo 见下。目前使用土制的证书。TODO: 使用 CA 证书。
  • 改了一下 wiki 的 CSS……主要是调整 headline 的风格。
    • 又改了一下……
  • 把 wiki 中我的文章的 headline 都加深了一层,并且加入了 #pragma section-numbers 2。大多数一般只有一个 h1(= Page Title =),这样方便 include。moin 暂不提供类似 HTML5 的嵌套 headline 的特性。

ldap.tuna 改用 https

mod_gnutls memo

Ubuntu/Debian 下,装好 mod_gnutls 后,把 gnutls 从 mod-available 链到 mod-enabled 里面去即可。然后就可以直接配置 Virtual Host;不需要再改 httpd.conf。此外 mod_gnutls 网上找到的一些资料比较老了;在较新的版本中 GnuTLSPriorities 是必选选项了。

mod_rewrite memo

通过 mod_rewrite 把原来的 http://ldap.tuna.tsinghua.edu.cn 通过 HTTP 301 重定向到相应的 https。配置文件:

# /etc/apache2/sites-available/ldap-http-rewrite

<VirtualHost *:80 >
        ServerName ldap.tuna.tsinghua.edu.cn
        <IfModule mod_rewrite.c>
                RewriteEngine On
                RewriteRule ^/(.*) https://ldap.tuna.tsinghua.edu.cn/$1 [R=301]
        </IfModule>
</VirtualHost>

参考:http://plone.org/documentation/kb/plone-apache/virtualhost

生物系网络故障处理

参与人:xiaq cuckoo 004307ec 记录人:xiaq

生物系的新馆、老馆、人环是一个网络系统;持有两个 /24 的 IP 段,分别为 166.111.114.x 和 166.111.30.x。两个网段以某种方式共用一台交换机作为网关(技术细节 xiaq 并不了解)。前者用 DHCP 分配,后者均为固定 IP。网关在网络中心,不在生物系。生物系有三台总交换机上联至网络中心的网关,三台交换机的分工 xiaq 并不了解。

昨天开始网络出现故障,表现为两个网段丢包率和时延巨大,有时甚至无法 ping 通网关,且 114 网段无法 DHCP 获取网址(xiaq: 这在逻辑上应该是网关不通的直接后果)。生物系网管余世实老师曾经用软件方法断掉所有机器的连接(登入交换机禁用端口),然后再用一台机器连接测试,问题依旧。

下午过去之后不久网络中心来了一个李老师;然后他和在网络中心的一位老师联系,发现是网关下联的另外一个单位有机器中了病毒向外狂发包,导致那个网关的下联全部都瘫痪了。把有问题的单位封掉之后,问题就解决了。(xiaq Orz..)

不过问题解决之后余老师提到目前生物系的交换机也没有配置安全策略,为了预防以后生物系发生类似的影响其它单位的事情,打算配好安全策略。这个过程可以交给网管会的同学来做,具体权限发放的事项近段联系。

cernet.cn 邮件服务器故障处理

参与人:xiaq cuckoo 记录人:xiaq

下午的时候网络中心的一台重要的 CERNET 服务器即 cernet.cn 的邮件服务器出现故障,重启之后无法进入操作系统。进入中主 206 机房接上键盘显示器,重启发现是 Grub2 的启动项出了问题。启动项大致是:

set root=
linux /boot/vmlinuz-2.6.xx root=/dev/scsi/blahblahblah ro quiet
initrd /boot/initrc.img-2.6.xx

很奇怪的是 set root= 之后是空的。进 Grub2 的 shell,发现 root 应该是 (hd0,1)。改成 set root=(hd0,1) 后启动,能正常载入内核和 ram disk,但是在某一个阶段的 mount root filesystem 的地方卡住了。怀疑是 linux 一行的很 fancy 的 root 参数有问题,于是又把它改成了比较朴素的 linux ... root=/dev/sda1 1,正常启动。启动后修改 /boot/grub/grub.cfg。没有其它问题。

  1. 实际处理的时候比这个要复杂一些:尝试改这个参数还是改错了(写成了 linux ... root=/dev/sdb1),于是就进了 ram disk 的 fail 模式。在这个模式下手工挂载 rootfs 之后正常启动。实际上当时重启进 Grub,写上正确的参数后也是可以正常启动的。 (1)

2011-07-02 工作志

xiaq:

  • 小会议如期举行。主要内容是由我讲 LDAP 的技术原理、目前 LDAP 数据库的组织结构。

    • 本来 atone 是要来讲虚拟机的,临时有事……

    • 会议经验之:光买吃的不行,还得买喝的……
  • oka 路由解决,现在国内可访问 166.111.111.118。见如下 memo。

xiaq/ oka 主机路由问题解决

这个问题是 ../2011-07-01 晚上 heroxbd 解决的,应 byvoid 的请求写一个 memo。这是 ip rule 的一个简单的应用。

ip rule 是管理复杂路由表的解决方案,由 iproute 提供。现在(解决问题之后的)路由表是这样:

% ip rule
0:      from all lookup local 
32761:  from 10.16.5.22 fwmark 0xbd lookup dns 
32762:  from all to 10.100.0.0/24 lookup main 
32763:  from 10.100.0.0/24 lookup vpn 
32764:  from 202.112.3.176 lookup cernet 
32765:  from 166.111.111.118 lookup tsinghua # --> Look at me!
32766:  from all lookup main 
32767:  from all lookup default 
% ip route list table tsinghua
default via 166.111.111.97 dev eth1 

简言之,ip rule 允许创建多个路由表,并创建一组规则决定使用那个路由表。上面的输出中,第一列是优先级(数字越小优先级越高),随后的是过滤器,再往后 lookup 后面就是使用的路由表名字。

解决 oka 的路由问题的关键就在于标有 Look at me! 的一行。oka 是双网卡机器,这一行使得所有从 166.111.111.118 发出的数据包都被 tsinghua 这个 table 处理了。

byvoid/ mirrors.tuna.tsinghua.edu.cn使用nginx

根據以前商討的結果,我把http前端換成了nginx,以提高對靜態文件訪問的效率。apache2保留在81端口,用於解析php,配置方法如下:

location ~ \.php$ {
        proxy_pass http://127.0.0.1:81;
}

此外,我還使用proxy_pass爲ftp3上面的內容進行了轉發:

location /archlinux { proxy_pass http://166.111.8.205:80/archlinux/; }
location /centos { proxy_pass http://166.111.8.205:80/centos/; }
location /chakra { proxy_pass http://166.111.8.205:80/chakra/; }
location /frugalware { proxy_pass http://166.111.8.205:80/frugalware/; }
location /gentoo { proxy_pass http://166.111.8.205:80/gentoo/; }
location /gentoo-portage { proxy_pass http://166.111.8.205:80/gentoo-portage/; }

現在可以直接在mirrors.tuna.tsinghua.edu.cn上訪問ftp4的資源,例如 archlinux ,直接訪問 http://mirrors.tuna.tsinghua.edu.cn/archlinux/ 即可。 爲了保持統一的接口,我暫時將proftpd關閉了。 目前剩餘的問題是顯示同步狀態。

2011-07-01 工作志

heroxbd:

  • alef internal 网络 59.66.66.242/28
  • alef is resolved dually to 202.112.3.240 and 59.66.66.242, on dns
  • alef nginx, mysql and bugzilla

  • bugzilla is using SMTP on mirror.tuna, updated exim config on mirror.tuna

xiaq:

  • alef 上的 bugzilla 现在使用 LDAP 验证,oh yeah~~~~
  • 问了 ram 以下事情:
    • CA 证书问题
    • 单独的机器做 vpn
  • 苦学 LDAP……
  • 确定了周六聚会的时间地点。

2011-06-30 工作志

xiaq:

  • 学习 ifplugd

  • 学习 moin 的扩展开发。
  • 学习 TLS。 (./)

atone:

  • 学习配置Xen。

2011-06-29 工作志

xiaq:

  • LDAP PosixGroup 和 GroupOfNames 搞定,用 dynlist 实现互操作。

  • 用户迁移有有了具体的方案,随时可以付诸实施。
  • tuna-major 和 ftp4 均已经部署了 LDAP client。Debian 的 pam 是事先配好的……爽 \^_^/

  • alef 搬下去了……

2011-06-28 工作志

xiaq 今日的工作:

  • 继续研究 LDAP:GroupOfNames 与 PosixGroup 的互操作性问题。前者是 LDAP native 的,后者是 POSIX OS native 的,目前尚不知道能否能否通过 dynlist overlay 来实现互操作。 (./)

  • 学习 Moin 的 ACL。现在已经完全会用了。

xiaq 今日列出的计划:

  • LDAP:
    • 研究 LDAP 服务的冗余。在目前规模较小的情况下,不妨在有一台 LDAP server 的条件下,把每台 LDAP 客户都搭成 slave server,可以在最大限度上避免 LDAP 服务瘫痪的后果。
    • 研究 LDAP 安全性问题。
    • 用户迁移已经基本有了想法,具体方案还需要打磨。 (./)

  • 周六组织小聚一下。
  • alef 搬到机房里面去。 (./)

WorkLog/All (2011-07-17 19:58:50由xiaq编辑)