«Установка и настройка OpenVPN на Debian 8» и «MySql»: разница между страницами

Материал из support.qbpro.ru
(Различия между страницами)
imported>Supportadmin
 
imported>Vix
Нет описания правки
 
Строка 1: Строка 1:
===Генерация сертификатов===
==Help MySql==
* Список пользователей:
SELECT USER from mysql.user;
* Создание пользователя:
CREATE USER 'user'@'localhost' IDENTIFIED BY 'secret';
* Удаление пользователя:
DROP USER user@localhost;
* Предоставить права пользователю:
GRANT ALL PRIVILEGES ON dbname.* TO 'user'@'localhost';
* Предоставить супер права пользователю:
GRANT ALL PRIVILEGES ON dbname.* TO 'user'@'localhost' WITH GRANT OPTION;
* Права равные root для работы через phpmyadmin
GRANT ALL PRIVILEGES ON  *.* TO 'user'@'%' REQUIRE NONE WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;


'''Генерация сертификатов как [http://support.qbpro.ru/index.php?title=Debian_squeeze_open-vpn здесь].'''
==Настройка PhpMyAdmin==
===Подключить репозитории OpenVPN===
Процедура «переподключения» phpMyAdmin на работу с внешним сервером достаточно проста, но вызывает вопросы у тех, кто занимается всем этим недавно или неглубоко.
'''Подключить [https://community.openvpn.net/openvpn/wiki/OpenvpnSoftwareRepos репозиторий] и у меня подключены бэк-порты.'''


''На всякий случай продублирую''
В данной статье мы рассмотрим несколько вариантов подключения phpMyAdmin ко внешнему серверу, так как задачи и условия у всех разные. В примере я использую сервер баз данных MariaDB, ОС Ubuntu и phpMyAdmin версии 4.5.4, что практически не важно, так как всё достаточно просто. PhpMyAdmin установлен на домашний ПК, но с тем же успехом он может быть настроен и на удалённом сервере. Имеется ввиду, что всё прикладное ПО, такое как непосредственно сам сервер БД, http-сервер и php у вас уже установлено.


<nowiki>
* Пример первый (доступ с паролем).
Using OpenVPN apt repositories
We maintain several OpenVPN (OSS) software repositories. To setup the repositories you need to change to the root user. Typically this is done using sudo:


$ sudo -s
Сервер баз данных расположен на машине с адресом 10.10.1.10. PhpMyAdmin устанавливаем на локальный ПК с адресом 10.10.1.20. Необходимо убедиться, что сервер баз данных принимает внешние соединения. Правим my.cnf (/etc/mysql/my.cnf). В строке bind-address по умолчанию указан адрес 127.0.0.1, что запрещает серверу принимать внешние соединения. Заменяем его на 0.0.0.0, что разрешит внешние соединения с любого адреса. В целях безопасности лучше уточнить адрес, если вы не планируете подключаться к серверу из разных источников. В этом примере будет использоваться строка следующего вида:
Then import the public GPG key that is used to sign the packages:


$ wget -O - https://swupdate.openvpn.net/repos/repo-public.gpg|apt-key add -
bind-address = 10.10.1.20
Next you need to create a sources.list fragment (as root) so that apt can find the new OpenVPN packages. One way to do it is this:


$ echo "deb http://build.openvpn.net/debian/openvpn/<version> <osrelease> main" > /etc/apt/sources.list.d/openvpn-aptrepo.list
Сохраняем и перезагружаем.
Where <version> can be one of


stable: stable releases only - no alphas, betas or RCs
sudo service mysql restart
testing: latest releases, including alphas/betas/RCs
release/2.3: OpenvPN 2.3 releases
release/2.4: OpenVPN 2.4 releases, including alphas/betas/RCs
and <osrelease> depends your distribution:


wheezy (Debian 7.x)
На ПК (или другой удалённый сервер) устанавливаем phpMyAdmin.
jessie (Debian 8.x)
precise (Ubuntu 12.04)
trusty (Ubuntu 14.04)
xenial (Ubuntu 16.04)
Examples:


