вторник, 4 июля 2017 г.

Как включить tun/tap внутри LXC контейнере

Чтобы включить интерфейс tun/tap в LXC контейнере, например для OpenVPN, нужно отредактировать файл конфигурации LXC.
Месторасположение файла по умолчанию:
/etc/lxc/default.conf
Вам нужно добавить
lxc.cgroup.devices.allow = c 10:200 rwm
Также работает в proxmox 4.0.
Чтобы использовать tun/tap интерфейс оно должно быть создано внутри контейнера при каждой загрузке, поэтому добавьте следующее в ваш файл /etc/rc.local внутри вашего контейнера:
if ! [ -d /dev/net ];then
 mkdir /dev/net
fi
if ! [ -c /dev/net/tun ]; then
 mknod /dev/net/tun c 10 200
 chmod 666 /dev/net/tun
fi

persistent devices

lxc guest have their dev recreated on each restart in a tmpfs. This means all devices are reset and are not read from rootfs dev directory. To make it persistent you can use an autodev script by adding the following to your lxc guest config
# tun (openvpn)
lxc.cgroup.devices.allow = c 10:200 rwm
# audodev script to add devices
lxc.hook.autodev=/var/lib/lxc/CONTAINER/autodev
The autodev script would be as following:
#!/bin/sh
# dev is populated on earch container start.
# to make devices persistence we need to recreate them on each start.

cd ${LXC_ROOTFS_MOUNT}/dev
mkdir net
mknod net/tun c 10 200
chmod 0666 net/tun
И еще с итальянского сайта

Configurar el contenedor

Llegados a este punto el contedor tiene permisos para acceder al dispositivo especial de caracteres /dev/net/tun, sin embargo este dispositivo no existe en el contenedor LXC por ello es necesario crear un servicio systemd para automatizar la creación del archivo /dev/net/tun
сat >> /etc/systemd/system/create-net-tun.service << EOF
[Unit]
Description=Create /dev/net/tun device
DefaultDependencies=no
[Service]
Type=oneshot
ExecStart=/usr/bin/mkdir /dev/net
ExecStart=/usr/bin/mknod /dev/net/tun c 10 200
ExecStart=/usr/bin/chmod 666 /dev/net/tun
[Install]
WantedBy=openvpn@.service
EOF
systemctl enable create-net-tun
На этом всё.

понедельник, 3 июля 2017 г.

Разное → Настройка NAT и DHCP в Debian

Приспичило мне настроить NAT(маскарадинг), называйте как хотите. Для чего? Есть две сетевые. Одна eth1 — интернет, вторая eth0 — внутренняя подсеть 192.168.0.0/28
Собственно, пакеты из внешней подсети должны перенаправляться во внутреннюю и наоборот.

Для начала, нужно включить ip forwarding. Проверим, не включен ли он:

$ cat /proc/sys/net/ipv4/ip_forward

Если выдаст 0 — выключен, 1 — соответственно включен.
Чтобы включить:
$ echo 1 > /proc/sys/net/ipv4/ip_forward

А чтобы включит навсегда в файл /etc/sysctl.conf добавляем следующие строчки:

net.ipv4.conf.default.forwarding=1 net.ipv4.conf.all.forwarding=1

Создаем файл в /etc/network/if-pre-up.d/NAT и делаю исполняемым
chmod +x /etc/network/if-pre-up.d/NAT
Теперь, при подъёме интерфейсов в up запускается наш «NAT».

Собственно, всё делается через iptables. Содержание файла NAT:
# Первым делом очистим существующую таблицу правил: 
iptables -F 
# Добавляем первое правило которое позволит нам не потерять удаленный контроль над сервером 
iptables -A INPUT -p tcp -i eth1 --dport 22 -j ACCEPT 
# Прописываем политики по умолчанию: 
# Принимать все пакеты, которые инициированы из уже установленного соединения, и имеющим признак ESTABLISHED. 
# Состояние ESTABLISHED говорит о том, что это не первый пакет в соединении. 
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 
#Запрешаем на передачу всё, что не разрешено. 
iptables -P INPUT DROP iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT # Разрешаем хождение трафика по localhost 
iptables -A INPUT -i lo -j ACCEPT #Разрешаем пинг(DROP - запретить) iptables -A INPUT -i eth1 -p icmp --icmp-type 8 -j ACCEPT 
#NAT Должен быть включен ip forwarding 
iptables -A FORWARD -i eth1 -o eth0 -s 192.168.0.0/28 -j ACCEPT iptables -A POSTROUTING -t nat -j MASQUERADE 
iptables -A INPUT -i eth0 -p icmp --icmp-type 8 -j ACCEPT

