Web интерфейс для openvpn

Step 6 — Configuring OpenVPN Routing Config and DNS

By default OpenVPN isn’t configured to tell the client to route Internet traffic through the VPN. We’ll make sure it does route traffic through OpenVPN by uncommenting some lines in :

Locate and uncomment these three lines:

The preset DNS servers are for OpenDNS but you can set them to whatever DNS you like (such as Google DNS with and ).

Optional settings:

You may also allow clients to directly communicate with each other’s IPs by uncommenting:

If, as mentioned earlier, you want to use the same keys and certificates for multiple clients (which is slightly less secure) uncomment this line:

Compression can be enabled and disabled with this line:

Your cipher can be set manually by uncommenting one of these lines:

Additional ciphers are also available, such as .

Настройка клиентов

Инструкции по настройке клиентов для OpenVPN для разных устройств и систем вы можете найти в сети. В большинстве случаев достаточно установить клиент и импортировать файл конфигурации.

Для примера, ниже рассмотрим настройку клиентов на компьютере с системами Windows и MacOS.

Windows

  1. После установки скопируйте полученный файл конфигурации в папку .
  2. Запустите OpenVPN. Это необходимо сделать от имени администратора: кликните на значке правой кнопкой и выберите «Запуск от имени администратора». Чтобы OpenVPN всегда по умолчанию запускался от имени администратора, кликните на его значке правой кнопкой и выберите Свойства. На вкладке «Совместимость» отметьте пункт «Выполнять эту программу от имени администратора» и сохраните. 
  3. В появившемся при запуске окне с предупреждением (разрешить программе внести изменения) нажмите «Да.»
  4. Кликните правой кнопкой мыши на значке OpenVPN в трее, выберите загруженный профиль и нажмите Connect / Подключиться.

Откроется окно с логом соединения, и, как только соединение будет установлено, появится соответствующее уведомление.

Для отключения снова кликните на значок OpenVPN в трее, выберите нужный профиль и нажмите Disconnect / Отключиться.

MacOS

  1. Для MacOS можно использовать бесплатный клиент Tunnelblick.
  2. Дважды кликните на загруженном файле и пройдите процесс установки.
  3. При завершении установки выберите «Нет» в ответ на вопрос о наличии конфигурационных файлов.
  4. После завершения установке откройте Finder и кликните дважды на вашем конфигурационном файле. Tunnelblick автоматически установит профиль.

Для установки соединения запустите Tunnelblick, после чего кликните на его иконку в верхней части экрана и нажмите Connect. Далее выберите установленный профиль.

Схема сети для первого VPN-примера

У нас сеть домашний компьютер на Windows 10 x64, на нем развернута виртуалка на Debian 8, которая будет использоваться в качестве файлового хранилища, и рабочий ноутбук на Windows 10. Мы хотим с рабочего ноутбука подключиться к домашнему компьютеру и иметь доступ ко всем локальным ресурсам домашней сети.

На маршрутизаторе мы имеем внешний адрес 87.215.46.32, внутренний адрес 192.168.1.1. на домашнем компе мы имеем внутренний адрес 192.168.1.2, а также 192.168.94.2 для подсети VMWare. На виртуальном компе мы имеем адрес 192.168.94.110 и именно этот адрес нам понадобится для удаленного доступа к серверу. В качестве VPN подсети я выбрал 10.10.20.0 с префиксом /24 (маска 255.255.255.0):

Теперь давайте приступим к настройке.

Step 8 — Configuring Client File

On the server we’ll create the configuration file for each client.

First, create a folder to work in:

Make the client name we set earlier while generating certificates. (It doesn’t matter precisely how you set this since it is only a working directory.)

Move to the new directory:

Copy in the client key and certificate we generated with , and the sample file. Make sure you replace the with the name you used earlier for the and files:

Again, was what we used earlier.

Edit the file:

Update the line to include your Droplet’s IP address (which can be obtained with ) and the port number; is the default:

Now a bit of housekeeping; we will be embedding the certificates and key in the single configuration file. This makes it easier to transfer to individual clients. Alternately, you can download the configuration file and the key and two certificate files to the client separately.

In the same file, comment out the certificate and key file names:

Save your changes.

Finally, we need to embed the , and files in the configuration file. You can copy and paste the contents in using or or whatever you’re most comfortable with, and the appropriate variables for OpenVPN, or you can use the one-line script shown below.

Run this script and enter your when prompted. The script appends your certificate and key files to the file, with appropriate variable names and newlines that OpenVPN is expecting:

Make sure you scroll all the way to the right, since this is a long command.

Take a look at the finished file with or . You should see the key and certificates added to the file at the bottom.

You’re done! All that needs to be done now is to distribute the file to your client. Most clients prefer the extension to , so you will want to rename the file locally to or something similar.

Repeat this section for each client. Use separate certificates by default, or use the same client certificate on each client if you prefer.

Conclusion and Client Setup

You should now have a working OpenVPN server!

Download the client configuration file you created in the last step () to your local machine. Use a secure method to download the file, such as SCP or SFTP.

Also on your local machine, install an OpenVPN client. Tunnelblick works well on Mac OS X, and OpenVPN has a Windows client.

Make sure your client configuration file is named as expected; this is usually a name like .

Double-click the file or move it to your client’s expected directory.

Start your client and connect to the appropriate OpenVPN server.

To ensure your VPN is working, use an IP address checker such as http://www.whatismyip.com/. Your IP shown should match your OpenVPN server’s IP.

Congratulations! You’ve connected to your new OpenVPN server.

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

Переходим в папку C:\Program Files\OpenVPN\config-auto (или для старой версии C:\Program Files\OpenVPN\config) и создаем файл server.ovpn. Открываем его на редактирование и приводим к следующему виду:

port 443
proto udp
dev tun
dev-node «VPN Server»
dh «C:\\Program Files\\OpenVPN\\ssl\\dh.pem»
ca «C:\\Program Files\\OpenVPN\\ssl\\ca.crt»
cert «C:\\Program Files\\OpenVPN\\ssl\\cert.crt»
key «C:\\Program Files\\OpenVPN\\ssl\\cert.key»
server 172.16.10.0 255.255.255.0
max-clients 32
keepalive 10 120
client-to-client
compress
ncp-disable
fast-io
cipher AES-256-CBC
persist-key
persist-tun
status «C:\\Program Files\\OpenVPN\\log\\status.log»
log «C:\\Program Files\\OpenVPN\\log\\openvpn.log»
verb 4
mute 20

* где port — сетевой порт (443 позволит избежать проблем при использовании Интернета в общественных местах, но может быть любым из свободных, например 1194, занятые порты в Windows можно посмотреть командой netstat -a); dev-node — название сетевого интерфейса; server — подсеть, в которой будут работать как сам сервер, так и подключенные к нему клиенты.
** так как в некоторых путях есть пробелы, параметр заносится в кавычках.
*** при использовании другого порта необходимо проверить, что он открыт в брандмауэре или на время тестирования отключить его.

В сетевых подключениях Windows открываем управление адаптерами — TAP-адаптер переименовываем в «VPN Server» (как у нас указано в конфигурационном файле, разделе dev-node):

Теперь открываем службы Windows и находим «OpenVpnService». Открываем ее, настраиваем на автозапуск и включаем:

Ранее переименованный сетевой интерфейс должен включиться:

VPN-сервер работает. Проверьте, что сетевой адаптер VPN Server получил IP 172.16.10.1. Если он получает что-то, на подобие, 169.254…, выключаем сетевой адаптер — перезапускаем службу OpenVpnService и снова включаем сетевой адаптер.

Configure OpenVPN Server

Edit the server configuration file such that it looks the below without comments;

vim /usr/local/etc/openvpn/server/server.conf
port 1194
proto udp
dev tun
ca /usr/local/etc/openvpn/server/ca.crt
cert /usr/local/etc/openvpn/server/issued/server.crt
key /usr/local/etc/openvpn/server/private/server.key
dh /usr/local/etc/openvpn/server/dh.pem
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
keepalive 10 120
tls-auth ta.key 0 # This file is secret
cipher AES-256-CBC
comp-lzo
user nobody
group nobody
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log-append  /var/log/openvpn/openvpn.log
verb 3
explicit-exit-notify 1
auth sha512
remote-cert-tls client

Create the log directory;

mkdir /var/log/openvpn/

Configure Routing

Run the command below to configure IPv4 NAT routing. This enables the firewall which is needed for

cat << EOF >> /etc/rc.conf
firewall_enable="YES"
firewall_type="open"
gateway_enable="YES"
natd_enable="YES"
natd_interface="em1"
natd_flags="-dynamic -m"
EOF

Reboot the server to effect the changes made above.

reboot

Start and set OpenVPN start on boot.

sysrc openvpn_enable=YES
sysrc openvpn_configfile="/usr/local/etc/openvpn/server/server.conf"
service openvpn start

Verify that OpenVPN is running and listening on UDP port 1194.

sockstat -4 -l | grep 1194
nobody   openvpn    2824  6  udp46  *:1194                *:*

Verify that the interface has been created.

ifconfig
...
tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> metric 0 mtu 1500
	options=80000<LINKSTATE>
	inet6 fe80::a00:27ff:fe06:ec18%tun0 prefixlen 64 tentative scopeid 0x4 
	inet 10.8.0.1 --> 10.8.0.2 netmask 0xffffff00 
	groups: tun 
	nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
	Opened by PID 2824

Схема сети для второго примера VPN

У нас сеть домашний компьютер на Windows 10 x64, на нем развернута виртуалка на Debian 8, которая будет использоваться в качестве файлового хранилища, еще одна виртуалка, которая будет выступать VPN сервером, и рабочий ноутбук на Windows 10. Мы хотим с рабочего ноутбука подключиться к VPN серверу и иметь доступ ко всем локальным ресурсам домашней сети.

На маршрутизаторе мы имеем внешний адрес 87.215.46.32, внутренний адрес 192.168.1.1. на домашнем компе мы имеем внутренний адрес 192.168.1.2, а также 192.168.94.2 для подсети VMWare.

На виртуальном клиенте мы имеем адрес 192.168.94.110 и именно этот адрес нам понадобится для удаленного доступа к нему. На виртуальном VPN сервере мы имеем адрес 192.168.94.100. В качестве VPN подсети я выбрал всю ту же 10.10.20.0 с префиксом /24 (маска 255.255.255.0).

Собственно, теперь перейдем к настройке этого примера.

Создание конфигураций клиентов

Создание базовой конфигурации

1. В домашней директории создайте каталог для хранения файлов:

mkdir -p ~/client-configs/files
chmod 700 ~/client-configs/files

2. Скопируйте файл с примером конфигурации в этот каталог:

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf

3. Откройте этот файл в текстовом редакторе и внесите изменения:

nano ~/client-configs/base.conf

3.1. Найдите директиву , которая сообщает клиенту адрес сервера OpenVPN. Укажите здесь IP-адрес вашего VDS-сервера:

remote IP_адрес_сервера 1194

3.2. Раскомментируйте директивы user и group, удаляя “;”:

user nobody
group nogroup

3.3. Найдите директивы ca, cert и key и закомментируйте их, добавив #:

3.4. Добавьте настройки и с такими же значениями, как в файле , а также директиву  со значением 1.

cipher AES-128-CBC
auth SHA256
key-direction 1

3.5. Добавьте следующие закомментированные строки, которые будут необходимы для клиентов на Linux, использующих файл /etc/openvpn/update-resolv-conf. Для таких клиентов потребуется раскомментировать эти строки в сгенерированном клиентском файле конфигурации OpenVPN.

# script-security 2
# up /etc/openvpn/update-resolv-conf
# down /etc/openvpn/update-resolv-conf

Сохраните и закройте файл.

Скрипт для генерации конфигов

Далее необходимо создать скрипт, который будет генерировать файлы конфигурации с сертификатами, ключами и файлами шифрования и размещать их в директории .

1. Создайте и откройте файл внутри директории :

nano ~/client-configs/make_config.sh

2. Вставьте в него следующий блок директив:

#!/bin/bash

# First argument: Client identifier

KEY_DIR=~/openvpn-ca/keys
OUTPUT_DIR=~/client-configs/files
BASE_CONFIG=~/client-configs/base.conf

cat ${BASE_CONFIG} \
    <(echo -e '<ca>') \
    ${KEY_DIR}/ca.crt \
    <(echo -e '</ca>\n<cert>') \
    ${KEY_DIR}/${1}.crt \
    <(echo -e '</cert>\n<key>') \
    ${KEY_DIR}/${1}.key \
    <(echo -e '</key>\n<tls-auth>') \
    ${KEY_DIR}/ta.key \
    <(echo -e '</tls-auth>') \
    > ${OUTPUT_DIR}/${1}.ovpn

3. Сохраните и закройте файл.

4. Сделайте его исполняемым:

chmod 700 ~/client-configs/make_config.sh

Создание конфигураций

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

Для создания первого сертификата и ключа мы будем использовать параметр cserver1. 

Для создания файлов без пароля (это облегчит автоматические соединения), используйте команду build-key:

cd ~/openvpn-ca
source vars
./build-key cserver1

В процессе создания файлов нажимайте Enter для подтверждения (все необходимые значения уже введены). Не задавайте challenge password. При завершении процесса дважды укажите y в ответ на запросы о подписи и подтверждении создания сертификата.

Сгенерируйте конфигурацию для этих файлов. Для этого перейдите в директорию  и воспользуйтесь созданным скриптом:

cd ~/client-configs
./make_config.sh cserver1

Если всё прошло успешно, в директории будет создан файл :

Этот файл необходимо передать соответствующему клиенту. Скачать конфигурацию можно по SFTP.

Generating certificates for clients

In this step we will create certificates for our clients.

In order to create a certificate for a client execute the command
below (note that you need the vars files source already):

In order to create certificates for all clients that you will have,
just execute the above command for each client that will be connecting
to your OpenVPN server.

Keep in mind that each client certificate you create, needs to have a
unique Common Name (CN).

Once you’ve created certificates for all your clients, you need to
copy the client certificates to the /usr/local/etc/openvpn/keys
directory.

The next thing to do is to provide the generated certificates to the
clients. Please use a secure connection to do that, and do not just
send them over the Internet.

  • ca.crt
  • client.crt
  • client.key

When you are ready with all that you may execute the clean-all
script to clean-up the files in the
/usr/local/etc/openvpn/easy-rsa/2.0/keys directory.

Установка OpenVPN в Linux

Я использую CentOS, поэтому могу описать установку именно для этого Linux.

Как и везде, скачать пакет и установить не есть гуд, т.к. его будет труднее обновлять. А т.к. «» выдаст фиг, надо нам подключить репозиторий.

Вариант 1 — попробовать поставить репозиторий с самого openvpn.net:

# cd /etc/yum.repos.d
# wget http://repos.openvpn.net/repos/yum/conf/repos.openvpn.net-CentOS6-snapshots.repo
# yum install openvpn

Эти команды см. в файле http://repos.openvpn.net/repos/yum/conf/repos.openvpn.net-CentOS6-snapshots.txt.

Скоре всего, это у вас не прокатит :)

Вариант 2 — репозиторий RPMForge

Для i386:

# rpm  -Uhv http://apt.sw.be/redhat/el5/en/i386/rpmforge/RPMS/rpmforge-release-0.5.1-1.el5.rf.i386.rpm

Для x86_64:

# rpm  -Uhv http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.1-1.el5.rf.x86_64.rpm

Установка ключа

# rpm –import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt

Проверим, чего наставили:

# yum repolist

Особо не увлекайтесь всякими репозиториями :) Чем меньше их, тем лучше.

Вариант 3 — сложные случаи — попробуйте посмотреть http://pkgs.org/search/?keyword=openvpn.

Итак, чтобы вы ни делали, вы должны успешно выполнить команду:

# yum install openvpn
Installed:
  openvpn.i386 0:2.3-3
Dependency Installed:
  pkcs11-helper.i686 0:1.08-1.el6.rf
Complete!

Установка OpenVPN

Подготовка

Установка OpenVPN на Ubuntu 18.04 начинается с установки пакетов OpenVPN и Easy-rsa из репозитория. Утилита Easy-rsa необходима для управления ключами и сертификатами.

Перед инсталляцией необходимо обновить список пакетов:

sudo apt update

Теперь нужно выполнить установку OpenVPN и Easy–rsa:

sudo apt install openvpn easy-rsa

Также в процессе работы пригодится пакет NetTOOLS, включающий в себя все необходимые сетевые инструменты. Установка выполняется командой:

sudo apt install net-tools

Настройка центра сертификации

Настройка сервера OpenVPN на Ubuntu начинается с установки центра сертификации и создания корневого сертификата:

sudo cp -R /usr/share/easy-rsa /etc/openvpn/
cd /etc/openvpn/easy-rsa 	
export EASYRSA=$(pwd)	
sudo ./easyrsa init-pki	
sudo ./easyrsa build-ca

При выполнении последней команды программа попросит пользователя придумать пароль. Созданный код доступа будет использоваться в последующих действиях для подписи сертификатов и ключей.

В результате создаются файлы:

  • /etc/openvpn/easy-rsa/pki/ca.crt – сертификат CA. Он необходим клиентам и серверу для проверки подписи CA.
  • /etc/openvpn/easy-rsa/pki/private/ca.key – приватный ключ CA.

Для удобства нужно создать каталог, в котором будут храниться все необходимые сертификаты и ключи OpenVPN:

mkdir /etc/openvpn/certs/

Теперь необходимо скопировать корневой сертификат OpenVPN в созданную папку:

cp /etc/openvpn/easy-rsa/pki/ca.crt /etc/openvpn/certs/ca.crt

Ключи OpenVPN для сервера

Генерация ключей для сервера OpenVPN выполняется следующей командой:

./easyrsa gen-req server nopass

Далее созданный сертификат подписывается ключом CA:

./easyrsa sign-req server server

Появится предупреждение с запросом подтвердить подпись. Нужно написать «yes» и ввести пароль центра сертификации.

Созданные файлы копируются в каталог для сертификатов:

cp /etc/openvpn/easy-rsa/pki/issued/server.crt /etc/openvpn/certs/
cp /etc/openvpn/easy-rsa/pki/private/server.key /etc/openvpn/certs/

Теперь нужно создать файл параметров Diffie–Hellman:

openssl dhparam -out /etc/openvpn/certs/dh2048.pem 2048

Последним создаётся ключ HMAC (hash-based message authentication code):

openvpn --genkey --secret /etc/openvpn/certs/ta.key

Теперь в папке, созданной для хранения сертификатов, должно быть 5 файлов. Проверить их наличие можно командой:

ls -l /etc/openvpn/certs/

Создание ключей клиентов OpenVPN

Сгенерировать ключи и выполнить их подпись можно следующей командой:

./easyrsa gen-req client1 nopass
./easyrsa sign-req client client1

На вопрос о намерении подписать нужно ответить «yes» и ввести пароль CA.

Самые читаемые статьи

  • Первоначальная настройка Cisco Catalyst — прочитано 310 135 раз(а)
  • Multicast и Unicast вещание с помощью VLC media player (vlc multicast and unicast stream) — прочитано 220 516 раз(а)
  • Добавление, просмотр, удаление статического маршрута в ОС FreeBSD, Linux, Windows — прочитано 203 845 раз(а)
  • Теория и настройка DNS сервера (bind) на FreeBSD — прочитано 140 463 раз(а)
  • Объекты БД RIPE (ripe.net): mntner, as-set, aut-num, route, inetnum, person, domain, role — прочитано 137 287 раз(а)
  • Asterisk: автообзвон (auto-dial out) и обратный звонок (callback) с использованием AGI — прочитано 96 841 раз(а)
  • Настраиваем PPPoE server на FreeBSD используя порт MPD5 — прочитано 80 224 раз(а)
  • Отправка и прием SMS через GSM шлюз — прочитано 74 141 раз(а)
  • Настраиваем vlan на FreeBSD — прочитано 68 746 раз(а)
  • Настройка протокола BGP на оборудовании Cisco Systems — прочитано 68 714 раз(а)

Настройка OpenVPN сервера

Для начала создадим директорию где будут храниться файлы конфигурации и ключи нашего будущего сервера.

# mkdir /usr/local/etc/openvpn

Копируем туда пример файла конфигурации сервера server.conf:

# cp /usr/local/share/examples/openvpn/sample-config-files/server.conf  /usr/local/etc/openvpn/server.conf

и каталог с файлами Easy-RSA:

