shadow仿真Tor --安装记录

本文完全按照官方文档进行安装,所有安装步骤均复制自官方安装教程,仅记录了个人安装过程及遇到的问题,为多次试错后的汇总,逻辑有点混乱,仅供参考。
2021年shadow更新至2.x版本,其中运行tor的插件也进行了修改,由支持1.x版本shadow的shadow-plugin-tor改为支持2.x版本的tornettools。具体情况详见github README。

官方整合文档
https://neverenough-sec2021.github.io
本文安装的所有工具及版本

  • shadow:默认最新v2.0.0,直接git clone
  • Tor:默认最新版本,直接git clone 可以自选版本或自己修改的源码
  • TGen:v1.0.0,还需安装TGenTools
  • OnionTrace:v1.0.0,还需安装OnionTraceTools
  • tornettools:默认最新,直接git clone

shadow安装官方文档
https://shadow.github.io/docs/guide/supported_platforms.html
shadow-tornettools工具官方安装
https://github.com/shadow/tornettools
TGen安装官方文档
https://github.com/shadow/tgen
OnionTrace官方安装文档
https://github.com/shadow/oniontrace
Tor官方安装文档
https://github.com/torproject/tor

注:本次实验没有使用虚拟环境,工具安装时忽略了官方开启虚拟环境的建议,如果要开启虚拟环境则需要三个安装在同一虚拟环境下

linux系统准备

shadow官方明确指出无法支持centos7,其余支持版本详见官网,本文使用云服务器,安装ubuntu,在root用户下创建个人用户安装。
踩雷记录:wsl出现莫名错误,1核2G的服务器性能不足以支撑完整的仿真使用,Arch linux在安装tgen时出现链接错误,应该是依赖的问题,在arch中不能yay -S xxx-devel,最后也没能成功解决问题,最终还是使用了ubuntu20.04

#Arch 使用过的部分命令记录
#创建用户
useradd -m -G wheel -s /bin/bash [用户名]
#设置密码
passwd [用户名]
#进入用户
su [用户名]
#设置root权限详见参考链接
visudo
#去掉#%wheel ALL=(ALL) ALL的#
#查询具体包的版本
pacman -Qi xxx

Arch linux命令参考链接:
https://www.ohyee.cc/post/note_linux_shell
参考链接:
https://blog.csdn.net/weixin_31569671/article/details/116709653

#ubuntu创建用户
sudo adduser [username]
#赋予管理员权限
sudo usermod -aG sudo [username]

参考链接:
https://www.myfreax.com/how-to-add-and-delete-users-on-ubuntu-20-04/

shadow安装

  • 安装依赖(存在部分依赖找不到的情况,安装替代依赖即可),不同系统安装的依赖本质相同,由系统决定安装时略有不同。示例均为ubuntu系统。
#ubuntu安装命令
# 需要的依赖
sudo apt-get install -y \
    cmake \
    findutils \
    libc-dbg \
    libglib2.0-0 \
    libglib2.0-dev \
    libprocps-dev \
    make \
    python3 \
    python3-pip \
    xz-utils \
    util-linux \
    gcc \
    g++
sudo apt install libprocps-dev
# rustup: https://rustup.rs
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
#注意一般完成这一步后会提示需要
source $HOME/.cargo/env
#不进行这一步操作,即使安装成功也无法使用cargo
  • 安装shadow
git clone https://github.com/shadow/shadow.git
cd shadow
./setup build --clean --test
./setup test
# Optionally install (to ~/.local/bin by default). Can otherwise run the binary
# directly at build/src/main/shadow.
./setup install
#配置PATH
echo 'export PATH="${PATH}:/home/${USER}/.local/bin"' >> ~/.bashrc && source ~/.bashrc
#测试是否安装成功
shadow --version
shadow --help

运行成功界面
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
安装成功!

在成功安装TGen和Tor后回来测试

cd shadow/src/test/tor/minimal
./run.sh
./verify.sh

在这里插入图片描述
测试通过

TGen安装

  • 安装依赖
#ubuntu安装依赖
sudo apt-get install cmake libglib2.0-0 libglib2.0-dev libigraph1 libigraph-dev

在这里插入图片描述
ubuntu无法安装libigraph
自行到igraph官网:
https://igraph.org/2021/11/11/igraph-0.9.5-c.html
https://github.com/igraph/igraph/releases/tag/0.9.5
下载安装igraph

