Заметки системного администратора

Настройка хоста

Для начала правим файл настроек LXC контейнера, вписав свои настройки ip адреса и шлюза:

sudo nano /var/lib/lxc/[container_name]/config

# Autostart
lxc.start.auto = 1
lxc.start.delay = 5

# Network configuration
   lxc.network.type = veth
   lxc.network.flags = up
   lxc.network.name = eth1
   lxc.network.link = br0
   lxc.network.ipv4 = XXX.XXX.XXX.XXX/24
   lxc.network.ipv4.gateway = XXX.XXX.XXX.XXX

# for openvpn
lxc.mount.entry = /dev/net dev/net none bind,create=dir
lxc.cgroup.devices.allow = c 10:200 rwm

#mount folder
lxc.mount.entry = /home/ /var/lib/lxc/[container_name]/rootfs/home/ none bind 0 0

Настройка контейнера

Подхватываем переменные из рутовой машины:

/bin/su

Выставим наш часовой пояс:

dpkg-reconfigure tzdata

Устанавливаем curl и nano:

apt-get install curl wget nano

Качаем скрипт установки openvpn и делаем его исполняемым:

curl -O https://raw.githubusercontent.com/Angristan/openvpn-install/master/openvpn-install.sh
chmod +x openvpn-install.sh

В случае недоступности на github, можно скачать локальную копию:

wget http://ruii.ru/scripts/openvpn-install.sh

Запускаем скрипт:

./openvpn-install.sh

В процесе установки:

  • Водим внешний ip
  • Отказываемся от использования ipv6
  • Выбираем custom порт
  • Выбираем TCP (Mikroitk не умеет работать с UDP ovpn)
  • Выбираем какие DNS сервера использовать клиенту
  • Отказываемся от использования компрессии (Mikrotik не работает с компрессией)
  • Customize encryption settings? отвечаем Yes (Важно!)
  • Выбираем AES-256-CBC
  • RSA
  • 2048 bits
  • ECDHE-RSA-AES-128-GCM-SHA256
  • Выбираем DH (Важно!)
  • 2048 bits (Можно и больше, но времени на генерацию уйдёт больше)
  • SHA-256
  • Выбираем tls-auth (Важно!)
  • Вводим имя пользователя
  • Выбираем Add a passwordless client
  • Файл ovpn клиента сохраняется в домашней папке пользователя

После установки меняем конфиг сервера под микротик, вписав подсеть для клиентов:

nano /etc/openvpn/server.conf

port 12375
proto tcp
dev tun
user nobody
group nogroup
persist-key
persist-tun
keepalive 10 120
client-to-client
client-config-dir /etc/openvpn/client/
topology subnet
server XXX.XXX.XXX.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "dhcp-option DNS 77.88.8.8"
push "redirect-gateway def1 bypass-dhcp"
dh dh.pem
#tls-auth tls-auth.key 0
crl-verify crl.pem
ca ca.crt
cert server_n6k2pkZrAtbDZA6v.crt
key server_n6k2pkZrAtbDZA6v.key
auth SHA1
cipher AES-256-CBC
ncp-ciphers AES-256-CBC
#tls-server
#tls-version-min 1.2
#tls-cipher TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256
status /var/log/openvpn/status.log
verb 3
management localhost 7777

Меняем шаблон клиента, вписав ваш внешний адрес:

nano /etc/openvpn/client-template.txt

client
proto tcp-client
remote XXX.XXX.XXX.XXX 12375
dev tun
resolv-retry infinite
nobind
persist-key
persist-tun
#remote-cert-tls server
verify-x509-name server_n6k2pkZrAtbDZA6v name
auth SHA1
auth-nocache
cipher AES-256-CBC
#tls-client
#tls-version-min 1.2
#tls-cipher TLS-ECDHE-RSA-WITH-AES-128-GCM-SHA256
setenv opt block-outside-dns # Prevent Windows 10 DNS leak
verb 3

Для выдачи статического адреса и маршрута клиенту создаем файл:

nano /etc/openvpn/client/[ClientNAME]

ifconfig-push 10.10.50.120 255.255.255.0
push "route 10.10.50.0 255.255.255.0"

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

service openvpn restart

Посмотреть онлайн пользователей можно командой:

cat /var/log/openvpn/status.log

Скачиваем ovpn файл из папки home, которая была примонтирована с хостовой машины.

Настройка Mikrotik

  • Передаём ovpn файл в mikrotik.
  • Переходим в меню: system => certificates, нажимаем кнопку import выбираем наш ovpn файл, нажимаем кнопку import
  • В меню PPP нажимаем плюсик ovpn client, на вкладке Dial Out вводим внешний ip адрес сервера, порт, имя пользователя, выбираем импортированный сертификат (помеченый KT), выставляем  Auth: SHA1 и Cipher: AES256