На главную

OpenVPN настройка сервера на RFRemix 14

Задание: имеется локальная сеть в организации (192.168.1.0). Сервер 192.168.1.1 имеет DNS, DHCP, Samba с поддержкой WINS. Есть выход в интернет с помощью pppoe соединения. Необходимо дать удаленным пользователям возможность попадать в локальную сеть организации. У сервера eth0 сетевой интерфейс "смотрит" в интернет, eth1 сетевой интерфейс "смотрит" в локальную сеть. Внешний адрес pppoe соединения связан с доменом kontora.ru

Устанавливаем пакет openvpn на сервер и клиенту.
Создаем файл конфигурации для клиента linux:openvpn.conf
dev tap
proto tcp-client
remote kontora.ru
port 1194
client
tls-client
tls-auth "/etc/openvpn/keys/ta.key" 1
auth MD5
comp-lzo
ns-cert-type server
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/client1.crt
key /etc/openvpn/keys/client1.key
user nobody
group nobody
ping 15
ping-restart 120
ping-timer-rem
persist-key
persist-tun
verb 3
Файл конфигурации должен быть в /etc/openvpn/

Создаем файл конфигурации для клиента windows:openvpn.ovpn
dev tap
proto tcp-client
remote kontora.ru
port 1194
client
tls-client
tls-auth "c:\\keys\\ta.key" 1
auth MD5
comp-lzo
ns-cert-type server
ca "c:\\keys\\ca.crt"
cert "c:\\keys\\client1.crt"
key "c:\\keys\\client1.key"
ping 15
ping-restart 120
ping-timer-rem
persist-key
persist-tun
verb 3
Скачиваем пакет с http://openvpn.net/index.php/open-source/downloads.html
Устанавливаем все по умолчанию. Файл конфигурации копируем в C:\Program files\OpenVPN\config\, ключи располагаем в удобном для нас месте, не забывая правильно их прописать в openvpn.ovpn

Создаем файл конфигурации для сервера:openvpn.conf
port 1194
proto tcp-server
dev tap0
tls-server
mode server
tls-auth "/etc/openvpn/keys/ta.key" 0
auth MD5
keepalive 10 120
persist-key
persist-tun
ifconfig 192.168.0.1 255.255.255.0
ifconfig-pool 192.168.0.200 192.168.0.240 255.255.255.0
push "route-gateway 192.168.0.1"
push "route 192.168.1.0 255.255.255.0 192.168.0.1"
push "dhcp-option DNS 192.168.1.1"
push "dhcp-option WINS 192.168.1.1"
duplicate-cn
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh1024.pem
crl-verify /etc/openvpn/keys/crl.pem
keepalive 10 120
comp-lzo
cipher BF-CBC
max-clients 5
user nobody
group nobody
client-to-client
status "/etc/openvpn/log/openvpn-status.log"
log "/etc/openvpn/log/openvpn.log"
log-append "/etc/openvpn/log/openvpn.log"
verb 3

Копируем скрипты из /usr/share/openvpn/easy-rsa/2.0 в /etc/openvpn/easy-rsa. Там же создаем каталог keys. В каталоге /etc/openvpn создать каталоги: keys, log. Файл openssl.cnf из /etc/openvpn/easy-rsa перенести в /etc/openvpn. Туда же положить openvpn.conf Файл /etc/openvpn/easy-rsa/vars отредактировать под свои данные. Выполняем последовательно команды:
cd /etc/openvpn/easy-rsa
. ./vars
./clean-all
./build-ca
Тут надо отвечать на вопросы. Подтверждать данные, описанные в vars.
./build-key-server server
Также нужно отвечать на вопросы. Особое внимание обратить на параметр "Common Name". Для сервера это "server"
./build-dh
./build-key client1
Также нужно отвечать на вопросы. Особое внимание обратить на параметр "Common Name". Для клиента это "client1" (в нашем случае)
openvpn --genkey --secret ta.key
После этого полученные ключи ca.crt, dh1024.pem, server.crt, server.key, ta.key положить в /etc/openvpn/keys. Ключи ca.crt, client.crt, client.key, ta.key положить клиенту в /etc/openvpn/keys, в случае OS Linux.
Отзыв сертификата у клиента:
cd /etc/openvpn/easy-rsa
. ./vars
./revoke-full client1
Ключ crl.pem, который появится после выполнения команды в /etc/openvpn/easy-rsa/keys, должен лежать в /etc/openvpn/keys.

