Логи vpn подключения ubuntu

Обновлено: 06.07.2024

По умолчанию в директории /etc/openvpn/ конфигурационных файлов нет, но есть две директории для них — server и client . Файл конфигурации нужно создать самостоятельно и поместить в директорию server (для сервера) или client (для клиента). Образец файла конфигурации OpenVPN можно взять из документации:

Приведем файл конфигурации к следующему виду:

Директива server является макрокомандой и имеет синтаксис:

Она будет преобразована по следующему алгортиму:

Директива route-gateway используется совместно с директивой route и задает шлюз по умолчанию для VPN-сети. Если параметр gateway директивы route не задан — он будет получен из директивы route-gateway .

Директива topology приобретает смысл совместно с dev tun и предусматривает три варианта: net30 , p2p , subnet .

Универсальным решением для VPN-сервера является net30 — это значение по умолчанию. Сервер будет работать со всеми версиями Windows, Linux, Mikrotik. Недостатком топологии является избыточное расходование адресного пространства — четыре ip-адреса на каждого VPN-клиента. Топология net30 фактически «устарела» и сохраняется исключительно для поддержки старых Windows клиентов.


Значение subnet рекомендуется для VPN-сервера, клиентами которого являются Linux и Windows 8.2 и выше. Устройство tun настроено на использование ip-адреса и маски сети как «традиционная» широковещательная сеть. Сетевой и широковещательный ip-адреса не должны использоваться — хотя tun не имеет понятия о широковещании, клиенты Windows не смогут правильно использовать эти адреса. Все остальные ip-адреса в сети доступны для использования.

Значение p2p не может использоваться в системах Windows и не подходит, если сервер или любой клиент может быть Windows. В этой топологии все узлы настроены как настоящие двухточечные ссылки — каждый ip-адрес может использоваться, включая первый и последний. Другими словами, в сети 10.8.0.0/24 в топологии p2p можно использовать все 256 ip-адресов. Но Windows считает первый и последний ip-адреса сетевым и широковещательным адресами.

Директивы persist-key и persist-tun обеспечивают правильную работу после понижения прав, т.е. при использовании nobody и nogroup .

Директива keepalive является макрокомандой и будет преобразована в директивы ping и ping-restart

Кроме того, эта макрокоманда отправит две директивы на клиент (так что в файле конфигурации клиента они не нужны)

Все готово, можно запускать VPN-сервер (подробности здесь):

Здесь config — это имя файла конфигурации в директории server , но без расширения .conf . Чтобы VPN-сервер запускался при загрузке системы:

Смотрим статус запущенной службы:

Смотрим наличие сетевого интерфейса tun0 :

Файл конфигурации клиента

Первым делом нужно установить пакет OpenVPN:

Создаем директорию keys и копируем ключи:

Копируем образец файла конфигурации клиента:

Приведем файл конфигурации к следующему виду:

Все готово, можно запускать VPN-клиент (подробности здесь):

Здесь config — это имя файла конфигурации в директории client , но без расширения .conf . Чтобы VPN-клиент запускался при загрузке системы:

Смотрим статус запущенной службы:

Смотрим наличие сетевого интерфейса tun0 :

Пингуем сервер по адресу 10.8.0.1 :

Дополнительные настройки сервера

1 Если нужно использовать VPN-туннель для маршрутизации всего трафика клиентов, добавляем в файл конфигурации еще три строки.

Теперь клиенты будут использовать туннель VPN в качестве шлюза по умолчанию и DNS-сервера 208.67.222.222 и 208.67.220.220 . В этом случае надо внести изменения и в файл конфигурации клиента. Какие изменения — зависит от того, используется systemd-resolved или нет.

При подключении к серверу сетевые настройки клиента будут изменяться, а при отключении от сервера — настройки будут возвращаться в нормальное состояние, как было до подключения. Скрипт update-resolv-conf доступен сразу после установки пакета openvpn , чтобы получить скрипт update-systemd-resolved — надо установить пакет openvpn-systemd-resolved .

2 По умолчанию сервер OpenVPN использует порт 1194 и протокол UDP — но это всегда можно изменить.

При переключении протокола на TCP, нужно изменить значение директивы explicit-exit-notify с 1 на 0, так как эта директива используется только для UDP. Иначе, при использовании TCP, эта директива вызовет ошибки при запуске службы.

Кроме того, при изменении протокола и порта сервера в файле конфигурации сервера, надо внести изменения в файл конфигурации клиента — указать тот же порт и протокол.

