LINUX.ORG.RU

Сообщения egeneralov

 

LXC. Пример контейнеров.

Трям, здрасте

Дисклеймер: на самого крутого и гламурного я не претендую. Просто скрипт, который ждёт конструктивной критики и предложений. Предупреждаю: ответственности за поломаные системы в продакшене я не несу.

Написал небольшой скрипт, сработает на любой Debian-базированной системе. Ставил на чистый debian 8, проблем не возникло, оттестировал на виртуалке работоспособность.

Напоминаю, не копи-паст в консоль, а сохранили в файлик - дали права на исполнение - запустили.
1-ый скрипт подготовит систему для работы с lxc, 2-ой будет создавать контейнеры и готовить к работе.

  • Создать и заполнить файлы install_lxc и create_container
  • Поправить настройки сети (поиск 1.0.0) в install_lxc
  • chmod +x
  • ./install_lxc



./install_lxc

#!/bin/bash
echo “Updating system and installing dependences”
apt-get update > /dev/null 2>&1
apt-get upgrade -y > /dev/null 2>&1
apt-get install lxc cgroup-bin bridge-utils debootstrap bridge-utils isc-dhcp-server -y > /dev/null 2>&1
#mount | grep cgroup
echo “Updating network”
cat <<< '
auto lo
	iface lo inet loopback
auto br0 
	iface br0 inet static
	bridge_ports eth1
	bridge_fd 0
	address 1.0.0.36
	netmask 255.255.255.0
	gateway 1.0.0.1
	dns-nameservers 1.0.0.1 8.8.8.8
auto nat0
	iface nat0 inet static
	bridge_ports none
	bridge_fd 0
	address 10.0.0.1
	netmask 255.255.255.0
post-up iptables-restore < /etc/network/iptables.up.rules
' > /etc/network/interfaces
echo “Enable packet forwarding”
sed -ie 's/#net.ipv4.ip_forward/net.ipv4.ip_forward/g' /etc/sysctl.conf
echo “Set up NAT”
sed -ie 's/INTERFACES=\"\"/INTERFACES="nat0"/g' /etc/default/isc-dhcp-server
cat <<< '
authoritative;
subnet 10.0.0.0 netmask 255.255.255.0 {
  range 10.0.0.10 10.0.0.50;
  option domain-name-servers 192.168.0.1, 8.8.8.8;
  option domain-name “lxc.ru”;
  option routers 10.0.0.1;
  default-lease-time 600;
  max-lease-time 7200;
}
' >> /etc/dhcp/dhcpd.conf
cat <<< '*nat
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.0.0.0/24 -o lxbr0 -j MASQUERADE 
COMMIT
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
COMMIT
*filter
:FORWARD ACCEPT [0:0]
:INPUT DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
COMMIT' > /etc/network/iptables.up.rules
echo "finished, restart!"

./create_container name
#/bin/bash
echo “Creating container $1”
lxc-create -t debian -n $1 > /dev/null 2>&1
echo  "deb http://mirror.yandex.ru/debian sid main contrib non-free" > /var/lib/lxc/$1/rootfs/etc/apt/sources.list
chroot /var/lib/lxc/$1/rootfs apt update
sed -ie 's/lxc.network.type/#lxc.network.type/g' /var/lib/lxc/$1/config
cat <<< '
lxc.network.type = veth
lxc.network.link = br0
lxc.network.name = eth0
lxc.network.flags = up

lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = nat0
lxc.network.name = eth1
' >> /var/lib/lxc/$1/config
echo “Please enter root password for container”
chroot /var/lib/lxc/$1/rootfs passwd
chroot /var/lib/lxc/$1/rootfs apt update
chroot /var/lib/lxc/$1/rootfs apt install openssh-server htop $1-server -y
lxc-start -n $1 -d
echo “finished! use lxc-attach -n $1”

 , ,

egeneralov
()

Всё те же iptables. Общение локалки и 2-х vpn.

Всем хорошего вечера! Прошу помощи в настройке - словом не добрым, или полезным советом.

Есть домашняя сетка 1.0.0.0/24 (роутер 1.0.0.1 dlink 615), в ней Debian 8 1.0.0.2

1.0.0.20 - MacOS последней версии

В 1.0.0.2 подключаются (порты бросил) tun0 (openvpn) 10.8.0.0 и p2p0 peervpn 10.6.0.0/24.

Для openvpn в конфиге client-to-client и правила:

/sbin/iptables -A POSTROUTING -t nat -j MASQUERADE
/sbin/iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
/sbin/iptables -t nat -A POSTROUTING -s 10.6.0.0/24 -o eth0 -j MASQUERADE

Для peervpn - enablerelay yes

Замучил вопрос — как это всё хозяйство заставить видеть друг друга.

Конкретно:

  • Как из 1.0.0.20 получить доступ в 10.8.0.0
  • Как из 10.6.0.0 получить доступ в 10.8.0.0
  • Как из 1.0.0.20 получить доступ в 10.6.0.0

Прошу не кидать кирпичи, а ткнуть рылом ближе к решению. Спасибо!



Всем доброй ночи.

Решение задачи оказалось простое:

/sbin/iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o peervpn0  -j MASQUERADE
/sbin/iptables -t nat -A POSTROUTING -s 1.0.0.0/24 -o peervpn0 -j MASQUERADE
/sbin/iptables -t nat -A POSTROUTING -s 10.6.0.0/24 -o tun0 -j MASQUERADE

На роутере Дополнительно->Маршрутизация:

  • Сеть назначения: 10.6.0.0
  • Маска: 255.255.255.0
  • Шлюз: 1.0.0.2
  • Сеть назначения: 10.8.0.0
  • Маска: 255.255.255.0
  • Шлюз: 1.0.0.2

 , , peervpn,

egeneralov
()

RSS подписка на новые темы