$ echo "deb http://build.openvpn.net/debian/openvpn/testing jessie main" > /etc/apt/sources.list.d/openvpn-aptrepo.list
sudo apt install phpmyadmin
$ echo "deb http://build.openvpn.net/debian/openvpn/release/2.3 wheezy main" > /etc/apt/sources.list.d/openvpn-aptrepo.list
Now you're set for installing OpenVPN. Note that packages built for older operating system releases might work just fine on newer release of the same operating system.


Installing OpenVPN
В процессе установки отказываемся от конфигурации (конфигурировать нечего; сервер баз данных на удалённой машине).
On Debian/Ubuntu use


$ apt-get update && apt-get install openvpn</nowiki>
Далее правим конфигурационный файл phpMyAdmin config.inc.php (/etc/phpmyadmin/config.inc.php). Если это была свежая установка и на локальном хосте нет сервера баз данных, то удаляем все строки (кроме первой «<?php») и пишем следующее:


'''Обновить libssl, возможно не критично, но это ssl :D'''
/* External Server #1 */
===Конфигурации сервера и клиента для двух интерфейсов tun и tap одновлеменно===
  $i++;
В Debian 8 существует особенность запуска двух и более конфигураций openvpn. Эта особенность в "любимом" systemd. При установке активируется '''openvpn@server.service'''. И '''''запускается только один конфигурационный файл и только с именем server.conf''''' (3 часа мозг ломали). Исправляется это деактивацией openvpn@server.service. Затем в каталоге /lib/systemd/system сделать копии файла openvpn@server.service и назвать их по именам конфигурационных файлов. В моём случае файлы конфигураций называются server_tap.conf и server_tun.conf по задействованным интерфейсам. Затем их активировать
  $cfg['Servers'][$i]['verbose'] = 'Server Name';
  $cfg['Servers'][$i]['host'] = '10.10.1.10';
  $cfg['Servers'][$i]['connect_type'] = 'tcp';
  $cfg['Servers'][$i]['extension'] = 'mysqli';
  $cfg['Servers'][$i]['auth_type'] = 'cookie';
  $cfg['Servers'][$i]['AllowNoPassword'] = false;


<nowiki>systemctl enable openvpn@server_tap.service
Вместо Server Name вписываем что угодно. Сохраняем и закрываем файл.
systemctl enable openvpn@server_tun.service</nowiki>