3 По умолчанию клиенты сети VPN могут «общаться» только с сервером OpenVPN. Для того, чтобы клиенты могли взаимодействовать друг с другом через сеть VPN необходимо в конфигурационном файле раскомментировать соответствующую директиву:

4 Сервер динамически выдает клиентам свободные ip-адреса из заданного диапазона. Наличие директивы ifconfig-pool-persist указывает, что перед тем как выдать клиенту свободный адрес из пула, сервер должен свериться с файлом ipp.txt , в котором прописывается привязка Common Name сертификата к ip-адресу.

5 Директива client-config-dir предписывает читать файлы конфигураций клиентов в указанной директории. Имена файлов конфигурации в этой директории совпадают с Common Name сертификатов клиентов. Директивы из каждого файла конфигурации применяются только для конкретного клиента.

6 Директива ccd-exclusive — VPN-клиент, имеющий сертификат с Common Name «sergey-ivanov», может подключиться к VPN-серверу, только если существует файл с именем sergey-ivanov в директории client-config-dir . Этот файл может быть даже пустым — но он должен существовать.

7 Директива duplicate-cn разрешает одновременное подключение нескольких клиентов с одинаковым Common Name. В отсутствие этой директивы сервер отключит экземпляр клиента при подключении нового клиента с таким же Common Name.

Чтобы избежать ошибки Could not determine IPv4/IPv6 protocol. Using AF_INET при запуске VPN-сервера, нужно явно указать версию протокола:

Интерес к логам появляется в том момент когда что-то перестает работать. Это касается и OpenVPN, например, когда кто-то из пользователей не может подключиться к серверу. Причину по которой это происходить можно найти только в логах. Поэтому всегда настраивайте ведение журналов для всех важных приложений которые вы используете. Так как в большинстве случаев по умолчанию ведение журналов отключено. Сегодня поговорим о том как узнать где хранятся логи OpenVPN в операционных системах Linux.

Где хранятся журналы OpenVPN

Путь до журналов может быть разный. Посмотреть куда сохраняются логи в OpenVpn можно в файле настроек server.conf. Для этого подключаемся к серверу и запускаем файловый менеджер mc. Лично я рекомендую им пользоваться особенно начинающим пользователям Linux.

Установить mc - apt install mc

После открытия mc переходим в каталог где установлен OpenVpn и открываем файл конфигурации. Для просмотра файла необходимого его выделить и начать F3.

OpenVpn настройка

В файле ищем строчку.

Если у вас указан такой путь то это значить что лиги хранятся в той же папки что и сам OpenVpn.

OpenVpn настройка логов сервера

Ищем данный файл по указанному пути. Для просмотра можно также использовать F3.

OpenVpn как посмотреть логи

Если у вас нет mc то можете открыть файл конфигурации введя команду.

Такой же командой можно и просмотреть сам журнал. Как видите нет ни чего сложного.

Основные log файлы Ubuntu

Лог загрузки

Начнем с самого начала. В момент загрузки системы записывается вся основная информация, имеющая к ней отношение. Если у вас будут какие-то ошибки во время старта сервера, вы сможете их увидеть в этом логе. Посмотреть лог загрузки Ubuntu можно следующим образом.


У вас получится очень длинный вывод всего того, что происходило с системой на старте. Если ищите что-то конкретное, то можете сделать фильтрацию вывода с помощью grep. Допустим, вам надо узнать информацию только о диске.


Вы увидите лог загрузки системы ubuntu, содержащий информацию только о диске sda. Аналогичным образом можно фильтровать вывод по другим темам. Например, посмотреть все ошибки, которые были во время загрузки.

И так далее. Информация, которую выводит команда dmesg, хранится в log файле /var/log/dmesg .

Логи авторизации, в том числе ssh

Для того, чтобы узнать, кто и когда проходил авторизацию на сервере ubuntu, можно воспользоваться логами из файла /var/log/auth.log . Авторизация по ssh там будет выглядеть следующим образом.


Не забудьте перезапустить службу sshd для принятия изменений:

После этого логирование подключений по ssh будет более подробное.

Лог локального входа в ubuntu тоже хранится в файле auth.log . Информация о подключении через консоль выглядит следующим образом.


Устройство /dev/tty1 говорит о том, что вход локальный.

Вы можете быстро посмотреть информацию о последних входах в систему с помощью команды last. Эта информация хранится в бинарном логе /var/log/lastlog .


Примерно то же самое можно увидеть с помощью utmpdump.

Логи ошибок в Ubuntu

