Самый простой способ установить и настроить сервер OpenVPN в Linux
В этом руководстве описывается, как установить и настроить сервер OpenVPN в системах на базе RPM и DEB. В этом руководстве мы будем использовать скрипт под названием openvpn-install , который автоматизирует весь процесс установки и настройки сервера OpenVPN. Этот скрипт поможет вам настроить собственный VPN-сервер за несколько минут, даже если вы раньше не использовали OpenVPN.
Давайте начнем.
Установите и настройте сервер OpenVPN в Linux
Для целей данного руководства я буду использовать две системы, работающие под управлением 64-разрядной версии CentOS 7. Один действует как сервер OpenVPN, другой — как клиент openVPN. Ниже приведены детали моих тестовых боксов.
OpenVPN-сервер:
- ОС: CentOS 7, 64-битная минимальная версия.
- IP: 192.168.43.150/24
- Имя хоста: vpnserver.ostechnix.local
OpenVPN-клиент:
- ОС : CentOS 7, 64 разрядная минимальная версия.
- IP: 192.168.43.199/24
Сначала мы увидим конфигурацию на стороне сервера.
Установка и настройка OpenVPN-сервера
Загрузите сценарий openvpn-install со страницы GitHub.
wget https://git.io/vpn -O openvpn-install.sh
Затем запустите сценарий, используя следующую команду от имени пользователя root:
bash openvpn-install.sh
Вам будет предложено ответить на ряд вопросов. Ответьте им соответственно.
Убедитесь, что IP-адрес VPN-сервера правильный. Если вы используете несколько IP-адресов, введите IP-адрес сетевого интерфейса, который вы хотите прослушивать OpenVPN.
Welcome to this quick OpenVPN "road warrior" installer
I need to ask you a few questions before starting the setup
You can leave the default options and just press enter if you are ok with them
First I need to know the IPv4 address of the network interface you want OpenVPN
listening to.
IP address: 192.168.43.150
Выберите, какой протокол вы хотите использовать. Я хочу использовать TCP-порт, поэтому я выбрал номер 2.
Which protocol do you want for OpenVPN connections?
1) UDP (recommended)
2) TCP
Protocol [1-2]: 2
Введите номер порта.
What port do you want OpenVPN listening to?
Port: 1194
Введите данные DNS-сервера, который вы хотите использовать с VPN. Я хочу использовать преобразователи DNS Google, поэтому выбрал вариант 2.
Which DNS do you want to use with the VPN?
1) Current system resolvers
2) Google
3) OpenDNS
4) NTT
5) Hurricane Electric
6) Verisign
DNS [1-6]: 2
Мы подошли к последнему шагу. Введите имя сертификата клиента. Имя должно состоять из одного слова и не должно содержать специальных символов.
Finally, tell me your name for the client certificate
Please, use one word only, no special characters
Client name: client
Нажмите клавишу ENTER, чтобы начать установку сервера OPENVPN.
Okay, that was all I needed. We are ready to setup your OpenVPN server now
Press any key to continue...
Кстати, этот скрипт начнет установку всех необходимых пакетов для настройки сервера OpenVPN. Кроме того, он создаст все необходимые ключи и сертификаты для аутентификации на VPN-клиентах. Это займет несколько минут.
Наконец, скрипт спросит вас, есть ли у вас внешний IP-адрес. Если у вас его нет, просто проигнорируйте его, оставив поле пустым и нажмите клавишу ENTER.
If your server is NATed (e.g. LowEndSpirit), I need to know the external IP
If that's not the case, just ignore this and leave the next field blank
External IP:
Finished!
Your client configuration is available at /root/client.ovpn
If you want to add more clients, you simply need to run this script again!
Установка и настройка OpenVPN-сервера завершена. Как видно из последнего вывода, сведения о конфигурации клиента хранятся в файле /root/client.ovpn. Вам необходимо скопировать этот файл во все ваши клиентские системы VPN.
Я скопировал файл client.ovpn в свой VPN-клиент.
scp client.ovpn root@192.168.43.199:/etc/openvpn/
Далее нам нужно настроить клиент OpenVPN.
Конфигурация клиента OpenVPN
Убедитесь, что вы скопировали файл client.ovpn из системы вашего VPN-сервера. Я уже скопировал этот файл в каталог /etc/openvpn/ моей клиентской системы VPN.
Установите пакет OpenVPN с помощью менеджера пакетов распространения.
yum install openvpn
Затем выполните следующую команду, чтобы установить безопасное соединение с VPN-сервером.
openvpn --config /etc/openvpn/client.ovpn
Пример вывода:
Wed Apr 5 18:50:44 2017 Unrecognized option or missing parameter(s) in /etc/openvpn/client.ovpn:14: block-outside-dns (2.3.14)
Wed Apr 5 18:50:44 2017 OpenVPN 2.3.14 x86_64-redhat-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [MH] [IPv6] built on Dec 7 2016
Wed Apr 5 18:50:44 2017 library versions: OpenSSL 1.0.1e-fips 11 Feb 2013, LZO 2.06
Wed Apr 5 18:50:44 2017 Control Channel Authentication: tls-auth using INLINE static key file
Wed Apr 5 18:50:44 2017 Outgoing Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
Wed Apr 5 18:50:44 2017 Incoming Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
Wed Apr 5 18:50:44 2017 Socket Buffers: R=[87380->87380] S=[16384->16384]
Wed Apr 5 18:50:44 2017 Attempting to establish TCP connection with [AF_INET]192.168.43.150:1194 [nonblock]
Wed Apr 5 18:50:45 2017 TCP connection established with [AF_INET]192.168.43.150:1194
Wed Apr 5 18:50:45 2017 TCPv4_CLIENT link local: [undef]
Wed Apr 5 18:50:45 2017 TCPv4_CLIENT link remote: [AF_INET]192.168.43.150:1194
Wed Apr 5 18:50:45 2017 TLS: Initial packet from [AF_INET]192.168.43.150:1194, sid=c6fb554e 362eb192
Wed Apr 5 18:50:45 2017 VERIFY OK: depth=1, CN=ChangeMe
Wed Apr 5 18:50:45 2017 Validating certificate key usage
Wed Apr 5 18:50:45 2017 ++ Certificate has key usage 00a0, expects 00a0
Wed Apr 5 18:50:45 2017 VERIFY KU OK
Wed Apr 5 18:50:45 2017 Validating certificate extended key usage
Wed Apr 5 18:50:45 2017 ++ Certificate has EKU (str) TLS Web Server Authentication, expects TLS Web Server Authentication
Wed Apr 5 18:50:45 2017 VERIFY EKU OK
Wed Apr 5 18:50:45 2017 VERIFY OK: depth=0, CN=server
Wed Apr 5 18:50:45 2017 Data Channel Encrypt: Cipher 'AES-256-CBC' initialized with 256 bit key
Wed Apr 5 18:50:45 2017 Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Wed Apr 5 18:50:45 2017 Data Channel Decrypt: Cipher 'AES-256-CBC' initialized with 256 bit key
Wed Apr 5 18:50:45 2017 Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Wed Apr 5 18:50:45 2017 Control Channel: TLSv1.2, cipher TLSv1/SSLv3 DHE-RSA-AES256-GCM-SHA384, 2048 bit RSA
Wed Apr 5 18:50:45 2017 [server] Peer Connection Initiated with [AF_INET]192.168.43.150:1194
Wed Apr 5 18:50:48 2017 SENT CONTROL [server]: 'PUSH_REQUEST' (status=1)
Wed Apr 5 18:50:48 2017 PUSH: Received control message: 'PUSH_REPLY,redirect-gateway def1 bypass-dhcp,dhcp-option DNS 8.8.8.8,dhcp-option DNS 8.8.4.4,route-gateway 10.8.0.1,topology subnet,ping 10,ping-restart 120,ifconfig 10.8.0.2 255.255.255.0'
Wed Apr 5 18:50:48 2017 OPTIONS IMPORT: timers and/or timeouts modified
Wed Apr 5 18:50:48 2017 OPTIONS IMPORT: --ifconfig/up options modified
Wed Apr 5 18:50:48 2017 OPTIONS IMPORT: route options modified
Wed Apr 5 18:50:48 2017 OPTIONS IMPORT: route-related options modified
Wed Apr 5 18:50:48 2017 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified
Wed Apr 5 18:50:48 2017 ROUTE_GATEWAY 192.168.43.1/255.255.255.0 IFACE=enp0s3 HWADDR=08:00:27:28:98:6b
Wed Apr 5 18:50:48 2017 TUN/TAP device tun0 opened
Wed Apr 5 18:50:48 2017 TUN/TAP TX queue length set to 100
Wed Apr 5 18:50:48 2017 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0
Wed Apr 5 18:50:48 2017 /usr/sbin/ip link set dev tun0 up mtu 1500
Wed Apr 5 18:50:48 2017 /usr/sbin/ip addr add dev tun0 10.8.0.2/24 broadcast 10.8.0.255
Wed Apr 5 18:50:48 2017 /usr/sbin/ip route add 192.168.43.150/32 dev enp0s3
Wed Apr 5 18:50:48 2017 /usr/sbin/ip route add 0.0.0.0/1 via 10.8.0.1
Wed Apr 5 18:50:48 2017 /usr/sbin/ip route add 128.0.0.0/1 via 10.8.0.1
Wed Apr 5 18:50:48 2017 Initialization Sequence Completed
Теперь проверьте, создан ли tun0(интерфейс VPN), и проверьте IP-адрес интерфейса VPN с помощью команды «ip addr»:
ip addr
Пример вывода:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:28:98:6b brd ff:ff:ff:ff:ff:ff
inet 192.168.43.199/24 brd 192.168.43.255 scope global dynamic enp0s3
valid_lft 42359sec preferred_lft 42359sec
inet6 fe80::a00:27ff:fe28:986b/64 scope link
valid_lft forever preferred_lft forever
3: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 100
link/none
inet 10.8.0.2/24 brd 10.8.0.255 scope global tun0
valid_lft forever preferred_lft forever
Как видно из приведенного выше вывода, наш VPN-сервер автоматически назначил VPN-клиенту IP-адрес 10.8.0.2.
Теперь попробуйте проверить связь с VPN-сервером из вашей VPN-клиентской системы:
ping -c3 10.8.0.1
Пример вывода:
PING 10.8.0.1 (10.8.0.1) 56(84) bytes of data.
64 bytes from 10.8.0.1: icmp_seq=1 ttl=64 time=1.05 ms
64 bytes from 10.8.0.1: icmp_seq=2 ttl=64 time=1.94 ms
64 bytes from 10.8.0.1: icmp_seq=3 ttl=64 time=2.49 ms
--- 10.8.0.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 1.057/1.832/2.495/0.594 ms
Поздравляем! Теперь мы успешно установили и настроили сервер и клиент OpenVPN в CentOS. Этот метод одинаков для систем на базе DEB, таких как Ubuntu и Linux Mint. В отличие от установки вручную, этот скрипт значительно упрощает установку и настройку openvpn.
Ваше здоровье!
Ресурс:
- Страница GitHub openvpn-install