mirror of
https://github.com/clearlinux/kvmtool.git
synced 2026-09-03 20:21:27 +00:00
We can use this script to create/delete a private bridge,
and launch a dhcp server on the bridge by dnsmasq,
setup forware rule of iptable, then guest can access public network.
# ./set_private_br.sh vbr0 192.168.33
add new private bridge: vbr0
# brctl show
bridge name bridge id STP enabled interfaces
vbr0 8000.000000000000 yes
# ifconfig vbr0
vbr0 Link encap:Ethernet HWaddr 82:0f:f5:8f:92:47
inet addr:192.168.33.1 Bcast:192.168.33.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:11 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:1979 (1.9 KB)
# ps aux |grep dnsmasq
nobody .. dnsmasq --strict-order --bind-interfaces --listen-address 192.168.33.1 \
--dhcp-range 192.168.33.1,192.168.33.254
Signed-off-by: Amos Kong <kongjianjun@gmail.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
52 lines
1.3 KiB
Bash
Executable File
52 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Author: Amos Kong <kongjianjun@gmail.com>
|
|
# Date: Apr 14, 2011
|
|
# Description: this script is used to create/delete a private bridge,
|
|
# launch a dhcp server on the bridge by dnsmasq.
|
|
#
|
|
# @ ./set_private_br.sh $bridge_name $subnet_prefix
|
|
# @ ./set_private_br.sh vbr0 192.168.33
|
|
|
|
brname='vbr0'
|
|
subnet='192.168.33'
|
|
|
|
add_br()
|
|
{
|
|
echo "add new private bridge: $brname"
|
|
/usr/sbin/brctl addbr $brname
|
|
echo 1 > /proc/sys/net/ipv6/conf/$brname/disable_ipv6
|
|
echo 1 > /proc/sys/net/ipv4/ip_forward
|
|
/usr/sbin/brctl stp $brname on
|
|
/usr/sbin/brctl setfd $brname 0
|
|
ifconfig $brname $subnet.1
|
|
ifconfig $brname up
|
|
# Add forward rule, then guest can access public network
|
|
iptables -t nat -A POSTROUTING -s $subnet.254/24 ! -d $subnet.254/24 -j MASQUERADE
|
|
/etc/init.d/dnsmasq stop
|
|
/etc/init.d/tftpd-hpa stop 2>/dev/null
|
|
dnsmasq --strict-order --bind-interfaces --listen-address $subnet.1 --dhcp-range $subnet.1,$subnet.254 $tftp_cmd
|
|
}
|
|
|
|
del_br()
|
|
{
|
|
echo "cleanup bridge setup"
|
|
kill -9 `pgrep dnsmasq|tail -1`
|
|
ifconfig $brname down
|
|
/usr/sbin/brctl delbr $brname
|
|
iptables -t nat -D POSTROUTING -s $subnet.254/24 ! -d $subnet.254/24 -j MASQUERADE
|
|
}
|
|
|
|
|
|
if [ $# = 0 ]; then
|
|
del_br 2>/dev/null
|
|
exit
|
|
fi
|
|
if [ $# > 1 ]; then
|
|
brname="$1"
|
|
fi
|
|
if [ $# = 2 ]; then
|
|
subnet="$2"
|
|
fi
|
|
add_br
|