nnss/tunsocks.sh

40 lines
773 B
Bash
Raw Normal View History

2025-01-30 15:43:45 -05:00
#!/bin/bash
set -xeuo pipefail
pidfile=${RUNTIME_DIRECTORY:-/tmp}/tunsocks.pid
nsname="$1"
device="tun${nsname}"
ns="${nsname}ns"
socketpath="/run/nnss-${nsname}/sock"
setup()
{
ip tuntap add mode tun dev "$device"
/usr/bin/tun2socks -device "$device" -proxy "socks5://$socketpath" &
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