#!/bin/bash BRIDGE=virbr0 NETWORK=192.168.122.0 GATEWAY=192.168.122.1 NETMASK=255.255.255.0 DHCPRANGE=192.168.122.2,192.168.122.254 TFTPROOT= BOOTP= function check_bridge() { if brctl show | grep "^BRIDGE" &> /dev/null;then return 1 else return 0 fi } function create_bridge() { brctl addbr "BRIDGE" brctl stp "BRIDGE" on brctl setfd "BRIDGE" 0 ifconfig "$BRIDGE" "GATEWAY" netmask "$NETMASK" up } function enable_ip_forward() { echo 1 > /proc/sys/net/ipv4/ip_forward } function add_filter_rules() { iptables -t nat -A POSTROUTING -s "$NETWORK"/"$NETMASK" ! -d "$NETWORK"/"$NETMASK" -j MASQUERADE } function start_dnsmasq() { ps -ef | grep "dnsmasq" |grep -v "grep" &> /dev/null if [ $? -eq 0 ];then echo "warning:dnsmasq is already running" return 1 fi dnsmasq --strict-order --except-interface=lo --interface=$BRIDGE --listen-address=$GATEWAY --bind-interfaces --dhcp-range=$DHCPRANGE --conf-file="" --pid-file=/var/run/qemu-dhcp-$BRIDGE.pid --dhcp-leasefile=/var/run/qemu-dhcp-$BRIDGE.leases --dhcp-no-override ${TFTPROOT:+"--enable-tftp"} ${TFTPROOT:+"--tftp-root=$TFTPROOT"} ${BOOTP:+"--dhcp-boot=$BOOTP"} } function setup_bridge_nat() { check_bridge "$BRIDGE" if [ $? -eq 0 ];then create_bridge fi enable_ip_forward add_filter_rules "$BRIDGE" start_dnsmasq "$BRIDGE" } if [ -n "$1"];then setup_bridge_nat ifconfig "$1" 0.0.0.0 up brctl addif "$BRIDGE" "$1" exit 0 else echo "Error:no interface specified" exit 1 fi
qemu-ifdown-NAT
#!/bin/bash BRIDGE="virbr0" if [ -n "$1" ];then ip link set $1 down brctl delif "$BRIDGE" $1 ip link set "$BRIDGE" down brctl delbr "$BRIDGE" iptables -t nat -F exit 0 else echo "Error: no interface specified" exit 1 fi