Устанавливаем VPN-клиентов
Маршрутизаторы прочих филиалов будут выступать клиентами по отношению к VPN-серверу. Переходим к настройке клиентского роутера, устанавливаем пакеты openvpn, lzo аналогично тому, как описано ранее для сервера.
После установки пакетов конфигурируем службу в режиме клиента. Для этого копируем пример конфигурационного файла /usr/share/doc/openvpn-2.0.9/sample-config-files/client.conf в каталог /etc/openvpn и редактируем в соответствии с нашими условиями.
Файл /etc/openvpn/client.conf:
############################################## # Sample client-side OpenVPN 2.0 config file # # for connecting to multi-client server. # ############################################## # Specify that we are a client and that we # will be pulling certain config file directives # from the server. client # Use the same setting as you are using on # the server. # On most systems, the VPN will not function # unless you partially or fully disable # the firewall for the TUN/TAP interface. ;dev tap dev tun0 # Windows needs the TAP-Win32 adapter name # from the Network Connections panel # if you have more than one. On XP SP2, # you may need to disable the firewall # for the TAP adapter. ;dev-node MyTap # Are we connecting to a TCP or # UDP server? Use the same setting as # on the server. ;proto tcp proto udp # The hostname/IP and port of the server. # You can have multiple remote entries # to load balance between the servers. remote 10.0.0.2 1194 ;remote my-server-2 1194 # Choose a random host from the remote # list for load-balancing. Otherwise # try hosts in the order specified. ;remote-random # Keep trying indefinitely to resolve the # host name of the OpenVPN server. Very useful # on machines which are not permanently connected # to the internet such as laptops. resolv-retry infinite # Most clients don't need to bind to # a specific local port number. nobind # Downgrade privileges after initialization (non-Windows only) user nobody group nobody # Try to preserve some state across restarts. persist-key persist-tun # If you are connecting through an # HTTP proxy to reach the actual OpenVPN # server, put the proxy server/IP and # port number here. See the man page # if your proxy server requires # authentication. ;http-proxy-retry # retry on connection failures ;http-proxy [proxy server] [proxy port #] # Wireless networks often produce a lot # of duplicate packets. Set this flag # to silence duplicate packet warnings. ;mute-replay-warnings # SSL/TLS parms. # See the server config file for more # description. It's best to use # a separate .crt/.key file pair # for each client. A single ca # file can be used for all clients. ca ca.crt cert filial2.crt key filial2.key # Verify server certificate by checking # that the certicate has the nsCertType # field set to "server". This is an # important precaution to protect against # a potential attack discussed here: # http://openvpn.net/howto.html#mitm # # To use this feature, you will need to generate # your server certificates with the nsCertType # field set to "server". The build-key-server # script in the easy-rsa folder will do this. ns-cert-type server # If a tls-auth key is used on the server # then every client must also have the key. ;tls-auth ta.key 1 # Select a cryptographic cipher. # If the cipher option is used on the server # then you must also specify it here. ;cipher x # Enable compression on the VPN link. # Don't enable this unless it is also # enabled in the server config file. comp-lzo # Set log file verbosity. verb 3 log-append /var/log/openvpn.log # Silence repeating messages ;mute 20
Служба openvpn должна запускаться при загрузке системы. Устанавливаем уровень запуска службы:
[root@gateway2 ~]# chkconfig openvpn on
Возвращаемся на наш сервер OpenVPN (центральный маршрутизатор) и создаем ключ и сертификат для клиента-маршрутизатора филиала filial2:
[root@gateway1 ~]# cd /etc/openvpn/easy-rsa [root@gateway1 easy-rsa]# . ./vars [root@gateway1 easy-rsa]# ./build-key filial2
Ответив на ряд типовых вопросов (аналогично созданию ключа и сертификата для сервера), ответьте утвердительно на запрос о подписи нового сертификата. В конечном итоге, в каталоге /etc/openvpn/easy-rsa/keys добавятся два файла: filial2.key и filial2.crt. Работоспособность созданного сертификата можно проверить командой:
[root@gateway1 keys]# openssl verify -CAfile ca.crt filial2.crt
Устанавливаем параметры IP-протокола для клиента: переходим в подкаталог ccd каталога /etc/openvpn 1), внутри каталога создаем файл filial2 (имя, указанное как «commonName» при создании клиентского сертификата). В нем прописываем клиентский IP-адрес и шлюз, которые будут назначены клиенту filial2 при подключении 2)).
Файл /etc/openvpn/ccd/filial2:
ifconfig-push 10.10.0.5 10.10.0.6
В заключение, перезапускаем сервер openvpn на основном маршрутизаторе:
[root@gateway1 keys]# /etc/init.d/openvpn restart
Переходим снова к клиентскому маршрутизатору. Корневой сертификат сервера (ca.crt) и пару ключ-сертификат клиента (filial2.key, filial2.crt) нужно скопировать в папку /etc/openvpn клиентского маршрутизатора. Перезапускаем службу openvpn на клиентском маршрутизаторе:
[root@gateway2 ~]# /etc/init.d/openvpn restart
После перезапуска должно установиться VPN-подключение между основным и клиентским роутером, связь можно проверить «ping»-ами по IP-адресам VPN-сети. В случае проблем, смотрите логи openvpn (/var/log/openvpn.log).
Остальные маршрутизаторы-клиенты VPN-сети настраиваются аналогично.