tar -zxvf igraph-0.9.5.tar.gz 
cd igraph-0.9.5/
mkdir build && cd build
cmake ..
cmake --build .
sudo cmake --install .

pip install python-igraph

在cmake时缺包,运行安装
在这里插入图片描述
在这里插入图片描述

sudo apt-get install libsuitesparse-dev libarpack2-dev libgmp10 libgmp-dev flex bison

#https://en.wikibooks.org/wiki/GLPK/Linux_OS#Install
wget ftp://ftp.gnu.org/gnu/glpk/glpk-4.65.tar.gz
tar -xzvf glpk-4.65.tar.gz
cd glpk-4.65
./configure
sudo make install

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 安装TGen
#下载 git clone https://github.com/shadow/tgen.git(此处没有直接clone,而是直接下载的release 1.0.0版本,其1.1.1版本遇到了未能解决的问题,在这里初次安装还是建议1.0.0)
cd tgen
#安装
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/home/$USER/.local
make

make install

arch linux 在make时遇到问题
在这里插入图片描述
ubuntuan安装报错,错误解决较为曲折,并不知道是哪一个解决的问题,因此全部记录
https://jjzhou012.github.io/blog/2020/07/12/Tutorials-python-igraph.html
https://blog.csdn.net/maruifeng__/article/details/104606357
https://lists.gnu.org/archive/html/igraph-help/2017-01/msg00011.html
根据这三个链接解决了问题

sudo apt-get install -y libigraph0-dev
sudo apt-get install build-essential
sudo apt-get install python-dev
sudo apt install pkg-config
sudo apt install libxml2-dev

pip uninstall python-igraph
pip install python-igraph

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

安装TGenTools

官方安装网址:
https://github.com/shadow/tgen/blob/main/tools/README.md

  • 安装依赖
sudo apt-get install python3 python3-dev python3-pip python3-venv libxml2 libxml2-dev libxslt1.1 libxslt1-dev libpng16-16 libpng-dev libfreetype6 libfreetype6-dev libblas-dev liblapack-dev
#安装
cd ../tools
pip3 install -r requirements.txt
pip3 install -I .

在这里插入图片描述

  • 安装TGenTools
python3 setup.py build
sudo python3 setup.py install
#安装检查
tgentools -h

在这里插入图片描述
在这里插入图片描述
安装成功!

OnionTrace安装

  • 安装依赖(此处的依赖在安装shadow时均已安装过了)
sudo apt-get install cmake libglib2.0-0 libglib2.0-dev
  • 安装OnionTrace
#下载 git clone https://github.com/shadow/oniontrace.git(此处没有直接clone,而是下载的release版本)
cd oniontrace
#安装
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/home/$USER/.local
make

make install

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 安装OnionTraceTools
    https://github.com/shadow/oniontrace/tree/main/tools
#此处所需的依赖之前应该是都安装过了,不放心可以再装一下
#直接执行安装
pip install -r path/to/oniontrace/tools/requirements.txt
pip install -I path/to/oniontrace/tools
#根据Tgentools的安装教程来说,我们不启用虚拟环境需要执行下述安装
python3 setup.py build
sudo python3 setup.py install
#检查是否安装成功
oniontracetools -h

安装成功!

tornettools安装

命令简介
在这里插入图片描述

所有的步骤都在tornettools目录下进行

  • 安装依赖
#下载(此处必须clone,直接下载release版本报错了)
git clone https://github.com/shadow/tornettools.git
cd tornettools
#虚拟环境
#python3 -m venv toolsenv
#source toolsenv/bin/activate
#安装依赖
pip install -r requirements.txt
pip install -I .
python3 setup.py build
sudo python3 setup.py install

在这里插入图片描述

  • 获取需要的数据
wget https://collector.torproject.org/archive/relay-descriptors/consensuses/consensuses-2020-11.tar.xz
wget https://collector.torproject.org/archive/relay-descriptors/server-descriptors/server-descriptors-2020-11.tar.xz
wget https://metrics.torproject.org/userstats-relay-country.csv
wget https://collector.torproject.org/archive/onionperf/onionperf-2020-11.tar.xz
wget -O bandwidth-2020-11.csv "https://metrics.torproject.org/bandwidth.csv?start=2020-11-01&end=2020-11-30"

