#!/bin/bash # Print some usage info function usage { echo "Usage: $0 [OPTION] [host_ip]" echo "Set up temporary networking for LXC" echo "" echo " -n, --dry-run Just print the commands that would execute." echo " -h, --help Print this usage message." echo "" exit } # Allow passing the ip address on the command line. function process_option { case "$1" in -h|--help) usage;; -n|--dry-run) dry_run=1;; *) host_ip="$1" esac } # Set up some defaults host_ip= dry_run=0 bridge=br0 DRIER= # Process the args for arg in "$@"; do process_option $arg done if [ $dry_run ]; then DRIER=echo fi if [ "$UID" -ne "0" ]; then echo "This script must be run with root privileges." exit 1 fi # Check for bridge-utils. BRCTL=`which brctl` if [ ! -x "$BRCTL" ]; then echo "This script requires you to install bridge-utils." echo "Try: sudo apt-get install bridge-utils." exit 1 fi # Scare off the nubs. echo "=====================================================" echo echo "WARNING" echo echo "This script will modify your current network setup," echo "this can be a scary thing and it is recommended that" echo "you have something equivalent to physical access to" echo "this machine before continuing in case your network" echo "gets all funky." echo echo "If you don't want to continue, hit CTRL-C now." if [ -z "$host_ip" ]; then echo "Otherwise, please type in your host's ip address and" echo "hit enter." echo echo "=====================================================" read host_ip else echo "Otherwise hit enter." echo echo "=====================================================" read accept fi # Add a bridge interface, this will choke if there is already # a bridge named $bridge $DRIER $BRCTL addbr $bridge $DRIER ip addr add 192.168.1.1/24 dev $bridge if [ $dry_run ]; then echo "echo 1 > /proc/sys/net/ipv4/ip_forward" else echo 1 > /proc/sys/net/ipv4/ip_forward fi $DRIER ifconfig $bridge up # Set up the NAT for the instances $DRIER iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source $host_ip $DRIER iptables -I FORWARD -s 192.168.1.0/24 -j ACCEPT