#!/bin/sh # # /etc/rc.d/rc.lxc-bridge, Christoph Willing (2015) # # Set up a bridge and a NAT network hanging off it. # # Below, set LXCBR_NAME to desired bridge interface name # set LXCBR0_NAT_NET for desired NAT network address # set OTHER_ROUTE_DEVICE to make bridged network available # on other local network interfaces DEFAULT_ROUTE_DEVICE=${DEFAULT_ROUTE_DEVICE:-$(/sbin/route | grep default | awk '{print $8}'|uniq)} OTHER_ROUTE_DEVICE=${OTHER_ROUTE_DEVICE:-"eth0"} LXCBR_NAME=${LXCBR_NAME:-lxcbr0} LXCBR0_NAT_NET=${LXCBR0_NAT_NET:-192.168.100} PATH=/sbin:/usr/sbin:$PATH start() { if brctl show |grep $LXCBR_NAME 1>/dev/null 2>/dev/null ; then echo "lxbr0 already exists" else echo "Setting up $LXCBR_NAME on $DEFAULT_ROUTE_DEVICE ..." echo 1 > /proc/sys/net/ipv4/ip_forward brctl addbr $LXCBR_NAME brctl setfd $LXCBR_NAME 0 ifconfig $LXCBR_NAME ${LXCBR0_NAT_NET}.1 netmask 255.255.255.0 promisc up iptables -t nat -A POSTROUTING -o $DEFAULT_ROUTE_DEVICE -j MASQUERADE if [ -z $OTHER_ROUTE_DEVICE ] ; then echo "No other route device to NAT" else iptables -t nat -A POSTROUTING -o $OTHER_ROUTE_DEVICE -j MASQUERADE fi fi } stop() { if brctl show |grep $LXCBR_NAME 1>/dev/null 2>/dev/null ; then ifconfig $LXCBR_NAME down brctl delbr $LXCBR_NAME else echo "$LXCBR_NAME is not there to shutdown" fi } status() { if brctl show |grep $LXCBR_NAME 1>/dev/null 2>/dev/null ; then echo "$LXCBR_NAME exists." else echo "$LXCBR_NAME not found." fi } case "$1" in 'start')start;; 'stop')stop;; 'restart')stop;start;; 'status')status;; *)echo "$0 start|stop|restart|status" esac