OpenVPN setup

To check client’s service status on the rig when you upload config and it’s not working

systemctl status openvpn@client
journalctl -u openvpn@client -e --no-pager -n 100

Just to give you a valid example of my working config
/etc/openvpn/server.conf

port 1194
proto udp
dev tun
ca ca.crt
cert myservername.crt
key myservername.key
dh dh2048.pem
topology subnet
server 10.4.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
client-config-dir ccd
client-to-client
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
log         openvpn.log
verb 3

And the most important client.conf. It should go with certificates files.

client
dev tun
proto udp
remote mysupermegaserver.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
remote-cert-tls server
comp-lzo
verb 3

Please note that in config certificates should be named as in the example:
ca ca.crt
cert client.crt
key client.key
You can upload files with any names, but then will be renamed to ca.crt, client.crt, client.key. In this way you will have 1 config for all rigs.


Also you can embed your certificates into one file, to client.conf so you file will look like this

client
dev tun
proto udp
remote mysupermegaserver.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
comp-lzo
verb 3

#No need for file names, comment or delete them
#ca ca.crt
#cert client.crt
#key client.key


<ca>
-----BEGIN CERTIFICATE-----
***Paste CA Cert Text Here***
 
-----END CERTIFICATE-----
</ca>

<cert>
-----BEGIN CERTIFICATE-----
***Paste Your Cert Text Here***
 
-----END CERTIFICATE-----
</cert>

<key>
-----BEGIN PRIVATE KEY-----
***Paste Your Cert Private Key Here***
 
-----END PRIVATE KEY-----
</key>

Also if you want TLS Auth then you can embed that key in this way

key-direction 1

<tls-auth>
-----BEGIN OpenVPN Static key V1-----
...tls key...
-----END OpenVPN Static key V1-----
</tls-auth>


“auth-user-pass” is now supported also. So just put this option in client config and upload it with giving login and password in upload dialog.

1 Like

– reserved –

Hello, first of all thank you for your work.
Could you explain detailed how to remote control a rig?
I’m using one in a different network, so I need to remote access when I reboot.

Хочу поделиться как я устанавливал VPN на свои фермы и дать пару хороших советов в этом непростом деле.

DimaFern в своем видео говорит мол вы делайте всё по мануалу, я вот по этому мануалу делал, всё получилось: https://help.ubuntu.com/lts/serverguide/openvpn.html
Начал я делать всё по мануалу, генерировал сертификаты, сертификаты центра сертификации, ключи от сертификатов, сертификаты от ключей, сертификаты сервера, сертификаты клиента, сертификаты tls, сертификаты диффи-хелмана, копировал это всё туда-сюда. По дороге я начал примерно понимать как эта кухня устроена. Но VPN не поднимался. Примерно через 10 часов я уже понял что к чему, в седьмой раз просмотрел видео, и осознал очень важную вещь:

Ферма - это НЕ СЕРВЕР! Ферма - это КЛИЕНТ!!!

Сорри что кричу, но в тот момент я именно прокричал эту мысль. Поднимать сервер на ферме оказывается не нужно, он там итак уже работает. Начал я инсталить VPN сервер на windows. Названия процессов типа easy setup и easy rsa уже перестали вызывать ухмылку “да какое ж это изи, если тут куча бат-файлов, которыми надо создать ручками кучу сертификатов и ключей, перед эти прочитав килобайты мелкого текста на английском”. Ну ниче, через пару часов я поднял GUI который непонятно почему так назвали, и подключил одну ферму к моему компу. Ура. Ферма находится в соседней комнате, в одной сети. Но, естественно, те фермы, которые за роутером в другом конце города, коннектиться просто так не захотели. Стал я думать как пробросить порты или еще как-то потанцевать с бубном, но тут меня осенила вторая очень умная мысль:

Надо поднять vpn сервер НА РОУТЕРЕ!!!

Роутер у меня Asus. Имея 15-часовой опыт ковыряния vpn под двумя операционками, я настроил vpn сервер на роутере за 5 минут. Роутер сгенерировал один конфиг-файл, в котором оказались все необходимые сертификаты, ключи, dh, tls и прочая хрень, которуя я до этого генерил руками и вставлял в разные места руками. Этот один-единственный файл я залил на ферму через веб-интерфейс хайва и - о чудо - всё заработало! Причем этот же самый конфиг я залил в остальные фермы, как внутренние так и внешние, а также себе на комп, и все участники сети приконнектились вообще без проблем. Я не знал то ли мне смеяться то ли наоборот. Надеюсь эта инфа кому-то поможет.

Кстати, надо бы исправить следующий баг. Роутер назначает клиентам VPN адреса типа 10.8.0.2, и он их меняет довольно таки часто. Однако в хайве они не меняются. Комманды hello и systemctl restart openvpn@client не помогают - всё равно в веб-интерфейсе виден только первоначальный ip. Чтобы узнать реальный ip, приходится заходить на роутер и пытаться угадать кто есть кто.

Задайте каждому устройству персональный IP адрес и ваша проблема исчезнет.