2024-02-01 19:15:32 +08:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
function install_rperf_bin() {
|
|
|
|
local rperf_bin_url="https://github.com/ssrlive/rperf/releases/latest/download/rperf-x86_64-unknown-linux-musl.zip"
|
|
|
|
local rperf_bin_zip_file="rperf-x86_64-unknown-linux-musl.zip"
|
|
|
|
|
|
|
|
command -v rperf > /dev/null
|
|
|
|
if [ $? -ne 0 ]; then
|
|
|
|
echo "Downloading rperf binary ..."
|
|
|
|
wget "$rperf_bin_url" >/dev/null 2>&1
|
|
|
|
unzip "$rperf_bin_zip_file" rperf -d /usr/local/bin/ >/dev/null 2>&1
|
|
|
|
rm "$rperf_bin_zip_file"
|
|
|
|
fi
|
|
|
|
|
|
|
|
rperf -h >/dev/null 2>&1
|
|
|
|
if [ $? -ne 0 ]; then
|
|
|
|
echo "Failed to install rperf binary"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
install_rperf_bin
|
|
|
|
|
|
|
|
sudo apt install dante-server -y >/dev/null 2>&1
|
|
|
|
sudo systemctl stop danted
|
|
|
|
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
# echo $SCRIPT_DIR
|
|
|
|
|
|
|
|
netns="test"
|
|
|
|
dante="danted"
|
2024-09-26 10:54:54 +08:00
|
|
|
tun2proxy="${SCRIPT_DIR}/../target/release/tun2proxy-bin"
|
2024-02-01 19:15:32 +08:00
|
|
|
|
|
|
|
ip netns add "$netns"
|
|
|
|
|
|
|
|
ip link add veth0 type veth peer name veth0 netns "$netns"
|
|
|
|
|
|
|
|
# Configure veth0 in default ns
|
|
|
|
ip addr add 10.0.0.2/24 dev veth0
|
|
|
|
ip link set dev veth0 up
|
|
|
|
|
|
|
|
# Configure veth0 in child ns
|
|
|
|
ip netns exec "$netns" ip addr add 10.0.0.3/24 dev veth0
|
|
|
|
ip netns exec "$netns" ip addr add 10.0.0.4/24 dev veth0
|
|
|
|
ip netns exec "$netns" ip link set dev veth0 up
|
|
|
|
|
|
|
|
# Configure lo interface in child ns
|
|
|
|
ip netns exec "$netns" ip addr add 127.0.0.1/8 dev lo
|
|
|
|
ip netns exec "$netns" ip link set dev lo up
|
|
|
|
|
|
|
|
echo "Starting Dante in background ..."
|
|
|
|
ip netns exec "$netns" "$dante" -f ${SCRIPT_DIR}/dante.conf &
|
|
|
|
|
|
|
|
# Start rperf server in netns
|
|
|
|
ip netns exec "$netns" rperf -s -B 10.0.0.4 &
|
|
|
|
|
|
|
|
sleep 1
|
|
|
|
|
|
|
|
# Prepare tun2proxy
|
|
|
|
ip tuntap add name tun0 mode tun
|
|
|
|
ip link set tun0 up
|
|
|
|
ip route add 10.0.0.4 dev tun0
|
2024-04-23 13:22:27 +08:00
|
|
|
"$tun2proxy" --tun tun0 --proxy socks5://10.0.0.3:10800 -v off &
|
2024-02-01 19:15:32 +08:00
|
|
|
|
|
|
|
sleep 3
|
|
|
|
|
|
|
|
# Run rperf client through tun2proxy
|
|
|
|
rperf -c 10.0.0.4 -v off -P 1 -r
|
|
|
|
|
|
|
|
sleep 3
|
|
|
|
|
|
|
|
rperf -c 10.0.0.4 -v off -P 1
|
|
|
|
|
|
|
|
sleep 3
|
|
|
|
|
|
|
|
rperf -c 10.0.0.4 -v off -P 1 -u
|
|
|
|
|
|
|
|
sleep 3
|
|
|
|
|
|
|
|
rperf -c 10.0.0.4 -v trace -P 1 -u -r
|
|
|
|
|
|
|
|
# Clean up
|
2024-09-26 10:54:54 +08:00
|
|
|
# sudo sh -c "pkill tun2proxy-bin; pkill rperf; pkill danted; ip link del tun0; ip netns del test"
|