Настройка хоста
Для начала правим файл настроек 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