nnss/tunsocks.sh

46 lines
834 B
Bash
Executable File

#!/bin/bash
set -xeuo pipefail
pidfile=${RUNTIME_DIRECTORY:-/tmp}/tunsocks.pid
nsname="$1"
device="tun${nsname}"
ns="${nsname}ns"
if [ "$2" = use_env ];then
proxy="$SOCKS_PROXY"
shift
else
proxy="socks5:///run/nnss-${nsname}/sock"
fi
setup()
{
ip tuntap add mode tun dev "$device"
/usr/bin/tun2socks -device "$device" -proxy "$proxy" &
echo "$!" > "$pidfile"
sleep 5
ip netns add "$ns"
ip link set "$device" netns "$ns"
ip -n "$ns" addr add 198.19.1.1/30 dev "$device"
ip -n "$ns" link set dev "$device" up
ip -n "$ns" route add default via 198.19.1.1 dev "$device" metric 100
ip -n "$ns" link set lo up
systemd-notify --ready
wait
}
cleanup()
{
ip tuntap del mode tun dev "$device" || true
kill "$(cat "$pidfile")"
ip -n "$ns" tuntap del mode tun dev "$device"
ip netns del "$ns"
}
$2