# **OpenVPN в LXC контейнере внутри Proxmox**
###### tags: `OpenVPN` `Linux`
## Поднимаем контейнер с Debian
Отправляем запрос на обновление и поиск среди шаблонов LXC контейнеров Debian 10
```
pveam update
pveam available | grep debian-10-standard
```
система получит ответ
> system debian-10-standard_10.7-1_amd64.tar.gz
Качаем этот шаблон
`pveam download local debian-10-standard_10.7-1_amd64.tar.gz`
Задем поднимаем контейнер из шаблона (лично у меня после развёртывания через консоль, контейнер не запустился поэтому помимо этих строк добавлю инструкцию по GUI)
```bash=
pct create 101 local:vztmpl/debian-10-standard_10.7-1_amd64.tar.gz --unprivileged 1 -features nesting=1 --net0 name=eth0,bridge=vmbr0,firewall=1,ip=172.16.16.123/24,type=veth --storage local-lvm
```
В итоге должно получиться нечто подобное...

Возвращаемся в нашу консоль Proxmox
Редактируем параметры контейнера для того чтобы предоставить непревилигированному контейнеру права на создание интерфейсов
`nano /etc/pve/lxc/105.conf`
В случае если используется Proxmox < v7 lxc.cgroup2 необходимо заменить на lxc.cgroup
```
lxc.cgroup2.devices.allow: c 10:200 rwm
lxc.mount.entry: /dev/net dev/net none bind,create=dir
```
Нажмите Ctrl-X и ответьте "Y" для сохранения и нажмите Enter.
Чтобы ваш непривилегированный контейнер мог получить доступ к /dev/net/tun с вашего хоста, вам необходимо задать владельца, выполнив:
`chown 100000:100000 /dev/net/tun`
Запускаем контейнер, если ошибок нет должен завестись.
Следующей командой заходим в контейнер
```
pct start 105
pct enter 105
```
Проверяем права пользователя непривилигированного контейнера на директорию
`ls -l /dev/net/tun`
Ответ должен быть примерно таким
> crw-rw-rw- 1 root root 10, 200 Dec 22 12:26 /dev/net/tun
## Поднимаем OpenVPN
```
apt update
apt dist-upgrade
apt install openvpn git
```
:::info
Для базовой конфигурации можно использовать этот репозиторий https://github.com/Nyr/openvpn-install
:::
```
git clone https://github.com/Nyr/openvpn-install
cd openvpn-install
bash openvpn-install.sh
```
:::info
Далее необходимо следовать инструкции мастера, в итоге файл для подключения будет лежать в директории /root/ (например /root/client.ovpn)
:::
Проверяем работоспособность службы
```
systemctl | grep openvpn
ps aux | grep vpn
```
При правильной работе ожидаем такие выводы на каждую команду соответственно.
> openvpn-iptables.service loaded active exited openvpn-iptables.service
> openvpn-server@server.service loaded active running OpenVPN service for server
system-openvpn\x2dserver.slice loaded active active system-openvpn\x2dserver.slice
> nobody 136 0.0 1.3 11780 6844 ? Ss 14:41 0:00 /usr/sbin/openvpn --status /run/openvpn-server/status-server.log --status-version 2 --suppress-timestamps --config server.conf
:::success
:alien: Системный администратор
### Паламарчук Антон
:e-mail: Email: mrpalamarchuk93@gmail.com
:airplane: Telegram Channel [@ipraptor_blog](https://t.me/ipraptor_blog)
:incoming_envelope: Telegram [@IPraptor](https://t.me/IPraptor)**
:::