Рассмотрим теперь вопрос с расположением лога ошибок в Ubuntu. Как такового отдельного error log в традиционных linux системах нет. И Убунта тут не исключение. Ошибки придется искать по системным и программным логам выборкой ключевых слов. Обычно используют следующие фразы:

  • error или err
  • critical или crit
  • debug
  • warn


А теперь проверим ошибки в системном логе.


Видим некоторые ошибки в службе systemd-resolved.

Cron logs

Часто хочется проверить лог запуска периодических заданий cron. В Ubuntu, как мне кажется, сделали не удобно. По умолчанию, cron logs не выделены в отдельный файл. Искать их стоит в общем системном логе syslog. Например, в Centos существует отдельный лог-файл /var/log/cron, где собрана вся информация о запущенных заданиях. Предлагаю сделать так же в Ubuntu.

Для этого открываем конфигурационный файл /etc/rsyslog.d/50-default.conf и добавляем туда следующую информацию.

Я добавил в нее cron.none, чтобы логи cron не писались больше в системный лог syslog. После этого перезапустите службы rsyslog и cron и проверяйте изменения.


Теперь у нас все логи Cron в Ubuntu будут в отдельном файле.

Лог действий пользователя

Мне часто задают вопросы, как посмотреть лог действий пользователя в системе или как узнать, какие программы он запускал. По умолчанию, такие действия не логируются в ubuntu. Для этого нужно устанавливать какое-то дополнительное программное обеспечение. Я даже не знаю, кто умеет это делать. Обычно если надо фиксировать действия пользователя, включается лог работы sudo.

Для того, чтобы включить логирование действий пользователя через sudo, редактируем файл /etc/sudoers . Добавляем туда строку.

Теперь выполните какую-нибудь команду через sudo.

Выполненная команда пользователя сохранена в логе sudo.log. Теперь никто не сможет выполнить незаметно административные действия на сервере. Конечно, человек с полными правами сможет изменить любой лог файл, удалив свои действия при желании. Для этого важные логи нужно отправлять куда-то в другое место, но это уже тема отдельной статьи.

На сегодня по логам в Ubuntu у меня все. Желаю вам логов без ошибок и вечного аптайма (шутка, надо ставить обновы и перезагружаться).

Авторизуясь в LiveJournal с помощью стороннего сервиса вы принимаете условия Пользовательского соглашения LiveJournal

Добрый день. Поставил и настроил pptpd на ubuntu server 10.04 LTS как пишут в многочисленных howto.
Но никак не могу понять где смотреть кто подключен, кто пытался, но не вышло, длительность сессии и т.д. Есть такая возможность вообще?

UPD: а кроме /var/log/syslog ничего нет? Не очень удобно оттуда выцеплять инфу. Вот если бы была какая-нибудь гуёвина с фильтрами.

не используйте pptp, это кака.
посмотреть кто когда коннектился можно в логах (в убунту это кажется /var/log/syslog) Смотря зачем вам. Если именно VPN - openvpn есть. Если доступ по типу провайдерского, с аутентификацией и обсчётом трафика - rp-pppoe. rp-pppoe почитаю, спасибо. А чем pptpd плох? Вроде стандартный пакет. Внутри pptp и pppoe один и тот же протокол PPP с одними и теми же возможностями. Если говорить обо over что, то pptp как раз гибче, потому что pppoe ходит внутри L2, а pptp не ограничен пределами L2, хоть через весь интернет прокидываей.

ну мы же уже, как я понимаю, говорим про подключение к провайдеру, что вполне тянет на L2.

А через интернет - таки да, openvpn вкуснее неимоверно. Самый её большой минус - отсутствие поддержки в windows изкаропки. Впрочем, может быть, это и плюс: у MS могла бы получиться очень интересная реализация. ;)

Нет, мы не про подключение к провайдеру, мы про топик. В топике pptpd, раздащего доступ своим клиентам, причем, судя по уровню вопросов, явно не в контексте провайдерского бизнеса.

дада, в контексте маленького офиса и файлопомойки.

Удобство понятие субъективное. Лично мне awk очень удобен и он по логу может показать всё что оттуда в принципе возможно извлечь. В контексте маленького офиса pppoe, действительно, лучше всего - меньше оверхеда.

> А через интернет - таки да, openvpn вкуснее неимоверно.

Чем оно вкуснее штатного MS VPN, который умеет L2TP, работающий через тот же UDP?

Для организации VPN - тем, что плачевен в качестве безопасности, тем, что использует инкапсуляцию GRE, с которым много проблем в прохождении через NAT и странных провайдеров, тем, что использует транспорт TCP, от которого лишние накладные расходы и дичайшие тормоза при некоторой потери пакетов.
Для организации подключения к провайдерам, наверное, основной минус - лишние накладные расходы на транспорт TCP.

