SpecialistOff.NET / Вопросы / Статьи / Фрагменты кода / Резюме / Метки / Помощь / Файлы

Список вопросов Печать

Установка и настройка OpenVPN


Метки: openvpn centos vpn openssl ssl безопасность 

Ответы

RemiZOffAlex  Создано: 2017-05-29 21:09:41.669593  Обновлено: 2017-05-29 21:09:41.669593

Установка на Windows

RemiZOffAlex  Создано: 2019-05-29 16:06:48.465594  Обновлено: 2019-05-29 16:06:48.465594

Установка и тестирование проводилось под управлением CentOS 7

Установка

CentOS

yum -y update
yum -y install epel-release
yum -y install openvpn

Ubuntu

apt-get install openvpn

Настройка

Сервер

Генерируем корневой сертификат

openssl genrsa -out /etc/openvpn/ca.key 4096
openssl req -x509 -new -key /etc/openvpn/ca.key -days 3650 \
    -out /etc/openvpn/ca.crt -subj '/C=RU/ST=Tula/L=Tula/CN=RemiZOffAlex'

Генерируем сертификат сервера, подписанный корневым

openssl genrsa -out /etc/openvpn/server.key 4096
openssl req -new -key /etc/openvpn/server.key -days 365 \
    -out /etc/openvpn/server.crt -subj '/C=RU/ST=Tula/L=Tula/CN=server'
openssl x509 -req -days 365 -in /etc/openvpn/server.crt \
    -CA /etc/openvpn/ca.crt -CAkey /etc/openvpn/ca.key \
    -set_serial 01 -out /etc/openvpn/server.crt

Генерируем ключ Диффи-Хелмана

openssl dhparam -out dh2048.pem 2048

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

cat <<EOF > /etc/openvpn/server.conf
cd /etc/openvpn
mode server
tls-server
port 1194
proto tcp
dev tap # L2 туннель (для L3-туннеля: dev tun)
log /var/log/openvpn.log
status /var/log/openvpn-status.log
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
ifconfig-pool-persist ipp.txt

server 10.8.0.0 255.255.255.0
client-to-client

push "route 10.10.0 255.255.255.0"
push "redirect-gateway def1"

push "dhcp-option DNS 77.88.8.8"
push "dhcp-option DNS 8.8.8.8"
user nobody
group nobody
keepalive 10 120
comp-lzo
persist-key
persist-tun
cipher AES-256-CBC
verb 3
EOF

Запуск сервера

openvpn --config /etc/openvpn/server.conf

Межсетевой экран

iptables -A INPUT -p tcp --dport 1194 -j ACCEPT

Для организации выхода в интернет через туннель

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 ! -d 10.8.0.0/24 -o ens18 \
    -j SNAT --to-source ВНЕШНИЙIP
sysctl net.ipv4.ip_forward=1
cat <<EOF >> /etc/sysctl.conf
net.ipv4.ip_forward = 1
EOF

Клиент

Генерируем сертификат клиента на серверной машине

openssl genrsa -out /etc/openvpn/client1.key 4096
openssl req -new -key /etc/openvpn/client1.key -days 3650 -out /etc/openvpn/client1.crt -subj '/C=RU/ST=Tula/L=Tula/CN=client1'
openssl x509 -req -days 3650 -in /etc/openvpn/client1.crt -CA /etc/openvpn/ca.crt -CAkey /etc/openvpn/ca.key -set_serial 01 -out /etc/openvpn/client1.crt

На клиентскую машину выдаём с сервера файлы ca.crtclient1.crt и client1.key

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

cat <<EOF > /etc/openvpn/client.conf
cd /etc/openvpn
client
tls-client
dev tap
proto tcp
remote IPorSERVERNAME 1194
;redirect-gateway def1
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
comp-lzo
user nobody
group nobody
cipher AES-256-CBC
verb 3
EOF

Запуск клиента

openvpn --config /etc/openvpn/client.conf

Ссылки

Возможно будут интересны и другие вопросы