Это позволит управлять (start, stop, restart) интерфейсами по отдельность
==Конвертирование базы из postgresql в mysql==
* скачиваем [https://github.com/ChrisLundquist/pg2mysql pg2mysql]


Разница в интерфейсах:
git clone https://github.com/ChrisLundquist/pg2mysql.git
*tun выдает 4-х адресную сеть (/30) и по dhcp и настройках клиента тоже это учитывается, tap одна большая сеть
cd pg2mysql
*tun позволяет маршрутизацию
*для tun используется параметр server, для tap - ifconfig
*tun - L3 интерфейс, tap - L2 интерфейс
* и много чего [https://openvpn.net/index.php/open-source/documentation/howto.html#policy], [https://sergeysl.ru/freebsd-openvpn-client-static-ip/,http://plangc.mybb.ru/viewtopic.php?id=83]


* сохраняем дамп из postgresql ('''пример сохранение всех таблиц для wordpress - wp*''')
sudo -u postgres pg_dump --quote-all-identifiers --no-acl --no-owner --table=wp_* --format p --data-only wordpress -f wordpress_pgsql.sql


'''ВНИМАНИЕ!!! Копия dh2048.pem с сервера или какая там у вас будет глубина шифрования на клиенте НЕ НУЖНА.'''
* конвертируем в формат mysql
php pg2mysql_cli.php worpress_pgsql.sql wordpress_mysql.sql


* теперь необходимо заменить все таблицы с `"public"."wp_*"` на 'wp_*` это можно сделать в редакторе по F4
* не забудьте исправить '''"` (''' на ''''('''
* теперь меняем sql команду с INSERT на REPLACE так же по F4
* все, дамп можно заливать в базу, предварительно создайте из wordpress начальную структуру таблиц через install и потом вносите данные.


На клиент положить только сертификат клиента и конфиг. Сертификат может быть с паролем, может быть без. Как сделаете (смотри картинки по генерации сертификатов внимательно). На клиенте тоже обновить версию openvpn до серверной (может и не надо но в 2.4.0 есть lz4 сжатие и работать будет только на 2.4.0 клиенте).  
'''ИСТОЧНИКИ'''
<hr>
* [http://www.opennet.ru/docs/RUS/mysqladm/userman.html Управление пользователями в MySQL]
* [https://proft.me/2011/07/19/mysql-poleznye-komandy-i-nastrojki/ mysql: полезные команды и настройки ]
* [https://www.newalive.net/190-upravlenie-vneshnimi-bazami-dannyh-cherez-phpmyadmin.html PhpMyAdmin]
<hr>
* [http://gahcep.github.io/blog/2013/03/11/linux-mysql-setup/ Правильная установка и настройка MySQL]
* [https://www.hostcms.ru/documentation/server/mysql/ Настройка MySQL]
* [http://linux.mixed-spb.ru/databases/mysql_setup.php Установка и первоначальная настройка MySQL в linux]
* [http://linux.cpms.ru/?p=180 Руководство по MySQL для начинающих]
* [http://cruw.blogspot.ru/2011/11/mysql.html Установка и настройка MySql]
* [https://firstwiki.ru/index.php/%D0%9A%D0%B0%D0%BA_%D0%B7%D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%B8%D1%82%D1%8C_%D0%B4%D0%B0%D0%BC%D0%BF_MySQL_%D0%B1%D0%B0%D0%B7%D1%8B_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_%D0%BA%D0%BE%D0%BD%D1%81%D0%BE%D0%BB%D1%8C Как загрузить дамп MySQL базы через консоль]
* [https://habr.com/post/105954/ MySQL шпаргалки]
* [https://www.newalive.net/190-upravlenie-vneshnimi-bazami-dannyh-cherez-phpmyadmin.html Управление внешними базами данных через phpMyAdmin]
* [https://geeksmagazine.org/post/7/kak-sozdat-polzovatelya-i-dat-emu-prava-v-mysql Как создать пользователя и дать ему права в MySQL]
* [https://andy-blog.ru/kak-sozdat-novogo-polzovatelya-mysql Как создать нового пользователя MySQL и настроить права доступа ]
* [https://ruhighload.com/%D0%9A%D0%B0%D0%BA+%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B8%D1%82%D1%8C+mysql+master-slave+%D1%80%D0%B5%D0%BF%D0%BB%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8E%3F Как настроить MySQL Master-Slave репликацию?]
* [https://server-gu.ru/mysql-replication-master-slave/ Настройка репликации MySQL MASTER SLAVE]
* [http://blog.anthonyaxenov.ru/2018/10/15/%D1%88%D0%BF%D0%B0%D1%80%D0%B3%D0%B0%D0%BB%D0%BA%D0%B0-master-slave-%D1%80%D0%B5%D0%BF%D0%BB%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F-mysql-5-7/ Шпаргалка: Master-slave репликация MySQL 5.7]


Для выдачи клиентам фиксированных постоянных ip, на сервере в каталогах /etc/openvpn/ccd или /etc/openvpn/ddc нужно создавать файлики по одному на клиента.
'''ПОЛЕЗНОЕ:'''
Имя файла должно совпадать с именем сертификата (при генерации (common name) или можно посмотреть в логах)
<hr>
 
* [https://www.8host.com/blog/replikaciya-baz-dannyx-mysql-po-tipu-master-slave/ Репликация баз данных MySQL по типу Master/Slave]
<nowiki>
/etc/openvpn/ccd/lopic.crt для tap интерфейса
 
ifconfig-push 10.8.0.13 255.255.255.0
push "route 10.7.0.0 255.255.255.0 10.8.0.1"
</nowiki>
 
 
<nowiki>
/etc/openvpn/ddc/lopic.crt для tun интерфейса
 
ifconfig-push 10.7.0.10 10.7.0.9
push "route 10.8.0.0 255.255.255.0 10.7.0.9"
</nowiki>
 
Для клиентов без явно указания ip будет выдан ip динамически.
 
Обратите внимание, что формат параметров в команде ifconfig-push для разных интерфейсов разный. Для tap - ip и маска сети. Шлюз по умолчанию первый ip в подсети. Для tun интерфейса ip клиента и ip шлюза для 30-й подсети (как задействовать еще два адреса из 4-х адресной сетки пока не ясно)
 
====/etc/openvpn/server_tap.conf====
 
<nowiki>
#указывает программе работать в режиме сервера
mode server
 
#активирует работу Transport Layer Security (криптографический протокол) сервера
tls-server
 
#программа будет работать в режиме демона, если нет в этом необходимости - просто раскомментируйте строку
daemon
 
#локальный ip или имя хоста, на котором будет работать OpenVPN. Актуально, если на локальной машине несколько адресов.
local 192.168.0.226
 
#указываем порт, по которому будет работать OpenVPN (обязательно поменять с 1194!!!)
port 1194
 
#выбираем протокол TCP (если необходим UDP, тогда: proto udp)
proto tcp-server
 
#используемый тип интерфейса - L2 туннель (для L3-туннеля: dev tun)
dev tap
 
#указываем файл с ключем сервера
pkcs12 /etc/openvpn/easy-rsa/keys/server-cert.p12
 
#указываем файл Диффи Хельман
dh /etc/openvpn/easy-rsa/keys/dh2048.pem
 
#задаем IP-адрес сервера и маску подсети
ifconfig 10.8.0.1 255.255.255.0
 
#Если нам лень со статикой заморачиваться
#server для tun интерфейсов
#server 10.8.0.0 255.255.255.0
#ifconfig-pool 10.8.0.5 10.8.0.254 255.255.255.0
 
#путь к каталогу индивидуальных клиентских конфигураций
client-config-dir /etc/openvpn/ccd
 
#Для назначения статических ip-адресов клиентов
#ifconfig-pool-persist ipp.txt
 
 
 
#push "dhcp-option DNS 10.8.0.1"
#push "dhcp-option DOMAIN net.local"
#push "dhcp-option DOMAIN-SEARCH net.local"
#push "redirect-gateway"
 
#пинг каждые 10 секунд для поддержания канала связ
keepalive 10 120
 
#Связь между клиентами
client-to-client
 
push "route 10.8.0.0 255.255.255.0"
 
# включаем шифрацию пакетов
cipher BF-CBC
 
# сжатие трафика
comp-lzo
 
# максимум клиентов
max-clients 100
 
# Не перечитывать ключи после получения
# SIGUSR1 или ping-restart
persist-key
 
# Не закрывать и переоткрывать TUN\TAP
# устройство, после получения
# SIGUSR1 или ping-restart
persist-tun
 
# логгирование (не забудьте создать эту директорию /var/log/openvpn/)
status /var/log/openvpn/tap-status.log
log /var/log/openvpn/tap.log
 
# Уровень информации для отладки 0 - 11
verb 6
 
</nowiki>
 
====/etc/openvpn/server_tun.conf====
<nowiki>
mode server
tls-server
daemon
local 192.168.0.226
port 1194
 
# TCP or UDP server?
##;proto tcp
proto udp
 
##;dev tap
dev tun
 
#tun-mtu 1492
#указываем файл с ключем сервера
pkcs12 /etc/openvpn/easy-rsa/keys/server-cert.p12
 
#указываем файл Диффи Хельман
dh /etc/openvpn/easy-rsa/keys/dh2048.pem
 
## ipaddr server
server 10.7.0.0 255.255.255.0
 
 
 
#### clients ip
client-config-dir ddc
push "route 10.8.0.0 255.255.255.0 10.8.0.1"
push "route 10.7.0.0 255.255.255.0 10.7.0.1"
#push dhcp-option DNS 10.5.7.1
 
 
#push dhcp-option DOMAIN net.local
client-to-client
#########
#auth MD5
# включаем шифрацию пакетов
cipher BF-CBC
keepalive 10 120
 
# сжатие трафика
comp-lzo
 
# максимум клиентов
max-clients 100
 
# Не перечитывать ключи после получения
# SIGUSR1 или ping-restart
persist-key
 
# Не закрывать и переоткрывать TUN\TAP
# устройство, после получения
# SIGUSR1 или ping-restart
persist-tun
 
# логгирование (не забудьте создать эту дирректорию /var/log/openvpn/)
status /var/log/openvpn/tun-status.log
log /var/log/openvpn/tun.log
 
# Уровень информации для отладки
verb 6</nowiki>
 
 
====клиент Linux tap /etc/openvpn/client.conf====
 
<nowiki>
client
dev tap0
proto tcp-client
remote 192.168.0.226 1194
resolv-retry infinite
nobind
#user nobody
#group nobody
persist-key
persist-tun
pkcs12 lopic85.p12
ns-cert-type server
comp-lzo
status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log
verb 6
mute 20
auth-nocache
 
</nowiki>
 
====клиент Linux tun /etc/openvpn/client.conf====
<nowiki>
client
dev tun0
proto udp
remote 192.168.0.226 1194
resolv-retry infinite
nobind
#user nobody
#group nobody
persist-key
persist-tun
pkcs12 lopic85.p12
ns-cert-type server
comp-lzo
status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log
verb 6
mute 20
auth-nocache
 
</nowiki>
 
 
====клиент Windows c:\Program files\Openvpn\conf\client.ovpn====
 
Конфиг как на линукс клиенте кроме двух строк:
<nowiki>status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log</nowiki>
Их надо удалить. Лог пишется в папке C:\Users\Пользователь\Openvpn
 
===КОСТЫЛЬ №1 Присвоение постоянных ip клиентам openvpn 2.4.0===
После написания файла lopic.crt, и перезагрузки openvpn ip выдавался следующий после сервера 10.8.0.2, а не тот который прописан в lopic.crt
 
'''Нужно:'''
# '''ОСТАНОВИТЬ''' openvpn
# в файле /etc/openvpn/ipp.txt прописать в новой строке ''''''lopic,10.8.0.13''''''  (зяпятая между именем и ip без пробелов). lopic.crt уже должен быть
# запустить openvpn
 
UPD: Перед добавлением следующего клиента скопировать ipp.txt, потом остановить openvpn, вернуть ipp.txt, внести изменения в ipp.txt и потом запустить openvpn. Это точно фича, либо моя криворукость.
 
===КОСТЫЛЬ №2 Автостарт openvpn 2.4.0 в systemd===
Не знаю, баг это или фича, но на сервере сервисы  openvpn.service и openvpn@.service активны, загружены и исполнены, а интерфейса нет.
 
'''Как сдел я:'''
# /etc/scripts/ovpn_restart.sh
<nowiki>#!/bin/bash
sleep 10
systemctl restart openvpn
exit 0
</nowiki>
# /etc/systemd/system/ovpn.service
<nowiki>
[Unit]
Description=OpenVPN restart kostil
After=syslog.target network.target
After=openvpn.service
 
[Service]
Type=forking
ExecStart=/etc/scripts/ovpn_restart.sh
 
[Install]
WantedBy=multi-user.target</nowiki>
#systemctl enable ovpn.service
 
Конечно наколхозил, но работает :D
 
 
===Пропускная способность===
 
На HP procurve c 100Мбит/с интерфейсами через ssh прокачал 11.3 Мбайт/с

Версия от 03:46, 5 мая 2020

Help MySql

  • Список пользователей:
SELECT USER from mysql.user;
  • Создание пользователя:
CREATE USER 'user'@'localhost' IDENTIFIED BY 'secret';
  • Удаление пользователя:
DROP USER user@localhost;
  • Предоставить права пользователю:
GRANT ALL PRIVILEGES ON dbname.* TO 'user'@'localhost';
  • Предоставить супер права пользователю:
GRANT ALL PRIVILEGES ON dbname.* TO 'user'@'localhost' WITH GRANT OPTION;
  • Права равные root для работы через phpmyadmin
GRANT ALL PRIVILEGES ON  *.* TO 'user'@'%' REQUIRE NONE WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;

Настройка PhpMyAdmin

Процедура «переподключения» phpMyAdmin на работу с внешним сервером достаточно проста, но вызывает вопросы у тех, кто занимается всем этим недавно или неглубоко.

В данной статье мы рассмотрим несколько вариантов подключения phpMyAdmin ко внешнему серверу, так как задачи и условия у всех разные. В примере я использую сервер баз данных MariaDB, ОС Ubuntu и phpMyAdmin версии 4.5.4, что практически не важно, так как всё достаточно просто. PhpMyAdmin установлен на домашний ПК, но с тем же успехом он может быть настроен и на удалённом сервере. Имеется ввиду, что всё прикладное ПО, такое как непосредственно сам сервер БД, http-сервер и php у вас уже установлено.

  • Пример первый (доступ с паролем).

Сервер баз данных расположен на машине с адресом 10.10.1.10. PhpMyAdmin устанавливаем на локальный ПК с адресом 10.10.1.20. Необходимо убедиться, что сервер баз данных принимает внешние соединения. Правим my.cnf (/etc/mysql/my.cnf). В строке bind-address по умолчанию указан адрес 127.0.0.1, что запрещает серверу принимать внешние соединения. Заменяем его на 0.0.0.0, что разрешит внешние соединения с любого адреса. В целях безопасности лучше уточнить адрес, если вы не планируете подключаться к серверу из разных источников. В этом примере будет использоваться строка следующего вида:

bind-address		= 10.10.1.20

Сохраняем и перезагружаем.

sudo service mysql restart

На ПК (или другой удалённый сервер) устанавливаем phpMyAdmin.

sudo apt install phpmyadmin

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

Далее правим конфигурационный файл phpMyAdmin config.inc.php (/etc/phpmyadmin/config.inc.php). Если это была свежая установка и на локальном хосте нет сервера баз данных, то удаляем все строки (кроме первой «<?php») и пишем следующее:

/* External Server #1 */
 $i++;
 $cfg['Servers'][$i]['verbose'] = 'Server Name';
 $cfg['Servers'][$i]['host'] = '10.10.1.10';
 $cfg['Servers'][$i]['connect_type'] = 'tcp';
 $cfg['Servers'][$i]['extension'] = 'mysqli';
 $cfg['Servers'][$i]['auth_type'] = 'cookie';
 $cfg['Servers'][$i]['AllowNoPassword'] = false;

Вместо Server Name вписываем что угодно. Сохраняем и закрываем файл.

Конвертирование базы из postgresql в mysql

git clone https://github.com/ChrisLundquist/pg2mysql.git 
cd pg2mysql
  • сохраняем дамп из postgresql (пример сохранение всех таблиц для wordpress - wp*)
sudo -u postgres pg_dump --quote-all-identifiers --no-acl --no-owner --table=wp_* --format p --data-only wordpress -f wordpress_pgsql.sql
  • конвертируем в формат mysql
php pg2mysql_cli.php worpress_pgsql.sql wordpress_mysql.sql
  • теперь необходимо заменить все таблицы с `"public"."wp_*"` на 'wp_*` это можно сделать в редакторе по F4
  • не забудьте исправить "` ( на '(
  • теперь меняем sql команду с INSERT на REPLACE так же по F4
  • все, дамп можно заливать в базу, предварительно создайте из wordpress начальную структуру таблиц через install и потом вносите данные.


ИСТОЧНИКИ



ПОЛЕЗНОЕ: