avatar Ubuntu Настраиваем OpenVPN клиент Linux на примере Ubuntu

Здравствуйте.
Как и обещал, в выкладываю статью по настройке OpenVPN клиента Linux, мы с вами уже настроили OpenVPN сервер, и нам осталось настроить подключение к нему, иначе для чего он нам нужен, если к нему никто не подключается… С данным мануалом настройка будет весьма проста, эта схема была успешно оттестирована в условиях IT компании и работает по сей день.

Установим пакет OpenVPN:
sudo apt-get install openvpn


Поднимем права до root:
sudo -s


Теперь нам необходимо создать конфигурационный файл клиента.
nano /etc/openvpn/client.conf


С содержимым:
# Тип подключения -клиент
client

# Через какое устройстов подлючаемся
dev tun0

# Через какой протокол работаем, такойже как на сервере
proto tcp

# Адрес OpenVPN сервера и его порт (можно указать IP или URL)
remote openvpn.example.org 1194

# Тип шифрования, как на OpenVPN сервере
cipher AES-256-CBC

# Сертификат удостоверяющего центра
ca ca.crt

# Сертификат и ключ клиента
cert user.crt
key user.key

# Клиент поддерживает шифрование
tls-client

# Указываем путь к ключу TLS
tls-auth ta.key 1

# Включаем компрессию данных
comp-lzo

persist-key
persist-tun

# В документации рекомендуется этот пункт для клиентов с нестабильым доступом, например Wi-Fi
resolv-retry infinite

# Не использовать специфический порт для работы
nobind

# Скрипт работает при подключении, он обновляет записи в resolv.conf при подключении к серверу и очищает их при отколючении от OpenVPN сервера
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

# Статус-лог переданные данные и т.п.
status /var/log/openvpn-status.log
# Лог клиента
log /var/log/openvpn.log
# Уровень логирования 0 в лог попадают только записи о критических ошибках, если нужно подробнее, то выставляем 9 для дебагинга
verb 0
# Количество записей после которых будет производиться запись в лог
mute 20


Нам остаётся скачать c OpenVPN сервера, где живет наш удостоверяющий центр, 4 файла:
ca.crt
user.crt
user.key
ta.key

И положить их в директорию /etc/openvpn рядом с файлом client.conf

Перезапускаем openvpn
/etc/init.d/openvpn restart


т.к. это у нас обычный пользователь, то он должен ходить в нашу локальную сеть, а в интрнет через свое подключение, выясним как ходят пакеты для этого выполним трассировку пакета в локальную сеть:
traceroute 172.16.1.20
traceroute to 172.16.1.20 (172.16.1.20), 30 hops max, 60 byte packets
1 172.16.10.1 (172.16.10.1) 4.066 ms 8.001 ms 7.974 ms
2 172.16.1.20 (172.16.1.20) 7.952 ms 7.931 ms 7.910 ms

Видно что пакет ушел на адрес 172.16.10.1 и с интерфеса eth1 в локальную сеть к целевому IP

Выполним трассировку к google.ru, получаем ответ вида:
traceroute google.ru
traceroute to google.ru (173.194.32.159), 30 hops max, 60 byte packets
1 111.111.111.111 (111.111.111.111) 1.360 ms 1.252 ms 1.177 ms
2 46.61.227.225 (46.61.227.225) 1.865 ms 1.271 ms 1.707 ms
3 95.167.90.39 (95.167.90.39) 18.209 ms 95.167.90.37 (95.167.90.37) 18.170 ms 95.167.90.39 (95.167.90.39) 18.496 ms
4 74.125.146.86 (74.125.146.86) 17.827 ms 17.984 ms 17.946 ms
5 216.239.42.97 (216.239.42.97) 17.771 ms 18.058 ms 18.319 ms
6 216.239.42.83 (216.239.42.83) 17.765 ms 216.239.42.49 (216.239.42.49) 19.130 ms 19.004 ms
7 72.14.236.242 (72.14.236.242) 19.287 ms 18.554 ms 18.802 ms
8 173.194.32.159 (173.194.32.159) 18.025 ms 18.269 ms 18.224 ms

Видно что ответ вылетел черз шлюз сети к которой подключен клиент, а не через наш VPN канал

Для обычного пользователя все работает как надо, чтобы проверить под пользователем supersuer нам необходимо положить ключи в директорию openvpn и поменять запись в client.conf указывающих на названия ключа и сертификата

перезапустить OpenVPN клиента и повторить трасисровку пакетов
traceroute 172.16.1.20
traceroute to 172.16.1.20 (172.16.1.20), 30 hops max, 60 byte packets
1 172.16.10.1 (172.16.10.1) 4.066 ms 8.001 ms 7.974 ms
2 172.16.1.20 (172.16.1.20) 7.952 ms 7.931 ms 7.910 ms
В локальную сеть пакеты ходят без изменений, тут ничего не поменялось

