『Freesia』- (K)NoW_NAME

樱花任务/Sakura Quest ED1

我会把这个贴子当作【分享发现】收藏夹。
7
分享 2020-03-28

92 个评论

白汁仙人 新注册用户
制作Tor网关虚拟机的方法

基本原理是,双虚拟机隔离保护匿名,VPN+Tor隐藏流量特征。具体可以参考编程随想的文章:
https://program-think.blogspot.com/2013/01/howto-cover-your-tracks-6.html
https://program-think.blogspot.com/2015/04/howto-cover-your-tracks-8.html

我使用Tor前置部署方案,即【网关虚拟机】里安装VPN开源客户端和Tor,上网软件安装在【隔离虚拟机】里,隔离虚拟机的全部(TCP)流量走网关,见图:
https://i.imgur.com/FxT7vJX.png
虚拟化软件使用VirtualBox。

Step1:安装网络

网关虚拟机配置三张网卡:

eth0:连接到VirtualBox自带的NAT网络,可以直接上网。eth0的IP交给系统自动管理即可。

eth1:较旧的双虚拟机互联大多使用host-only模式。host-only模式下流量要通过主机网络栈,有安全风险。新版VirtualBox自带一个“内部网络”模式,内部网络由VirtualBox管理,仅虚拟机可见,与主机没有任何交互。这里设置eth1的网络为192.168.89.0/24,网关虚拟机地址为192.168.89.64。VirtualBox的内部网络使用【界面名称】来唯一标识每一个网络。这里界面名称叫【tor-intnet】.

eth2:可选,配置一个host-only网络,可以用来SSH。不用时关掉。在VirtualBox里新建一个主机网络192.168.12.0/24,eth2地址设置为192.168.12.64。

最后,VirtualBox的文档里推荐,如果操作系统支持,虚拟网卡控制芯片尽量选virtio-net,速度更快。
然后打开网关虚拟机,配置interfaces. 在/etc/network/interfaces里面,增加以下内容:
auto eth1
iface eth1 inet static
address 192.168.89.64

auto eth2
iface eth2 inet static
address 192.168.12.64

Step2:安装V2Ray

用V2Ray作为Tor的前置代理,可以用真正的TLS流量包装Tor流量,外人看上去就是在访问无害的网站。
首先下载v2ray:
wget https://github.com/v2ray/v2ray-core/releases/download/v4.23.1/v2ray-linux-64.zip

然后切进v2ray的目录,修改config.json,我这里的配置是V2Ray+WS+TLS+Web+CDN,一步到位:
{
"inbound": {
    "protocol": "socks",
    "port": 10086,
    "listen": "127.0.0.1"
},

"outbound": {
    "protocol": "vmess",
    "settings": {"vnext": [{
        "address": "域名",
        "port": 443,
        "users": [{"id": "UUID"}]
    }]},
    "streamSettings": {
        "network": "ws",
        "security": "tls",
        "tlsSettings": {"serverName": "域名"},
        "wsSettings": {
            "headers": {"Host": "域名"},
            "path": "ws路径"
        }
    },
    "mux": {"enabled": true}
}
}

socks5端口是万年不变的10086。然后把v2ray解压出来的v2ray.service拷贝到systemd下,运行:
systemctl restart v2ray

v2ray就搭建好了。

Step3:安装Tor

安装:
pkg install tor

安装完成以后打开/etc/tor/torrc,在后面增加:
Socks5Proxy 127.0.0.1:10086

SOCKSPort 192.168.89.64:9050
SOCKSPolicy accept 192.168.89.0/24

然后运行:
systemctl restart tor

网关虚拟机就制作完成了。

Step4:使用网关虚拟机

按照上面的配置,网络参数如下:
  • 界面名称:tor-intnet
  • 网络号:192.168.89.0/24
  • 网关IP:192.168.89.64
  • Socks5端口:9050


注意【隔离虚拟机】只能有一张网卡,而且网卡的模式必须是【内部网络】,否则起不到隔离的效果。

在VirtualBox里,网卡的界面名称填tor-intnet,进入虚拟机,网卡配置填:
auto eth0
iface eth0 inet static
address 192.168.89.2

这是因为内部网络模式不会自动分配IP,所以必须手动指定如果要使用动态IP,可以在宿主机里添加DHCP:
vboxmanage dhcpserver add --netname tor-intnet --ip 192.168.89.1 --netmask  255.255.255.0 --lowerip 192.168.89.2 --upperip 192.168.89.254 -enable

以下命令可以删除已添加的DHCP服务器:
vboxmanage dhcpserver remove --netname tor-intnet

VirtualBox的manual见:https://www.virtualbox.org/manual

设置完网络后,对【隔离虚拟机】中的任何软件,只要配置socks5代理,就可以用Tor+VPN上网了。反过来说,只要软件配置了socks5,那么它的流量一定经过了Tor+VPN。而其它任何没有配置socks的流量,都无法穿出隔离虚拟机,更不用说联网了。
如果软件要联网,可以配置以下sock5代理:192.168.89.64:9050

如果要在隔离虚拟机里使用系统代理,可以使用privoxy:
pkg install privoxy

然后打开配置文件/etc/privoxy/config,末尾添加:
forward-socks5t / 192.168.89.64:9050 .
forward localhost/ .

就可以设置本地全局代理。

要发言请先登录注册

要发言请先登录注册