Задание: имеется локальная сеть в организации (192.168.1.0). Сервер 192.168.1.1 имеет DNS, DHCP, Samba с поддержкой WINS. Есть выход в интернет с помощью pppoe соединения. Необходимо дать удаленным пользователям возможность попадать в локальную сеть организации. У сервера eth0 сетевой интерфейс "смотрит" в интернет, eth1 сетевой интерфейс "смотрит" в локальную сеть. Внешний адрес pppoe соединения связан с доменом kontora.ru
Устанавливаем пакет openvpn на сервер и клиенту.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/
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
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Его потом нужно будет импортировать в браузере клиента.
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 на сервере.
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.202client1 и client2 имена ключей. Имена присваиваются на этапе генерации ключей.
./build-dh ./build-key client1Затем содаем каталог ccd, в нем создаем файлы с именами клиентов client1 и client2.
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"Это добавит маршруты клиентам, чтобы они могли "видеть" друг друга.