metznet-channel/scripts/network.sh

63 lines
1.2 KiB
Bash

#!/usr/bin/env bash
setup_bridge() {
if [[ $# -lt 1 ]]; then
echo "usage: start_bridge internet_interface"
else
echo "Setting up bridge with internet adapter $1"
fi
ip link add name virbr0 type bridge
ip link set virbr0 up
ip addr add 192.168.100.0/24 dev virbr0
sysctl -w net.ipv4.ip_forward=1
nft add table inet nat
nft add chain inet nat postrouting '{ type nat hook postrouting priority 100 ; }'
nft add rule inet nat postrouting oifname $1 masquerade
}
del_bridge() {
echo "Deleting virtual bridge"
ip link del virbr0
nft delete table inet nat
}
add_interface() {
echo "Adding interface $1"
ip tuntap add $1 mode tap
ip link set $1 master virbr0
ip link set $1 up
}
del_interface() {
echo "Deleteing inteface $1"
ip link set $1 down
ip link set $1 nomaster
ip tuntap del $1 mode tap
}
if [[ $UID -ne 0 ]]; then
echo "Networking script must be run as root user"
exit 1
fi
CASE=$1
shift
case $CASE in
start_bridge)
setup_bridge $@
;;
stop_bridge)
del_bridge $@
;;
add_tap)
add_interface $@
;;
del_tap)
del_interface $@
;;
*)
echo "usage:" $0 "[start_bridge|stop_bridge|add_tap|del_tap] [options]"
;;
esac