Если планируется предоставлять этому клиенту доступ к защищенному веб-серверу, то необходимо сгенерировать еще один файл;
openssl pkcs12 -export -in client1.crt -inkey client1.key -certfile ca.crt -out client1.p12
Его потом нужно будет импортировать в браузере клиента.

Добавляем правила iptables:
echo "1" > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -A INPUT -i eth1 -j ACCEPT
/sbin/iptables -A OUTPUT -o eth1 -j ACCEPT
/sbin/iptables -A FORWARD -o eth1 -j ACCEPT
# open vpn
/sbin/iptables -A INPUT -p tcp --dport 1194 -j ACCEPT
/sbin/iptables -A INPUT -i tap+ -j ACCEPT
/sbin/iptables -A OUTPUT -o tap+ -j ACCEPT
/sbin/iptables -A FORWARD -o tap+ -j ACCEPT
Запускаем openvpn на сервере, контролируя log-файлы в /etc/openvpn/log/. При успешном запуске, пробуем подключить клиентов: в linux запускаем сервис service openvpn start. В windows - в трее на иконке правой кнопкой мыши "Connect". Процедуру подключения также контролируем с помощью log-файла в /etc/openvpn/log/openvpn.log на сервере.

Теперь рассмотрим вариант когда клиентом выступает другая локальная сеть или несколько сетей. Пусть это будет сети 192.168.6.0 и 192.168.100.0. Тогда openvpn.conf на сервере будет выглядить так:
port 1194
proto tcp-server
dev tap0
tls-server
mode server
tls-auth "/etc/openvpn/keys/ta.key" 0
auth MD5
keepalive 10 120
persist-key
persist-tun
ifconfig 192.168.0.1 255.255.255.0
ifconfig-pool 192.168.0.200 192.168.0.240 255.255.255.0
ifconfig-pool-persist "/etc/openvpn/ipp.txt"

push "route-gateway 192.168.0.1"
push "route 192.168.1.0 255.255.255.0 192.168.0.1"
route 192.168.6.0 255.255.255.0 192.168.0.200
route 192.168.100.0 255.255.255.0 192.168.0.202
push "dhcp-option WINS 192.168.1.1"

ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh1024.pem
crl-verify /etc/openvpn/keys/crl.pem
keepalive 10 120
comp-lzo
cipher BF-CBC
max-clients 5
user nobody
group nobody
client-to-client
status "/etc/openvpn/log/openvpn-status.log"
log "/etc/openvpn/log/openvpn.log"
log-append "/etc/openvpn/log/openvpn.log"
verb 3
client-config-dir ccd
tun-mtu 1400
# tun-mtu важный параметр. Особенно если vpn соединение создается поверх pppoe. Если этот параметр добавляется, то его 
# следует добавить у клиентов.
Клиент сети 192.168.6.0 должен получить адрес 192.168.0.200. А клиент 192.168.100.0 - 192.168.0.202. Чтобы клиенты получали именно эти адреса, создадим файл /etc/openvpn/ipp.txt
client1,192.168.0.200
client2,192.168.0.202
client1 и client2 имена ключей. Имена присваиваются на этапе генерации ключей.
./build-dh
./build-key client1
Затем содаем каталог ccd, в нем создаем файлы с именами клиентов client1 и client2.
client1:
push "route 192.168.100.0 255.255.255.0 192.168.0.202"
client2:
push "route 192.168.6.0 255.255.255.0 192.168.0.200"
Это добавит маршруты клиентам, чтобы они могли "видеть" друг друга.
Назад . . .
настройка openvpn клиента на роутере
На главную