traceroute google.ru
traceroute to google.ru (173.194.122.248), 30 hops max, 60 byte packets
1 172.16.10.1 (172.16.10.1) 6.115 ms 11.448 ms 11.500 ms
2 222.222.222.222 (222.222.222.222) 11.614 ms 11.649 ms 11.676 ms
3 10.158.192.1 (10.158.192.1) 11.691 ms 11.705 ms 11.719 ms
4 v811.m9-3.caravan.ru (212.24.42.49) 11.729 ms 11.744 ms 11.751 ms
5 msk-ix-gw1.google.com (195.208.208.232) 11.736 ms 15.341 ms 15.350 ms
6 66.249.94.100 (66.249.94.100) 15.346 ms 5.884 ms 8.451 ms
7 72.14.252.22 (72.14.252.22) 49.777 ms 49.787 ms 49.796 ms
8 173.194.122.248 (173.194.122.248) 49.510 ms 49.620 ms 49.671 m
А тут видно что пакет попал на наш OpenVPN сервер и вылетел во внешний мир через интерфейс eth0
Значит и эта маршрутизация работает правильно

На этом я свой опус пожалуй и закончу, если нашли ошибку пишите в личку, возникли вопросы оставляйте их в комментариях.

9 комментариев

avatar
Сделал все по инструкции — клиент не работает.Интерфейс tun0 не создается. Выкладываю лог:
Mon May 9 12:02:42 2016 WARNING: No server certificate verification method has been enabled. See openvpn.net/howto.html#mitm for more info.
Mon May 9 12:02:42 2016 NOTE: the current --script-security setting may allow this configuration to call user-defined scripts
Mon May 9 12:02:42 2016 WARNING: file '/etc/openvpn/client1.key' is group or others accessible
Mon May 9 12:02:42 2016 WARNING: file '/etc/openvpn/ta.key' is group or others accessible
avatar
Здравствуйте.
Интерфейс tun0 у вас не создался потому что openvpn не запустился!
1) Сертификат ca.crt скопирован?
2) проверьте права доступа к файлам ключей, должны быть 600
avatar
ca.crt скопирован, конечно.Переделал права на 600. В логе:
Mon May 9 21:36:01 2016 WARNING: No server certificate verification method has been enabled. See openvpn.net/howto.html#mitm for more info.
Mon May 9 21:36:01 2016 NOTE: the current --script-security setting may allow this configuration to call user-defined scripts
avatar
Это 3уведомнение информационное и не должно создавать проблему.
Фаерволл не блокирует соединение с сервером?
avatar
Тестирую на двух виртуальных машинах VirtualBox с Xubuntu. На одной сервер openvpn, сделан по Вашей инструкции и нормально работает, на второй — клиент, тут даже интерфейс tun не поднимается, хотя все делаю по инструкции. В хосте в винде открыт порт 1194. Никак не пойму в чем проблема!
avatar
повысите уровень логирования на клиенте до 4, если вы копировали мой конфиг, то там он 0.
Я эту инструкцию копировал, не далее как в эту субботу и все завелось вообще без ругани.
avatar
Заработало. Разобрался. Провайдер порты блокировал.
avatar
Клиент подключается к серверу и нормально работает, но при этом у клиента пропадает локальная сеть и локальный интернет…
(Подключение происходит к удаленному рабочему месту(рабочему столу)
возможно ли на клиенте одновременно поддерживать соединение с локальной сетью и с локальным интернет и с удаленным рабочим местом? желательно чтобы в локальную сеть из удаленной сети не было доступа…
Локальная сеть: Роутер(192.181.1.1), автоматически присваевающий клиентам динамический IP адрес по средствам DHCP 192.181.1.1**
Удаленная OpenVpn сеть: Сервер(77.88.99.11), автоматически присваеваемый статический IP адрес 10.10.10.31
как настроить?
avatar
Здравствуйте.
По первому вопросу нет не возможно у вас или шлюзом по умолчанию является удаленна сеть тогда основной трафик идет через нее или удаленная сеть шлюзом не является, тогда трафик идет через шлюз вашей локальной сети, тогда трафик идет через него.
тут возможен вариант, но нужно изобретать велосипед с маршрутами, думаю вам это не понравится.
Чтобы определенному VPN клиенту присваивался определенный IP нужно в настройках сервера сделать файл, как это сделать, можно прочитать в статье howitmake.ru/blog/ubuntu/192.html
Есть что добавить? Регистрируйся и оставляй комментарии!