Created
November 17, 2016 17:19
-
-
Save Caesim404/e1b57a84601bb30cceb5adc08e87bb84 to your computer and use it in GitHub Desktop.
Helps run wine steam (or another program) in a network namespace.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
ns=${ns:-steamns} | |
veth0=${veth0:-veth0} | |
veth1=${veth1:-veth1} | |
addr0=${addr0:-10.1.1.1/24} | |
addr1=${addr1:-10.1.1.2/24} | |
sudo=${sudo:-sudo} | |
dev=${dev:-`ip route show | awk 'NR==1 { print $5 }'`} | |
echo "Guessing that your interface is $dev" | |
if [ "`sysctl -n net.ipv4.ip_forward`" = "0" ]; then | |
echo "IPv4 forwarding not enabled. Enabling" | |
$sudo sysctl net.ipv4.ip_forward=1 | |
fi | |
iptablerules=( | |
"POSTROUTING -t nat -o $dev -j MASQUERADE" | |
"FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT" | |
"FORWARD -i $veth0 -o $dev -j ACCEPT" | |
) | |
if [ "$delete" = "1" ]; then | |
echo "Deleting everything" | |
for rule in "${iptablerules[@]}"; do | |
$sudo iptables -D $rule | |
done | |
$sudo ip netns del $ns | |
exit | |
fi | |
for rule in "${iptablerules[@]}"; do | |
$sudo iptables -C $rule > /dev/null 2>&1 | |
if [ "$?" = "1" ]; then | |
echo "Rule \"$rule\" doesnt exist. Adding it" | |
$sudo iptables -A $rule | |
fi | |
done | |
ns_exists="0" | |
for n in `ip netns list`; do | |
if [ "$n" = "$ns" ]; then | |
ns_exists="1" | |
break | |
fi | |
done | |
if [ "$ns_exists" = "0" ]; then | |
echo "Namespace $ns doesn't exist. Creating it" | |
$sudo ip link add $veth0 type veth peer name $veth1 | |
$sudo ip netns add $ns | |
$sudo ip netns exec $ns ip link set dev lo up | |
$sudo ip link set $veth1 netns $ns | |
$sudo ip netns exec $ns ip addr add $addr1 dev $veth1 | |
$sudo ip netns exec $ns ip link set up dev $veth1 | |
$sudo ip netns exec $ns ip route add default via `echo $addr0 | cut -d / -f 1` dev $veth1 | |
$sudo ip addr add $addr0 dev $veth0 | |
$sudo ip link set up dev $veth0 | |
fi | |
$sudo ip netns exec $ns sudo -u $USER "$@" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment