分类
个人

使用 Tor 连接 Freenode

Freenode 公开 IP 的功能令我十分不爽。然而鉴于自己低下的语言能力,我选择使用 Tor 而不是去申请隐藏 IP。由于 Freenode 对 Tor 有诸多限制,便有了本文。

Freenode 公开 IP 的功能令我十分不爽。然而鉴于自己低下的语言能力,我选择使用 Tor 而不是去申请隐藏 IP。由于 Freenode 对 Tor 有诸多限制,便有了本文。

限制

Freenode 对 Tor 有以下限制:

  1. 必须使用 .onion 域名连接
  2. 必须使用 SASL 的 EXTERNALECDSA-NIST256P-CHALLENGE 方式登录
  3. 如果连上的时候登出,将无法重连(不太清楚这是什么意思..)

声明:本人使用 Tor 为正规隐私考量用途,请勿使用 Tor 进行违法活动。本文不对引起的法律纠纷负责。

博主使用 EXTERNAL 方式认证。这需要以下两点:

  1. 必须使用 SSL 连接(尽管根据 Freenode 文档,这是不需要的)
  2. 必须使用客户端证书登录

一切明白之后,就可以开始了。

0x00 创建客户端证书

创建一个证书,并添加到 Freenode。

$ 
openssl req -x509 -new -newkey rsa:4096 -sha256 -days 1000 -nodes -out freenode.pem -keyout freenode.pem # 创建证书
$ openssl x509 -in freenode.pem -outform der | sha1sum -b | cut -d' ' -f1 # 获取证书指纹
IRC> /msg NickServ CERT ADD # 添加到 Freenode

之后,根据你的 IRC 客户端,设定 SASL 模式为 EXTERNAL,并设置客户端证书。如 Weechat:

$ mkdir ~/.weechat/certs
$ mv freenode.pem ~/.weechat/certs
Weechat> /set irc.server.freenode.ssl_cert %h/certs/freenode.pem
Weechat> /set irc.server.freenode.sasl_mechanism external

0x01 启用 SSL 并设置地址

首先,设置 Tor 添加 MapAddress,否则 SSL 域名验证会出错。在 Torrc 加入:

MapAddress zettel.freenode.net ajnvpgl6prmkb7yktvue6im5wiedlz2w32uhcwaamdiecdrfpwwgnlqd.onion

并重启 Tor。

随后,更改 IRC 地址和端口为 zettel.freenode.net/7000 并启用 SSL。Weechat:

/set irc.server.freenode.ssl on
/set irc.server.freenode.ssl_verify on

0x02 设置 Tor Socks 代理

根据你的 IRC 客户端,设置代理即可。Tor 的默认端口是 9050。

0x03 连接并检查

连接并登录,使用 /WHOIS 确认已经隐藏了 IP:

/WHOIS
[YuutaW] ([email protected]/tor-sasl/yuutaw): yuutaw

参考资料

  • https://freenode.net/kb/answer/chat
  • https://freenode.net/kb/answer/certfp