Теперь, настроем наш eth0, сделав его шлюзом
Заходим в  /etc/network/interfaces

address 192.168.0.1 netmask 255.255.255.240 broadcast 192.168.0.15

Всё, готово. Но, чтобы не вбивать каждый раз адрес и dns вручную, особенно, если компов несколько, поднимем ещё и dhcp сервер.

Для начала установим его:

# apt-get install dhcp3-server

Он естественно не запустится, правим файлик конфигурации /etc/dhcp/dhcpd.conf
Конфиг приблизительно такой:
#Опция динамического обновления для dns ddns-update-style none; #Домен и dns'ы option domain-name "admin-pc"; option domain-name-servers ; #Время жизни адресов default-lease-time 600; max-lease-time 7200; # # Для логирования в отдельный файл log-facility local7; #Подсеть из которой выдаются ip #диапазон #шлюз #brodcast #интерфейс на котором работает subnet 192.168.0.0 netmask 255.255.255.240 { range 192.168.0.2 192.168.0.14; option routers 192.168.0.1; option broadcast-address 192.168.0.15; interface eth0; }

Запускаем демона:

# /etc/init.d/isc-dhcp-server start

Проверяем, работает, радуемся!
Но, по умолчанию, логируется всё в /var/log/syslog, что не очень удобно если вам нужно работать с логами.
Предлагаю, можно всё в отдельный файл.

Создадим файл /etc/rsyslog.d/dhcpd.conf с содержимым:
local7.* /var/log/dhcpd.log

Для ротации логов в файл /etc/logrotate.d/rsyslog вставить строку:

/var/log/dhcpd.log

Перезапускаемся:

# /etc/init.d/isc-dhcp-server restart # /etc/init.d/rsyslog restart

Теперь, смотрим лог в /var/log/dhcpd.log

среда, 28 июня 2017 г.

Установить WinUSB для записи образа Windows в Ubuntu 16.04/Linux Mint 18

Ранее я писал на страницах Compizomania, как создать загрузочную флешку с iso образами Ubuntu/Linux Mint, посредством таких инструментов, как: Создание загрузочного диска, UNetbootin, LiveUSB Install и пр.
Сегодня мне хотелось бы познакомить вас ещё с одним инструментом/программой в Ubuntu для создания USBфлешки  - WinUSB.

WinUSB - это простой инструмент, который позволяет создавать собственные установки Windows на USB флешку из ISO образа или DVD диска в Ubuntu. В нём нет сложного пользовательского интерфейса, все что вам требуется - несколько кликов, немного ожидания и флешка с образом готова.
WinUSB поддерживает установку образов: Windows Vista, 78 и 10.

Необходимые требования

1. Флешка USB - 4ГБ (минимум)
2. Загруженный iso образ/DVD с Windows Vista, 7, 8 
или 10 


Установка WinUSB в Ubuntu 16.04/Linux Mint 18

Откройте терминал (Ctrl+Alt+T), скопируйте и выполните следующие команды:

sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt-get update
sudo apt-get install winusb

После установки вы найдёте WinUSB в программах Системные утилиты/Администрирование или поиском в меню.

Использование WinUSB

Использование WinUSB очень простое. Но прежде чем начать использовать программу, вы должны уже иметь ISO образ, либо DVD диск с Windows и USB флешку - 4 ГБ. Флешка будет отформатирована в процессе создания, поэтому убедитесь, что вы сделали резервную копию всех файлов с флешки, прежде чем продолжить.

1. Открыть WinUSB.

2. Если у вас есть ISO образ Windows, выберите опцию From a disk image (iso), далее кликните  на значок папки для выбора на вашем жёстком диске ISO образа, затем клик на строке с обозначением флешки - Target device и install:


После чего должно открыться окно установки - installing:


Дождитесь окончания установки до появления окна, оповещающего успешное завершение.

 Теперь ваша флешка готова для установки на компьютере дистрибутива Windows.

Примечание. Не пытайтесь устанавливать данной программой дистрибутивы Linux. Они не загружаются.

Источник: https://pkgs.org/ubuntu-16.04/webupd8-amd64/winusb_1.0.11.1+git20160722-1~webupd8~xenial0_amd64.deb.html

Удачи.