跳过正文

私有Tor网络搭建

·1091 字·
目录

参考: https://www.bilibili.com/read/cv21769062/

私有Tor网络搭建
#

1.安装Docker
#

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

2.建立桥接网络
#

docker network create --driver bridge --subnet 172.10.1.0/16 --gateway 172.10.1.0 tor_net
  • –driver bridge 表示使用桥接网络
  • –subnet 172.10.0.0/16 表示子网ip(分配范围1~254)
  • –gateway 172.10.1.0 表示网关
  • tor_net 表示网络名

3.建立节点模板
#

1.拉取ubuntu镜像,建立容器

docker pull ubuntu
docker run -itd --name tor_1 --network=tor_net ubuntu /bin/bash
  • -itd == -i -t -d
  • -d 参数默认不会进入容器
  • -i 交互式操作
  • -t 终端
  • –name 名字
  • /bin/bash 放在镜像名后面的是命令,bash路径

2.编译tor源码

先在主机上拉取tor源码,然后拷贝给容器

git clone https://github.com/torproject/tor
docker cp ./tor tor_1:/root

进入容器 docker attach tor_1

修改源

sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
sed -i s@/security.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
apt clean
apt-get update -y

安装必要的包

apt-get install -y neovim git curl net-tools autotools-dev automake autoconf libtool make gcc libevent-dev libssl-dev zlib1g zlib1g-dev
apt-get --no-install-recommends -y install asciidoc
apt-get -y install docbook-xml docbook-xsl

编译tor

git config --global --add safe.directory /root/tor
cd /root/tor/
./autogen.sh
./configure
make
make install

# 将来会用到的
mkdir /etc/tor
mkdir /etc/tor/tor_data
mkdir /etc/tor/tor_log
exit

保留镜像

# 导出镜像
docker export tor_1 > tor.tar
# 导入镜像
docker import - tor < tor.tar
# 查看镜像
docker images
# 创建新容器
docker run -it --name tor_da1 --network=tor_net tor /bin/bash

4.配置DA
#

进入容器 docker attach tor_da1

1.生成节点密钥和指纹

tor --list-fingerprint --orport 5000 --dirserver "DA 172.10.0.1:7000 ffffffffffffffffffffffffffffffffffffffff" --datadirectory /etc/tor/tor_data

2.生成DA密钥和证书

tor-gencert --create-identity-key -m 12 -a 172.10.0.1:7000 \
-i /etc/tor/tor_data/keys/authority_identity_key \
-s /etc/tor/tor_data/keys/authority_signing_key \
-c /etc/tor/tor_data/keys/authority_certificate

3.配置torrc

RA的配置文件这里同样填写要连接的DA的这两个

nvim /usr/local/etc/tor/torrc

v3ident填写

cat /etc/tor/tor_data/keys/authority_certificate | grep fingerprint

节点指纹填写

cat /etc/tor/tor_data/fingerprint

/usr/local/etc/tor/torrc

NickName DA
Address 172.10.0.1

# LOG 文件
Log notice file /etc/tor/notice.log
Log info file /etc/tor/info.log
Log debug file /etc/tor/debug.log 

## 目录服务器设置 
AuthoritativeDirectory 1

## Tor将生成第3版网络状态
V3AuthoritativeDirectory 1
ContactInfo auth0@test.test

# 存储工作数据
DataDirectory /etc/tor

## 关键端口
# 不希望通过SOCKS连接应用程序
SocksPort 0

# OrPort监听Tor连接
OrPort 5000

# DirPort监听目录服务 在此端口上通告目录服务
DirPort 7000

# 调试端口
ControlPort 6666

## 指定自己的目录服务器
# 1 authority_certificate | grep fingerprint
# 2 fingerprint
DirAuthority DA orport=5000 no-v2 v3ident=583A462E5CADC4EC5C3212FDAC8F4A028A8E1584 172.10.0.1:7000 DFDA9F10DD63D43B77DFE7FB896310CAD265318E

## 测试 Tornetwork
TestingTorNetwork 1

TestingV3AuthInitialVotingInterval 300  
TestingV3AuthInitialVoteDelay 20  
TestingV3AuthInitialDistDelay 20
TestingDirAuthVoteGuard *
TestingMinExitFlagThreshold 0

## 这些配置是为了快速上线,避开一些对稳定性的限制
RunAsDaemon 1 #后台运行
AssumeReachable 1

#响应SIGINT信号,立即关闭
ShutdownWaitLength 0

# Tor进程启动前必须可用的最小文件描述符数。
ConnLimit 60

#出口策略 不作为出口 拒绝一切出口流量
ExitPolicy reject *:*

# 安全设置与调试设置
ProtocolWarnings 1
SafeLogging 0
DisableDebuggerAttachment 0

5.配置中继节点和客户端
#

仅需要生成节点密钥和指纹,创建多个docker容器

docker run -it --name tor_ra1 --network=tor_net tor /bin/bash

# 容器内执行
tor --list-fingerprint --orport 5000 --dirserver "DA 172.10.0.1:7000 ffffffffffffffffffffffffffffffffffffffff" --datadirectory /etc/tor/tor_data

配置torrc

nvim /usr/local/etc/tor/torrc
NickName relay*
Address 172.10.0.*

# LOG 文件
Log notice file /etc/tor/notice.log
Log info file /etc/tor/info.log
Log debug file /etc/tor/debug.log 

# 存储工作数据
DataDirectory /etc/tor

## 关键端口
# 后续代理访问需要的端口
SocksPort 9050

# OrPort监听Tor连接
OrPort 5000

# 调试端口
ControlPort 6666

## 指定自己的目录服务器
# 1 authority_certificate | grep fingerprint
# 2 fingerprint
DirAuthority DA orport=5000 no-v2 v3ident=583A462E5CADC4EC5C3212FDAC8F4A028A8E1584 172.10.0.1:7000 DFDA9F10DD63D43B77DFE7FB896310CAD265318E

## 测试 Tornetwork
TestingTorNetwork 1

TestingDirAuthVoteExit *
TestingDirAuthVoteHSDir *
TestingDirAuthVoteGuard *
TestingMinExitFlagThreshold 0

## 这些配置是为了快速上线,避开一些对稳定性的限制
RunAsDaemon 1 #后台运行
AssumeReachable 1

#响应SIGINT信号,立即关闭
ShutdownWaitLength 0

# Tor进程启动前必须可用的最小文件描述符数。
ConnLimit 60

#出口策略 可以作为出口
ExitRelay 1
ExitPolicy accept *:*


# 安全设置与调试设置
ProtocolWarnings 1
SafeLogging 0
DisableDebuggerAttachment 0

6.网络测试
#

启动容器中的tor
#

docker exec da1 tor
docker exec ra1 tor
docker exec ra2 tor
docker exec ra3 tor

使用代理
#

代理 socks ip:9050

curl --proxy socks://127.0.0.1:9050 www.baidu.com