add a script for lxc net config
This commit is contained in:
parent
9c1af108d4
commit
76ce231050
1 changed files with 94 additions and 0 deletions
94
lxc_network_hostonlyplusnat.sh
Executable file
94
lxc_network_hostonlyplusnat.sh
Executable file
|
@ -0,0 +1,94 @@
|
|||
#!/bin/bash
|
||||
|
||||
|
||||
# Print some usage info
|
||||
function usage {
|
||||
echo "Usage: $0 [OPTION] [host_ip]"
|
||||
echo "Set up 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
|
||||
|
Loading…
Reference in a new issue