杯子茶室

关注有趣的事物

在洋葱网络(Tor)上架设不需要公网ip的代理服务器

网络 0 评 80 度

简介

会做这个尝试是因为最近看到一个Youtube视频,大概讲述了如何在网络上实现全局匿名。然后又看到了一篇说明如何在暗网架设网站的文章,于是冒出了这个想法。
能不能在树莓派上面直接架设一个Socks服务器(理论上按照Tor路由的原理来说任何代理都可以),然后用洋葱路由接入到洋葱网络里面。这样其实也变相实现了内网穿透。最后把树莓派直接丢到任何地方都可以架设服务器进行代理。

这篇文章使用了Gost进行架设,当然你也可以使用v2ray进行架设,原理是通用的。

优势劣势分析

比起直接在互联网上面搭建服务,在Tor上面直接架设服务有一些很明显的好处和坏处。

优势

  1. 高度匿名服务器:在互联网上服务器想要匿名身份的难度远远大于客户端,这是因为服务器必须要暴露高可控的IP(公网可路由、可控的防火墙策略)才能让他人访问,客户端可以通过多重手段隐藏自己的IP,访问互联网网站也不需要太高的防火墙权限。而高可控的公网IP一般只能由ISP直接提供,ISP又会遭受来自政府和媒体的审查,固然会对IP购买方提出很多要求。
    在洋葱网络上的服务器会受到Tor的三重代理保护,再加上访客也会经由三重代理才能连接到互联网和洋葱网络,即任意访客和服务器之间都会有六个Tor节点,提升溯源的难度,实现双方的高度匿名身份。
  2. 不需要公网IP:洋葱网络是使用分布式散列表记录服务器的公钥和描述符,使用私钥应答验证服务器真实性的。服务器接入洋葱网络后,客户端便可以使用公钥路由到服务器,所以不需要公网IP,也不需要购买服务器,甚至可以使用任何接入互联网的网络架设服务。

劣势

  1. 速度:如同优势1所提到的,每访问一个洋葱网络上的网站都需要流经分布在全世界的6个Tor节点,这样会大大降低网络的稳定性,连接速度会受到很大影响。
  2. 连通性与审查:洋葱网络被很多国家和地区所限制,也有很多国家和地区设立了洋葱网络诱骗节点进行审查。使用Tor或许会提升被执法机构关注的机会。

架设过程

1. 安装Tor服务端

主流Linux发行版都收录了Tor,例如Debian即可直接使用apt安装。

apt install tor
systemctl enable tor --now #开机自启Tor

2. 配置Tor服务端

Tor即可以作为客户端,也可以作为中继,也可以作为服务器使用。如果Tor作为服务器运行,那么这个Tor实例称为Onion Service.
默认情况下Tor仅作为客户端运行,监听本地9050端口。修改配置文件可以启用Tor不同功能,只需要在/etc/tor/torrc中添加以下两行,即可让Tor作为Onion Service运行。

HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 11154 127.0.0.1:10000

第一行的目录用于保存Onion Service的私钥文件private_key和域名文件hostname私钥等于onion地址的控制权限,与区块链的私钥概念相同。 在洋葱网络上域名即为公钥,其他人使用公钥访问服务,服务器使用私钥验证自己的真确性。
第二行的HiddenServicePort是反向代理目标地址。HiddenServicePort PortA AddressB表示虚拟端口PortA,并把PortA的流量转发到AddressB
以上的HiddenServicePort 80 127.0.0.1:10000意思即为打开洋葱服务的80端口,将洋葱服务的80端口流量转发到127.0.0.1:10000。
需要注意的是,洋葱服务只支持TCP协议,所以通过暗网是无法直接提供UDP服务的。
配置完成后重启Tor服务,即可开启Onion Service。

systemctl restart tor
cat /var/lib/tor/hidden_service/hostname #获取洋葱地址

3. 搭建代理服务端

为了方便,使用GOST搭建Socks服务端。先在Linux发行版中一键安装GOST。

wget -q -O - https://github.com/ginuerzh/gost/releases/download/v2.11.1/gost-linux-amd64-2.11.1.gz | gzip -dc > /usr/local/bin/gost && chmod +x /usr/local/bin/gost

安装Systemd服务。

cat > /etc/systemd/system/gost.service << EOF
[Unit]
Description=Gost Proxy
After=network.target
Wants=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/gost -C /etc/gost/config.json
Restart=always

[Install]
WantedBy=multi-user.target
EOF

创建配置文件文件夹以及写入配置文件

mkdir /etc/gost
cat > /etc/gost/config.json << EOF
{
    "Debug": true,
    "Retries": 0,
    "ServeNodes": [
        "username:[email protected]:10000"
    ]
}
EOF

启动服务与开机自动启动。

systemctl enable gost --now

4.配置客户端Tor与GOST

客户端方面的Tor配置相对较为简单,直接启动Tor之后Tor会默认开启端口为9050的Socks代理,只需要通过Socks5进行连接即可。
客户端的GOST也相同,执行以下命令即可

gost -L=:8080 -F=socks5://127.0.0.1:9050 -F=username:password@[你的洋葱地址.onion]:11154

这样便在8080端口开启了通往洋葱网络上服务节点的代理。

结语

这个实现方案如果部署在手机上面,可以直接实现手机作为完全匿名不可查找的网络代理节点。部署在树莓派上面的话可以实现安全的远程黑入网关,或者是别的匿名用途。
洋葱域名只要私钥是确定的,域名是不会有所改变的。所以即便公网IP如何变动,只要接入了互联网,访客都是可以连接到onion service上的。某种意义上可能比公网IP还要更加稳定。

翻墙指北 - 当我们在说翻墙,我们到底在讨论什么?
发表评论
撰写评论