.onion 地址是 Onion 隐藏服务(“Onion Hidden Service”)所提供的具有匿名性质的网络地址。在使用 .onion 地址的情况下,无论是客户端还是服务器都无法知道对方的 IP 地址,这样就为匿名的通信提供了空间。重要的是: .onion 地址通讯的情况下是没有元数据、不可伪造以及强加密的。

Onion Hidden Service 地址的使用场景:

  1. 你想和朋友传输一个重要且很大的文件,要确保数据在传输过程中不被截获、篡改,最好还能方便的实现匿名传输,你该怎么办呢?或许你可以使用 PGP 将文件加密并上传到网盘,然后将链接发给对方,但是这样的话网盘通常都有容量限制且无法匿名(需要邮箱甚至手机号注册)。这时 Onion Hidden Service 的作用就出现了:无法篡改、无法截获、匿名、不限流量。基于 Onion Hidden Service 地址的这个特性,国外开发者制作了一款名叫 OnionShare.Onion)的软件。(国外的字幕组片源队可以用这个,不会因侵犯版权被抓啊哈哈)
  2. 你想提供一个服务,但是又没有外网的 IP 地址(搭建 Onion Hidden Service 并不需要外网IP地址)。
  3. 你想和另一个人交流,且双方都希望保持匿名
  4. 你想在你提供的服务(如:SSH 管理)上添加一些额外的加密及可验证性。
  5. 你重视你以及使用者的隐私权。
  6. etc…(详见:Tor at the Heart

那我该如何如何生成 .onion 地址呢?

.onion 地址是随机产生的,这就是为什么我用了“生成”这个词而非“注册”。产生的地址是在配置 Onion Hidden Service 时所生成的公钥所计算而成的。

要生成 .onion 地址,你需要安装 Tor。

安装 TOR:

如果你是 Debian 类系统,可以参考这里按照说明添加一个源。

如果你是 Fedora/CentOS/RHEL 类系统,可以安装 epel-release 源并安装 TOR:

yum install epel-release
yum update
yum install tor

编辑 torrc 文件以配置 Onion Hidden Service:

使用你喜欢的编辑器编辑/etc/tor/torrc文件,在最下方加入如下内容:

HiddenServiceDir /var/lib/tor/hiddenservice1
HiddenServicePort 80 127.0.0.1:8080

第一行的HiddenServiceDir

每个不同的 HiddenService 都需要一个独立的文件夹来存储其所需要的私钥和主机名,所以如果你要创建不同的 Hidden Service ,就需要修改 HiddenServiceDir 所指向的文件夹。(注:最好不要手动创建 HiddenServiceDir 的路径,否则会出现权限的错误而无法启动。在配置完成后启动TOR,程序会自动生成文件夹。)

第二行的HiddenServicePort

第一个80指定哪个端口会被开在这个 Onion Hidden Service 上(如:80,访客则可以通过浏览器在 http://example.onion/ 上访问你的服务。如:443,访客则可以通过浏览器在 https://example.onion/ 上访问你的服务。)

第二个 127.0.0.1:8080 是这个 Hidden Service 指向哪里。通常是本机的指定端口。不过如果你在一个单独的网关上运行 TOR,则需要指向提供服务的那台计算机。

启用 Onion Hidden Service:

运行 Tor 就自动启动啦。

systemctl restart tor

我的 .onion 地址是什么?

进入 HiddenServiceDir ,查看 hostname 文件。

至此一个可用的 Onion Hidden Service 就搭建好啦。

实际应用案例(WordPress 添加一个 .onion 地址):

把鼠标滑到本站最下方会发现有一个 .onion 的地址,点击之后会发现里面的链接都在 .onion 地址内部,没有连接到外部,这样就需要 nginx 的文本替换了。

思路:

让 nginx 在本地监听一个端口,只用于提供 Onion Hidden Service ,在访问该端口时反向代理网站的真实端口并替换公网链接到 .onion 链接。

实现方法(nginx 端):

server {
listen 127.0.0.1:81;
server_name blog.h2nicjqlaheyxqqz.onion;
location / {
proxy_pass https://127.0.0.1/;
proxy_set_header Host blog.h2nicjqlaheyxqqz.onion;
proxy_set_header Accept-Encoding "";
sub_filter '=\'https://blog.yandere.moe' '=\'http://blog.h2nicjqlaheyxqqz.onion';
sub_filter '="https://blog.yandere.moe' '="http://blog.h2nicjqlaheyxqqz.onion';
sub_filter ', https://blog.yandere.moe' ', http://blog.h2nicjqlaheyxqqz.onion';
sub_filter '//blog.yandere.moe' 'https://blog.yandere.moe';
sub_filter_once off;
}
}

实现方法(Tor 端):

HiddenServiceDir /var/lib/tor/yandereonion
HiddenServicePort 80 127.0.0.1:81

更多的应用等待你来发现哦~

2 Comments

    • 可以前端装一个 nginx 对字符串进行替换(替换公网链接到 onion 链接),这样就可以了呢。

      Reply

Leave a Reply

Your email address will not be published.

*

code