63 lines
1.2 KiB
Bash
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
|