#解压
tar xaf consensuses-2020-11.tar.xz
tar xaf server-descriptors-2020-11.tar.xz
tar xaf onionperf-2020-11.tar.xz

附:数据
链接:https://pan.baidu.com/s/1p4cznQsbuEnAeJ3zbyaG2g
提取码:uh7j

  • 安装privcount Tor流量模型
git clone https://github.com/tmodel-ccs2018/tmodel-ccs2018.github.io.git
  • 安装Tor(具体安装位置其实并无限制,只要注意后续的tornettools stage命令需要修改对应路径 --geoip_path 【tor/src/config/geoip】
#依赖
sudo apt-get install openssl libssl-dev libevent-dev build-essential automake zlib1g zlib1g-dev
#源码下载
git clone https://git.torproject.org/tor.git
cd tor
#安装
./autogen.sh
#这是官方原命令,但后期会报错,因此直接在此处修改
#./configure --disable-asciidoc --disable-unittests --disable-manpage --disable-html-manual
#将上文中的此条命令修改如下
./configure --disable-asciidoc --disable-unittests --disable-manpage --disable-html-manual --prefix=/home/$USER/.local
make -j$(nproc)
#多执行一步如下
make install
cd ..

#添加PATH
export PATH=${PATH}:`pwd`/tor/src/core/or:`pwd`/tor/src/app:`pwd`/tor/src/tools

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
截止目前操作为止,目录下应该拥有的文件
在这里插入图片描述

  • stage -首先处理中继和用户信息(此处运行较慢,需要大量内存)
tornettools stage \
    consensuses-2020-11 \
    server-descriptors-2020-11 \
    userstats-relay-country.csv \
    tmodel-ccs2018.github.io \
    --onionperf_data_path onionperf-2020-11 \
    --bandwidth_data_path bandwidth-2020-11.csv \
    --geoip_path tor/src/config/geoip

在这里插入图片描述
此时目录下文件
在这里插入图片描述

  • generate-使用上一步生成的文件生成网络
    使用 --network_scale 0.01 以公共Tor规模的“1%”生成一个私有Tor网络(由于1%规模的网络仿真运行时间过长,内存消耗过大,因此使用0.1%的网络规模进行测试,大约需要运行2小时)
tornettools generate \
    relayinfo_staging_2020-11-01--2020-11-30.json \
    userinfo_staging_2020-11-01--2020-11-30.json \
    networkinfo_staging.gml \
    tmodel-ccs2018.github.io \
    --network_scale 0.01 \
    --prefix tornet-0.01

在这里插入图片描述

  • 运行仿真结果(确保已安装shadow,tgen和oniontrace)
    请注意,模拟一个“1%”Tor网络60分钟可能需要多达30GiB的RAM。
tornettools simulate tornet-0.01
tornettools parse tornet-0.01
tornettools plot \
    tornet-0.01 \
    --tor_metrics_path tor_metrics_2020-11-01--2020-11-30.json \
    --prefix pdfs
tornettools archive tornet-0.01

第一步就遇到了错误Shadow did not complete successfully: Controller exited with code 1
注意:重新运行需要进入tornet-0.01中删除shadow.data再重新运行rm -rf shadow.data
在这里插入图片描述
查看日志shadow.log之后发现错误:无法找到tor路径
For host ‘4uthority1’, couldn’t find program path: ‘~/.local/bin/tor’
在这里插入图片描述
重新回顾tornettools中tor的安装部分,发现安装路径确实不符合需求,因此重新安装

#将上文中的此条命令修改如下
./configure --disable-asciidoc --disable-unittests --disable-manpage --disable-html-manual --prefix=/home/$USER/.local
#重新执行make
make -j$(nproc)
#多执行一步
make install

发现路径确实修改为所需命令
在这里插入图片描述
再次报错(并没有解决,重装系统重装了没再遇到)
thread ‘’ panicked at ‘called Result::unwrap() on an Err value: RecvError’
fatal runtime error: failed to initiate panic, error 5在这里插入图片描述

  • 运行过程中系统状态监控

在这里插入图片描述

运行成功

在这里插入图片描述
文件变化
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

parse成功
在这里插入图片描述
plot成功
在这里插入图片描述

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值