# cp -r /usr/local/share/easy-rsa /usr/local/etc/openvpn/easy-rsa

Вот теперь начинается самое интересное. Для генерации ключей переходим в только что созданный каталог:

# cd /usr/local/etc/openvpn/easy-rsa

в котором нас ожидает совсем не то что было раньше:

# ls
easyrsa.real		openssl-1.0.cnf.example	vars.example
openssl-1.0.cnf		vars			x509-types

Правим конфигурационный файл Easy-RSA

Тут нам нужно заполнить необходимые поля о нашей организации, городе и прочее. Просто расскомментируйте требуемые поля и внесите изменения. Ничего нового пока нет.

set_var EASYRSA_REQ_COUNTRY     "<COUNTRY>"
set_var EASYRSA_REQ_PROVINCE    "<PROVINCE>"
set_var EASYRSA_REQ_CITY        "<CITY>"
set_var EASYRSA_REQ_ORG         "<ORGANIZATION>"
set_var EASYRSA_REQ_EMAIL       "<EMAIL>"
set_var EASYRSA_REQ_OU          "<ORGANIZATIONAL UNIT>"

Генерация ключей

Вот тут принципиальное отличие. Теперь ключи генерируются одним единственным shell-скриптом easyrsa.real

Посмотреть все возможные команды нового скрипта easy-rsa можно так:

./easyrsa.real help
init-pki
  build-ca 
  gen-dh
  gen-req <filename_base> 
  sign-req <type> <filename_base>
  build-client-full <filename_base> 
  build-server-full <filename_base> 
  revoke <filename_base>
  gen-crl
  update-db
  show-req <filename_base> 
  show-cert <filename_base> 
  import-req <request_file_path> <short_basename>
  export-p7 <filename_base> 
  export-p12 <filename_base> 
  set-rsa-pass <filename_base> 
  set-ec-pass <filename_base> 

Для более детального ознакомления с отдельными командами и опциями следует ввести:

# ./easyrsa help COMMAND
# ./easyrsa help options

Создаем инфраструктуру публичного ключа (Public Key Infrastructure)

# ./easyrsa.real init-pki

Этой команда выполняется один раз, создавая структуру каталогов для будущих ключей /usr/local/etc/openvpn/easy-rsa/pki

Создание Certificate Authority

# ./easyrsa.real build-ca nopass

Опция “nopass” указывает что пароль при запуске не требуется, но помните что ключи в таком случае должны быть тщательно защищены.

Создание сертификата сервера (Server Certificate)

# ./easyrsa.real build-server-full openvpn-server nopass

посмотреть созданный ключ можно командой:

# ./easyrsa.real show-cert openvpn-server

Создание сертификатов клиентов (Client Certificate)

# ./easyrsa.real build-client-full client_name nopass

Генерация Diffie Hellman Parameters

# ./easyrsa.real gen-dh

Прописываем ключи OpenVPN серверу

Создадим специальный каталог, откуда openvp-cервер будет брать нужные ключи для авторизации:

# mkdir /usr/local/etc/openvpn/keys
# cp pki/dh.pem \
           pki/ca.crt \
           pki/issued/openvpn-server.crt \
           pki/private/openvpn-server.key \
           /usr/local/etc/openvpn/keys

Туда же скопируем файлы ключей наших пользователей из каталогов:

pki/issued/<client_name>.crt
pki/private/<client_name>.key

Собственно, дальнейшая настройка аналогична старому варианту, сам конфигуционный файл openvpn-сервера не претерпел каких-то особых изменений и предыдущая статья о настройке в этом плане актуальна.

Небольшое дополнение. Для автоматического поднятия интерфейса tap0 нужно в конце rc.conf добавить строчку:

ifconfig_tap0="up"

Подписывайтесь на канал и узнавайте первыми о новых материалах, опубликованных на сайте.

Если считаете статью полезной,не ленитесь ставить лайки и делиться с друзьями.

Сборка ядра FreeBSD. Если что-то пошло не так…Принудительная отправка deferred почты в PostfixНастройка почтового веб-интерфейса RoundCuberead (subshell_pty…): No such file or directory (2)Самый «нестыдный» LINUXУстановка OpenMediaVault на компьютер с единственным жёстким диском

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: