1 |
#!/bin/bash |
2 |
########################################################################### |
3 |
# Configuration of the tunN devices for usage with Basilisk II. |
4 |
# (derived MOL tunconfig script) |
5 |
# |
6 |
# This script should be named /usr/share/BasiliskII/tunconfig (unless |
7 |
# the default name has been changed with the 'etherconfig' keyword). |
8 |
# |
9 |
# Usage: tunconfig iface up|down |
10 |
# |
11 |
# If the linux box is configured as a firewall, the rules below might |
12 |
# need some adjustments. |
13 |
# |
14 |
########################################################################### |
15 |
|
16 |
SUDO=/usr/bin/sudo |
17 |
IPTABLES=/sbin/iptables |
18 |
|
19 |
######################################################### |
20 |
|
21 |
TUN_DEV=$1 |
22 |
ACTION=$2 |
23 |
|
24 |
TUN_NUM=`echo $TUN_DEV | sed s/[^0-9]//g` |
25 |
NET_NUM=`expr 40 + $TUN_NUM` |
26 |
TUN_NET=172.20.$NET_NUM.0/24 |
27 |
TUN_HOST=172.20.$NET_NUM.1 |
28 |
|
29 |
######################################################### |
30 |
# Misc Checks |
31 |
######################################################### |
32 |
|
33 |
[[ $# = 2 ]] || { |
34 |
echo "Usage: tunconfig iface up|down" |
35 |
exit 2 |
36 |
} |
37 |
|
38 |
[[ "`id -u`" = "0" ]] && { |
39 |
echo "---> $SUDO not necessary." 1>&2 |
40 |
SUDO="" |
41 |
} |
42 |
|
43 |
[[ -x $IPTABLES ]] && { |
44 |
IPTABLES="$SUDO $IPTABLES" |
45 |
} || { |
46 |
echo "---> $IPTABLES not found." 1>&2 |
47 |
IPTABLES=/bin/true |
48 |
} |
49 |
|
50 |
$IPTABLES -L -n -t nat > /dev/null || exit 1 |
51 |
|
52 |
######################################################### |
53 |
# Remove old (possibly stale) ruleset |
54 |
######################################################### |
55 |
|
56 |
{ |
57 |
$IPTABLES -t nat -D POSTROUTING -s $TUN_NET -d ! $TUN_NET -j MASQUERADE |
58 |
} >& /dev/null |
59 |
|
60 |
######################################################### |
61 |
# Bring down interface |
62 |
######################################################### |
63 |
|
64 |
[[ "$ACTION" = down ]] && { |
65 |
$SUDO /sbin/ifconfig $TUN_DEV down |
66 |
} |
67 |
|
68 |
######################################################### |
69 |
# Configure interface |
70 |
######################################################### |
71 |
|
72 |
[[ "$ACTION" = up ]] && { |
73 |
$SUDO /sbin/ifconfig $TUN_DEV $TUN_HOST |
74 |
|
75 |
# masquerade the tun network |
76 |
$IPTABLES -t nat -A POSTROUTING -s $TUN_NET -d ! $TUN_NET -j MASQUERADE |
77 |
} |
78 |
|
79 |
exit 0 |