Freenode 公开 IP 的功能令我十分不爽。然而鉴于自己低下的语言能力,我选择使用 Tor 而不是去申请隐藏 IP。由于 Freenode 对 Tor 有诸多限制,便有了本文。
限制 #
Freenode 对 Tor 有以下限制:
- 必须使用
.onion
域名连接 - 必须使用 SASL 的
EXTERNAL
或ECDSA-NIST256P-CHALLENGE
方式登录 - 如果连上的时候登出,将无法重连(不太清楚这是什么意思..)
声明:本人使用 Tor 为正规隐私考量用途,请勿使用 Tor 进行违法活动。本文不对引起的法律纠纷负责。
博主使用 EXTERNAL
方式认证。这需要以下两点:
- 必须使用 SSL 连接(尽管根据 Freenode 文档,这是不需要的)
- 必须使用客户端证书登录
一切明白之后,就可以开始了。
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] (~yuutaw@gateway/tor-sasl/yuutaw): yuutaw