#!/bin/sh if [ "$(id -u)" -ne 0 ]; then echo "Root required for execution" >&2 exit 1 fi # What if we want to clean if [ "$1" = "clean" ]; then kill $(cat /tmp/lxc-dhcpd.pid) rm -f /tmp/lxc-dhcpd.pid /tmp/lxc-dhcpd.conf ip link del dev vbr0 exit fi # Setup bridge ip link add name vbr0 type bridge ip link set vbr0 up ip addr add 192.168.30.1/24 dev vbr0 # Start dhcp server # This just takes first dns nameserver configured. Maybe we might want to be # little bit more clever. DNS_SERVER=$(cat /etc/resolv.conf |grep -i nameserver|head -n1|cut -d ' ' -f2) echo "# DHCPD configuration generated by lxc-net script authoritative; default-lease-time 600; max-lease-time 7200; option subnet-mask 255.255.255.0; option broadcast-address 192.168.30.255; option routers 192.168.30.1; option domain-name-servers $DNS_SERVER; subnet 192.168.30.0 netmask 255.255.255.0 { range 192.168.30.10 192.168.30.100; }" > /tmp/lxc-dhcpd.conf dhcpd -4 -pf /tmp/lxc-dhcpd.pid -cf /tmp/lxc-dhcpd.conf vbr0 # Setup network forwarding (TODO add -o ethX to iptable command) sysctl -w net.ipv4.ip_forward=1 iptables -t nat -A POSTROUTING -j MASQUERADE