46 lines
834 B
Bash
Executable File
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
|