Ужасы какие вы говорите. Безопасность в pptp ровно та же, что в pppoe. GRE может не пролазить через NAT, а может и пролазить, но PPPoE-то вообще не ходит через маршрутизаторы. PPtP использует TCP только для управляющего соединения, никаких TCP over TCP в нём нет. Данные TCP идут внутри того самого GRE, а не внутри TCP, соответственно "дичайшие тормоза некоторой потери пакетов", характерные для TCP over TCP, не касаются pptp.

Кашу в голове надо устранять :-(

ок, спишем это на то, что у меня пакеты gre избирательно терялись, задерживались и перепутывались сильнее, чем UDP у OpenVPN. я не видел как в винде. Мне бы через вебинтерфейс поглядеть. Нет, это уже лишнее. Там настоек-то с гулькин нос.
Вы то зачем травите? поставьте и настройте freeradius - там ведется статистика

ну у меня это все смотрится через
last
dyug pts/14 хххххх.ххххх.ххх Thu Oct 13 13:36 still logged in
ххххххх1 ppp1 ххх.ххх.ххх.ххх Thu Oct 13 12:04 still logged in
ххххххх2 ppp14 ххх.ххх.хх.ххх Thu Oct 13 10:01 still logged in
ххххххх3 ppp13 ххх.ххх.хх.ххх Thu Oct 13 09:10 still logged in
xxxxxxx1 ppp1 xx.xxx.xxx.xx Thu Oct 13 08:14 - 11:52 (03:37)
xxxxxxx1 ppp1 xx.xx.xxx.xxx Wed Oct 12 20:18 - 20:57 (00:38)
xxxxxxx ppp7 xxx.xxx.xxx.xx Wed Oct 12 15:35 - 20:05 (04:30)

Вот подключения по пптп к убунту серверу, сервер поставлен по умолчанию.

Настройка OpenVPN на Ubuntu

VPN — виртуальная частная сеть, которая позволяет обеспечить одно или несколько сетевых соединений (логическую сеть) поверх другой сети (например, Интернет ).

В нашем случае мы рассмотрим создание надежной и защищенной сети VPN на основе ненадежной сети Интернет при помощи продукта OpenVPN в рамках операционной системы Ubuntu 16.04.

Установка необходимых пакетов

Команды будем выполнять от суперпользователя.

Приступим к установке ПО:

easy-rsa — программа которая служит для создания и ведения инфраструктуры открытых ключей (PKI) в командной строке (CLI). В нашем случае мы будем использовать ее для выполнения действий с ключами и сертификатами, необходимыми для работы OpenVPN .

Демон OpenVPN будет работать у нас от имени непривилегированного пользователя openvpn. Добавим его:

Создание инфраструктуры открытых ключей (PKI)

Далее займемся созданием ключей и сертификатов при помощи easy-rsa. Скопируем необходимые файлы в /etc/openvpn/ и перейдем в эту директорию:

Далее для удобства создания сертификатов в /etc/openvpn/easy-rsa/vars изменим следующие строки:

Производить работу с текстовыми файлами вы можете, используя удобные Вам текстовые редакторы (например, vi или nano).

Изменение данных переменных на работу VPN не повлияет, однако визуально может сделать подключение более информативным.

Затем необходимо инициализировать переменные, используемые при создании публичного ключа командой:

и удалить существующие ключи:

Приступаем к созданию удостоверяющего центра (CA):

В ходе установки Вам потребуется проверить корректность данных, используемых для запроса на создание сертификата (certificate request). Если Вы предварительно изменили значения переменных в /etc/openvpn/easy-rsa/vars, то Вам достаточно будет просто нажимать Enter. Также, по желанию, Вы сможете указать пароль, который будет защищать приватный ключ удостоверяющего центра. Хорошо запомните его или запишите в надежном месте!

Аналогичным образом создаем остальные ключи и сертификаты.

Сертификат сервера OpenVPN, где «server» - имя сервера:

Ключ Диффи-Хеллмана служит для использования одноименного криптографического протокола, который позволяет двум и более сторонам получить общий секретный ключ, используя незащищенный от прослушивания канал связи (создание ключа может занимать от нескольких секунд до нескольких минут, не прерывайте процесс):

Ключ клиента, где «user_1» - имя клиента:

Ключ HMAC для дополнительной защиты от DoS-атак и флуда:

Сертификаты с ключами будут помещаться в директорию /etc/openvpn/easy-rsa/keys:

Читайте также: