
В предыдущей публикации было рассмотрено подключение клиента к корпоративной сети VPN. Для корпоративного офиса рациональнее развертывать VPN-маршрутизатор. VPN-маршрутизатор позволяет прозрачно подключать сотрудников к корпоративной сети. Маршрутизатор может быть реализован в виде программного решения как виртуальная машина VMware так и нативно на одноплатном компьютере. В публикации рассматривается развертывание SoftEther VPN сервера в качестве VPN-маршрутизатора для локальной сети офиса. Для упрощения развертывания не рассматривается вариант разделения адресного пространства серверов и узлов сети Интернет, т.е. весь исходящий сетевой трафик из корпоративного офиса, в том числе и в сеть Интернет, маршрутизируется через VPN-сервер.
Оглавление
- Постановка задачи
- Архитектура
- VPN-маршрутизатор
- Создание и начальная настройка ВМ VM-SoftEther-VPN-router
- Развертывание Shadowsocks клиента в ВМ VM-SoftEther-VPN-router
- Развертывание SoftEther VPN сервера в ВМ VM-SoftEther-VPN-router
- Шаг 1 — Установка сервера SoftEther VPN
- Шаг 2 — Создание системного сервиса и запуск SoftEther VPN
- Шаг 3 — Загрузка менеджера управления сервером SoftEther VPN
- Шаг 4 — Настройка языка для менеджера управления сервером SoftEther VPN
- Шаг 5 — Создание профиля подключения в менеджере управления сервером SoftEther VPN
- Шаг 6 — Настройка сервера SoftEther VPN в менеджере управления
- Тестирование VPN-маршрутизатора
- Уменьшение размера ВМ VM-SoftEther-VPN-router
- Ресурсы
Постановка задачи
В филиале Contoso Corporation локальной сети развернуть VPN-маршрутизатор на базе сервера SoftEther VPN для доступа к корпоративным сервисам. Все рабочие станции должны быть в локальной сети подключены к VPN-маршрутизатору. На рабочих станциях не должно быть никакого дополнительного ПО для доступа к корпоративной сети Contoso, доступ к ресурсам должен быть прозрачен для любого клиента. Передаваемые данные через сеть Интернет должны быть зашифрованы на уровне VPN-маршрутизатора. VPN-маршрутизатор должен работать ОС версии не ниже Ubuntu Server 22.04 LTS.
Архитектура
На сервере сontoso-server необходимо развернуть WireGuard VPN сервер и Shadowsocks прокси. Как это сделать указано в публикации Создание корпоративной сети VPN на базе решений SoftEther VPN/WireGuard с Shadowsocks-туннелированием.
В филиале локальной сети Contoso Corporation развертывается виртуальная машина VMWare VM-SoftEther-VPN-router с двумя сетевыми интерфейсами, которая выступает в качестве SoftEther VPN маршрутизатора. ВМ (виртуальная машина) работает под ОС Ubuntu 22.04.2 LTS (Jammy Jellyfish). Вместо ВМ подойдет одноплатный компьютер с двумя проводными Ethernet интерфейсам, работающий на дистрибутиве основанным на ОС Ubuntu или Debian, например Armbian.
Незашифрованный сетевой трафик рабочих станций направляется в VPN-маршрутизатор, затем поступает в локальный SoftEther VPN сервер где и зашифровывается, после этого на этом же узле передается Shadowsocks клиенту по протоколу SOCKS5. Далее через сеть Интернет сетевой трафик передается в Shadowsocks прокси расположенный на сервере сontoso-server.
Shadowsocks клиент — реализация от проекта GitHub shadowsocks/shadowsocks-rust.
Способ развертывания:
- сервер SoftEther VPN на VM-SoftEther-VPN-router: нативно из исходников;
- Shadowsocks клиент на VM-SoftEther-VPN-router: как docker-контейнер — образ ghcr.io/shadowsocks/sslocal-rust.
Схема корпоративной сети Contoso Corporation с SoftEther VPN маршрутизатором и Shadowsocks прокси (в формате Visio)
VPN-маршрутизатор
VPN-маршрутизатор — это маршрутизатор с дополнительным ПО, в задачу которого входит организация VPN туннеля до VPN сервер. Сетевой трафик весь или частично поступающий в VPN-маршрутизатор зашифровывается и передается по VPN туннелю, это является основной задачей VPN-маршрутизатора. Дополнительно VPN-маршрутизатор избавляет от необходимости каждый раз устанавливать на каждое рабочее место VPN-клиент, в особенности это играет большую роль в случае использование различных ОС. VPN-маршрутизатор по отношению к пользователю рабочей станции работает по принципу «включил и забыл», т.е. не требует от пользователя выполнение каких либо настроек и действий для его использования. В отличие от прямого доступа к сети Интернет, необходимо помнить о снижение скорости и увеличение отклика до различных Интернет-ресурсов. Это связанно с тем, что сетевой трафик дополнительно приходится шифровать и передавать на удаленный VPN-сервер.
Создание и начальная настройка ВМ VM-SoftEther-VPN-router
Шаг 1 — Добавление сетевых адаптеров
Выполняем установку Ubuntu 22.04.2 LTS в ВМ, затем добавляем в конфигурацию ВМ второй сетевой адаптер. Сетевой адаптер добавляется в настройках Virtual Machine Settings, кнопка Add…
Настройки виртуальной машины с двумя сетевыми адаптерами
Первый сетевой адаптер в виртуальный машине должен быть подключен к локальной сети офиса, второй сетевой адаптер подключен к изолированной виртуальной сети VMnet2 к которой подключаются виртуальные машины.
Подключение к сетям сетевых адаптеров виртуальной машины
После запуска ВМ VM-SoftEther-VPN-router выполним команду ip a для определения наименования сетевых интерфейсов.
Шаг 2 — Настройка сетевых адаптеров
Для настройки сетевых адаптеров используется утилита netplan , в случае отсутствия установить пакет netplan.io . Команда установки пакета:
$ sudo apt-get update $ sudo apt-get install -y netplan.io mc
Где пакет mc используется для редактирования текстовых файлов, в него входит редактор mcedit .
После установки, по пути /etc/netplan должен быть доступен конфигурационный файл 00-installer-config.yaml в формате YAML.
Содержимое файла 00-installer-config.yaml:
# This is the network config written by 'subiquity' network: version: 2 renderer: networkd ethernets: ens32: dhcp4: yes
Зададим другие настройки для сетевого интерфейса ens32 и добавить конфигурацию для ens34.Открываем файл 00-installer-config.yaml в редакторе mcedit командой:
$ sudo mcedit /etc/netplan/00-installer-config.yaml
И заменяем содержимое на следующий итоговый вариант:
# This is the network config written by 'subiquity' network: version: 2 renderer: networkd ethernets: ens32: dhcp4: yes nameservers: addresses: [1.1.1.1, 8.8.8.8] ens34: dhcp4: no addresses: - 192.168.101.2/24
Где 192.168.101.2 — IP-адрес сетевого интерфейса ens34, и он же шлюз для изолированной виртуальной сети VMnet2. Но в данной конфигурации IP-адрес не важен т.к. SoftEther VPN нативно через себя пропускает весь сетевой трафик в рамках текущей задачи.
Сохраняем изменения F2 и закрываем редактор F10 .
Для принятия настроек выполняем команду, и подтверждаем новые настройки, нажимаем на ENTER:
$ sudo netplan try
Заново выводим список сетевых интерфейсов для проверки, командой ip a и проверяем новую конфигурацию.
Развертывание Shadowsocks клиента в ВМ VM-SoftEther-VPN-router
Шаг 1 — Развертывание Docker и создание внутренней сети для docker-контейнеров
Развертывание Shadowsocks клиента как docker-контейнер самый простой вариант т.к. не тянет за собой набор зависимостей, поэтому на маршрутизаторе развернем Docker. Установка Docker просто и быстро выполняется по руководству Простая установка Docker в Armbian/Linux для ARM, данное руководство подойдет и для платформы x86.
До создания docker-контейнеров создадим стандартную внутреннюю сеть типа bridge с названием br0. Где диапазон адресов для docker-контейнеров 172.31.1.1 — 172.31.1.126, шлюз 172.31.1.127.
Bridge — это внутренняя сеть Docker, изолированная от сети хоста. Вы можете получить доступ из сети Интернет или локальной сети к контейнерам только через те порты, которые открыты при запуске контейнера командой -p . Можно создать любое количество сетей типа bridge.
Если виртуальная сеть уже создана, то этот шаг можно пропустить. Команда создания сети br0:
$ sudo docker network create \ --driver=bridge \ --subnet=172.31.1.0/24 \ --ip-range=172.31.1.0/25 \ --gateway=172.31.1.127 \ br0
После создания внутренней сети просмотрим список сетей docker, командой docker network ls :
Внутренняя сеть br0 создана. Переходим к следующему шагу развертывания Shadowsocks клиента.Шаг 2 — Создание конфигурации для Shadowsocks клиента
До запуска Shadowsocks клиента необходимо создать конфигурационный файл sslocal-config.json. Данный файл разместим по пути /etc/ , где и хранятся все конфигурационные файлы системы. Откроем файл конфигурации на редактирование, команда:
$ sudo mcedit /etc/sslocal-config.json
И вставим конфигурацию, которую подготавливали для Windows, в разделе Шаг 2 — Настройка работы клиента SoftEther VPN через Shadowsocks прокси, но изменим в части IP-адреса, 127.0.0.1 заменим на 0.0.0.0.
Содержание файла /etc/sslocal-config.json :
{ "locals": [{ "local_address": "0.0.0.0", "local_port": 1080, "mode": "tcp_and_udp" }], "server": "185.240.242.10", "server_port": 8388, "password": "{PASSWORD}", "method": "chacha20-ietf-poly1305" }
Если на сервере настраивали протокол Shadowsocks-2022 AEAD-2022, то строку method можете изменить на тот вариант, который вы выбрали, и порт подключения, строка server_port.
Сохраняем изменения F2 и закрываем редактор F10 .
Шаг 3 — Развертывание docker-контейнера с Shadowsocks клиентом
Развертывание Shadowsocks клиента на маршрутизаторе выполним на основе docker-образа ghcr.io/shadowsocks/sslocal-rust.
- IP-адрес контейнера во внутренней сети br0: 172.31.1.2;
- Порт для подключения по протоколу SOCKS5: 1080/tcp.
Выполним команду создания docker-контейнера:
$ docker run -d \ --name=sslocal-rust \ -p 1080:1080/tcp \ -p 1080:1080/udp \ -v /etc/sslocal-config.json:/etc/shadowsocks-rust/config.json \ --restart=always \ --net br0 \ --ip 172.31.1.2 \ -dit ghcr.io/shadowsocks/sslocal-rust:latest
То же самое в формате YML для docker-compose.
Проверим работоспособность созданного контейнера, командой:
$ docker stats --no-stream
Смотрим логи, командой:
$ docker logs sslocal-rust
Результат выполнения:
root@ubuntu:~# docker stats --no-stream CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS 52379cfb092e sslocal-rust 0.00% 1.723MiB / 1.883GiB 0.09% 1.39kB / 0B 15.8MB / 0B 4 root@ubuntu:~# docker logs sslocal-rust /usr/bin/docker-entrypoint.sh: Configuration complete; ready for start up INFO shadowsocks local 1.17.1 build 2023-11-26T16:01:29.423274438+00:00 INFO shadowsocks socks TCP listening on 0.0.0.0:1080 INFO shadowsocks socks5 UDP listening on 0.0.0.0:1080
Проверка Shadowsocks прокси с помощью браузера Firefox
Браузер Firefox позволяет работать с сетью Интернет через различные прокси, среди протоколов, которых поддерживается протокол SOCKS5. Для тестирования Shadowsocks клиента настроим работу браузера Firefox через docker контейнер sslocal-rust. При создании docker контейнера был открыт порт 1080 для приема внешний подключений.Откроем настройки браузера Firefox, Настройки > Настройки сети. Затем выбрать Ручная настройка прокси и указать следующие параметры.
- Узел SOCKS: 192.168.50.18
- Порт: 1080
- SOCKS5
Затем перейти на страниу ifconfig.co для отображения внешнего IP-адреса.
Развертывание SoftEther VPN сервера в ВМ VM-SoftEther-VPN-router
Шаг 1 — Установка сервера SoftEther VPN
Установку сервера SoftEther VPN выполним из исходного текста, это связано с тем, что если запускать сервер как docker контейнер, то не происходит низкоуровневого взаимодействия с Ethernet интерфейсом. Возьмем последнюю версию с репозитория GitHub SoftEtherVPN/SoftEtherVPN. Выполним следующие команды для установки:
$ sudo apt-get update $ sudo apt-get install -y git cmake gcc g++ make pkgconf libncurses5-dev libssl-dev libsodium-dev libreadline-dev zlib1g-dev $ git clone https://github.com/SoftEtherVPN/SoftEtherVPN.git $ cd SoftEtherVPN $ git submodule init && git submodule update $ ./configure $ make -C build $ sudo make -C build install
Бинарные исполняемые файлы
Бинарные исполняемые файлы будут размещены по пути /usr/local/libexec/softether/vpnserver . В этом же каталоге, так же размещается конфигурационный файл vpn_server.config . В случае переноса сервера SoftEther VPN выполните копирование данного файла, на новый узел.
Шаг 2 — Создание системного сервиса и запуск SoftEther VPN
После установки сервера в операционной системе зарегистрируется системный сервис под названием softether-vpnserver. Данный сервис необходимо перевести в режим автозапуска после старта операционной системы, командой:
$ sudo systemctl enable softether-vpnserver
Запустим сервис командой:
$ sudo systemctl start softether-vpnserver
Для остановки сервиса используется следующая команда (выполнять не надо):
$ sudo systemctl stop softether-vpnserver
После запуска сервиса убедимся в нормальной работе путем просмотра статуса командой:
$ systemctl status softether-vpnserver
Если статус active (running), то можно приступать к конфигурированию сервера SoftEther VPN.
Результат выполнения команды:
root@ubuntu:~/SoftEtherVPN# systemctl status softether-vpnserver ● softether-vpnserver.service - SoftEther VPN Server Loaded: loaded (/lib/systemd/system/softether-vpnserver.service; enabled; vendor preset: enab> Active: active (running) since Sat 2024-01-06 02:34:37 MSK; 8s ago Process: 3919 ExecStart=/usr/local/libexec/softether/vpnserver/vpnserver start (code=exited, s> Main PID: 3921 (vpnserver) Tasks: 33 Memory: 12.9M CPU: 381ms CGroup: /system.slice/softether-vpnserver.service ├─3921 /usr/local/libexec/softether/vpnserver/vpnserver execsvc └─3922 /usr/local/libexec/softether/vpnserver/vpnserver execsvc Jan 06 02:34:37 ubuntu systemd[1]: Starting SoftEther VPN Server... Jan 06 02:34:37 ubuntu vpnserver[3919]: The SoftEther VPN Server service has been started. Jan 06 02:34:37 ubuntu systemd[1]: Started SoftEther VPN Server.
Шаг 3 — Загрузка менеджера управления сервером SoftEther VPN
Для настройки SoftEther VPN Server используется менеджер управления (только для ОС Windows) загружаемый со страницы SoftEther Download Center, но к сожалению без поддержки конфигурирования протокола SOCKS5. Загрузить менеджер управления с поддержкой SOCKS5 можно двумя путями:
- с зеркала на GitHub;
- с официального ночного Pipeline на портале dev.azure.com.
Для загрузки с зеркала на GitHub достаточно загрузить архив Binaries_x64, все собранные инсталляторы и бинарники доступны на GitHub devdotnetorg/softethervpn.
Загрузка с pipeline несколько сложнее. Для начала перейдем по ссылке dev.azure.com/SoftEther-VPN. Затем выбрать Pipeline с названием Nightly. Далее из списка выбираем последний по дате, например #20231110.1 • Merge pull request #1924 from hiura2023/master. Из списка Jobs выбираем Windows_x64. Затем в окне журнала справа на последней строке расположится ссылка 2 artifacts, необходимо перейти по этой ссылке. Из списка Published выбрать Binaries_x64, но нажать на три точки справа пункта для показа меню. В этом меню выбрать Download artifacts.
Последовательность загрузки архивов с бинарниками SoftEther VPN с ресурса dev.azure.com
Шаг 4 — Настройка языка для менеджера управления сервером SoftEther VPN
После распаковки архива необходимо интерфейс переключить на английский язык. Для этого запустить менеджер клиента, файл vpncmgr.exe, в пункте меню выбрать Инструменты => Настройки языка в окне выбрать English и нажать кнопку Далее >. Затем Готово и закрыть клиента.
Переключение языка в SoftEther VPN клиенте
Шаг 5 — Создание профиля подключения в менеджере управления сервером SoftEther VPN
Для управления сервером используется утилита vpnsmgr.exe. После запуска утилиты переходим к созданию Соединения, пункт меню New Setting, указываем следующие настройка:
- Setting Name: gateway_to_vpn_contoso_server;
- Host Name: 192.168.50.18;
- Port Number: 5555;
- Password: пароль по умолчанию пустой.
Затем подключаемся к серверу кнопка — Connect.
Шаг 6 — Настройка сервера SoftEther VPN в менеджере управления
При первом подключении появится запрос изменения пароля, указываете новый пароль и нажимаете на кнопку OK.
Затем окно мастера настройки SoftEther VPN Server / Bridge Easy Setup закрываете. В вопросе включения поддержки протокола IPSec, отвечаем No.
Создание витуального хаба VPN
По умолчанию доступен хаб — DEFAULT, удаляем его.
Создаем новый хаб — кнопка Create a Virtual Hub. Укажем Virtual Hub Name: VPN. Открываем настройки хаба кнопка — Manage Virtual Hub.
Новый виртуальный хаб VPN в SoftEther VPN
Настройка каскадного подключения
Настроим каскадное подключение до сontoso-server кнопка Manage Cascade Connections. В окне Cascade Connections on VPN нажимаем на кнопку New.
Создание каскадного подключения в SoftEther VPN
Создаем новое подключение напрямую без использования SOCKS5, заполняем поля:
- Settings Name: Contoso Corporation VPN
- Host Name: 185.240.242.10
- Port Number: 5555 (SE-VPN Port)
- Virtual Hub Name: VPN
- User Name: officeuser1
- Password: пароль который был указан
- Proxy Type: Direct TCP/IP Connection (No Proxy)
Обратите внимание, при переходе на поле Virtual Hub Name в списке должен появиться пункт VPN. После создания профиля подключения переводим его в режим Online. Поле Status должно измениться на Online (Established).
Включено каскадное подключение до сервера сontoso-server
Если удалось создать подключение, то переключаем работу соединения через прокси по протоколу SOCKS5, для этого повторно открываем настройки соединения, кнопка Edit. Изменяем пункт Proxy Type на Connect via SOCKS5 Proxy Server, затем нажимаем на кнопку Proxy Server Settings. В окрывшеся окне выставить следующие значения:
- Host Name: localhost
- Port: 1080
Подключение к серверу сontoso-server через Shadowsocks прокси
Закрываем окно настроек, переводим соединение в режим выключено Offline, и снова подключаемся, кнопка Online. Поле Status должно измениться на Online (Established). Каскадное подключение к сontoso-server серверу настроено.
Закрываем окно настроек Cascade Connections on VPN и окно управления виртуальным хабом — VPN.
Теперь настроим локальный мост который направит сетевой трафик в хаб VPN, для которого выше было настроено каскадное подключение.
Настройка локального моста
Для настройки моста на главном окне конфигурирования SoftEther VPN нажмем на кнопку Local Bridge Setting.
Главное окно программы конфигурирования Shadowsocks прокси
Заполнить следующие поля:
- Virtual Hub: VPN (виртуальный хаб для моста)
- Type to Create: Bridge with Physical Existing Network Adapter (тип моста, мост с локальным физическим сетевым адаптером)
- LAN Adapter: ens34 (название сетевого адаптера, сетевой трафик которого направляется в виртуальный хаб VPN).
После выбора опций нажимаем на кнопку Create Local Bridge.
Создание Local Bridge в SoftEther VPN
После нажатия на кнопку создания моста, отобразится окно с дополнительной информацией об использование функции локального моста в виртуальной машине. Виртуальная машина должна поддерживать режим «Promiscuous Mode» (MAC Address Spoofing, подмена MAC-адреса). В данном случае в VMWare Workstation эта опция работает.
Использование функции локального моста в виртуальной машине
На этом все настройки закончены, перезапустите ВМ VM-SoftEther-VPN-router для проверки автозапуска SoftEther VPN + Shadowsocks клиента и поднятия моста до сервера сontoso-server.
Тестирование VPN-маршрутизатора
Для тестирования VPN-маршрутизатора создадим новую ВМ VM-Client работающую под ОС Windows 10. Сетевой адаптер подключим к изолированной виртуальной сети VMnet2.
Откроем сетевые настройки адаптера.
Настройки сетевого подключения ВМ VM-Client
SoftEther VPN выдал сетевые настройки. Проверим маршрутизацию трафика путем построения маршрута до сервера с IP-адресом 1.1.1.1 (DNS сервер компании Cloudflare).
Результат выполнения:
C:\Windows\system32>tracert 1.1.1.1 Tracing route to one.one.one.one [1.1.1.1] over a maximum of 30 hops: 1 82 ms 87 ms 83 ms 192.168.30.1 2 92 ms 122 ms 151 ms 172.28.1.127 3 87 ms 83 ms 93 ms *** *** 4 86 ms 89 ms 88 ms *** *** 5 83 ms 84 ms 87 ms ffm-b11-link.ip.twelve99.net [213.248.85.192] 6 83 ms 84 ms 95 ms cloudflare-ic-328337.ip.twelve99-cust.net [62.115.144.199] 7 84 ms 93 ms 83 ms 172.70.244.3 8 94 ms 82 ms 86 ms one.one.one.one [1.1.1.1] Trace complete.
Сетевой трафик проходит через VPN-маршрутизатор.
Сетевые шлюзы:
- 192.168.30.1 — шлюз виртуального хаба VPN на сontoso-server;
- 172.28.1.127 — шлюз внутренней сети br0 docker контейнеров на сontoso-server.
Для проверки внешнего IP-адреса запустим браузер и открыть адрес ifconfig.co. На начальной странице отобразится публичный IP-адрес 85.240.242.10, т.к. теперь весь сетевой трафик маршрутизируется через сервер сontoso-server.
Уменьшение размера ВМ VM-SoftEther-VPN-router
После успешного тестирования VPN-маршрутизатора необходимо выполнить оптимизацию размера ВМ VM-SoftEther-VPN-router. Далее, требуется выполнить список действий нацеленных на уменьшение размера занимаемого пространства диска виртуальной машиной.
Шаг 1 — Отключение логов в SoftEther VPN
Журналирование настраивается отдельно для каждого хаба. Необходимо запустить vpnsmgr.exe для управления SoftEther VPN. Подключаемся к серверу, открываем настройки хаба, кнопка — Manage Virtual Hub. Далее, кнопка Log Save Settings. По умолчанию включен базовый уровень журналирования.
Окно настроек сохранения логов в SoftEther VPN
Но нам требуется отключить любые логи, поэтому снимаем галочки напротив пунктов:
- Save Security Log;
- Save Packet Log.
Отключение логов в в SoftEther VPN
Затем подтверждает изменение настроек, кнопка ОК.
Файлы журналов хранятся в каталогах по путям:
- /usr/local/libexec/softether/vpnserver/packet_log/
- /usr/local/libexec/softether/vpnserver/security_log/
- /usr/local/libexec/softether/vpnserver/server_log/
Если данные каталоги не пустые, то можете удалить содержимое этих каталогов.
Шаг 2 — Удаление каталога клона репозитория SoftEtherVPN
В процессе установки Softether VPN, репозиторий проекта был клонирован в домашнюю папку, каталог ~/SoftEtherVPN . Данный каталог далее не потребуется, поэтому можно его удалить. Если установка выполнялась под пользователем root, то необходимо выполнить следующую команду:
rm -rf /root/SoftEtherVPN
Шаг 3 — Уменьшение размера swap файла или его удаление
ВМ не предусматривает выполнение больших вычислительных задач, поэтому, можно либо уменьшить размер файла подкачки (swap файл), либо его удалить. В данном случае, ВМ выделено 2 ГБ ОЗУ и размер swap файла, составляет 2 ГБ, поэтому размер swap файла можно сократить до 1 ГБ.
Уменьшим размер swap файла до 1 ГБ:
sudo swapoff /swap.img sudo rm /swap.img sudo fallocate -l 1G /swap.img sudo mkswap /swap.img sudo swapon /swap.img
Более подробно в посте Как увеличить размер swap в Ubuntu.
Шаг 4 — Отключение системного журнала
Система журналирования в операционных системах Linux работает на базе демона journald, который занимается обработкой сообщений от служб, initrd, ядра и т.д. Доступ к собранной в журнале информации осуществляется путем использования утилиты journalctl. Она же дает возможности для управления: выполнять фильтрацию, менять формат отображения, мониторить активные процессы и пр. Более подробно в посте Инструкция по использованию Journalctl в Linux.
Вначале выполним очистку журнала событий:
sudo journalctl --rotate sudo journalctl --vacuum-time=1s
Теперь необходимо в конфигурационном файле /etc/systemd/journald.conf параметр Storage=auto в секции [Journal], изменить на значение Storage=none, не забываем удалить комментарий «#«.
root@ubuntu:~# cat /etc/systemd/journald.conf # This file is part of systemd. ... # See journald.conf(5) for details. [Journal] Storage=none #Compress=yes #Seal=yes ...
Перезагружаем службу и удаляем остальные файлы журналирования:
sudo systemctl restart systemd-journald sudo rm -R /run/log/journal/*
Шаг 5 — Удаление rsyslog
Если в системе установлен rsyslog, то необходимо его отключить:
sudo systemctl stop rsyslog sudo systemctl disable rsyslog
Шаг 6 — Отключение автоматического обновления ОС
Ubuntu периодически загружает новые версии пакетов, в частности обновляет ядро. На протяжение жизни ВМ, занимаемый объем пространства диска устаревших пакетов, может достигать гигабайт. Для отключения автоматического обновления ОС необходимо внести изменения в файл с названием /etc/apt/apt.conf.d/20auto-upgrades . Вносим в него следующие изменения: установить значение APT::Periodic::Update-Package-Lists и APT::Periodic::Unattended-Upgrade, равное 0:
root@ubuntu:~# cat /etc/apt/apt.conf.d/20auto-upgrades APT::Periodic::Update-Package-Lists "0"; APT::Periodic::Unattended-Upgrade "0";
У пользователя доступна возможность отключать только отдельные источники обновлений. С этой целью необходимо изменить файл конфигураций /etc/apt/apt.conf.d/50unattended-upgrades . В секции Unattended-Upgrade::Allowed-Origins необходимо выборочно закомментировать отдельные позиции, например:
root@ubuntu:~# cat /etc/apt/apt.conf.d/50unattended-upgrades ... Unattended-Upgrade::Allowed-Origins { //"${distro_id}:${distro_codename}"; //"${distro_id}:${distro_codename}-security"; // Extended Security Maintenance; doesn't necessarily exist for // every release and this system may not have it installed, but if // available, the policy for updates is such that unattended-upgrades // should also install from here by default. //"${distro_id}ESMApps:${distro_codename}-apps-security"; //"${distro_id}ESM:${distro_codename}-infra-security"; // "${distro_id}:${distro_codename}-updates"; // "${distro_id}:${distro_codename}-proposed"; // "${distro_id}:${distro_codename}-backports"; }; ...
Шаг 7 — Cron задача для удаления логов
Если же появляются файлы журналирования событий, то необходимо создать cron задачу для периодического выполнения. В каталоге по пути /var/scripts/ создадим файл clearlogs.sh с периодическим запуском один раз в час.
Создадим каталог:
sudo mkdir -p /var/scripts/
Создадим файл clearlogs.sh :
sudo mcedit /var/scripts/clearlogs.sh
Содержимое файла clearlogs.sh :
#!/bin/bash # Run: # chmod +x clearlogs.sh # ./clearlogs.sh # Clearing system logs set -e #Exit immediately if a comman returns a non-zero status #System find /var/log/ -name "*.*" -type f -exec rm -f {} \; find /var/log/ -name "*" -type f -exec rm -f {} \; #SoftEther VPN find /usr/local/libexec/softether/vpnserver/packet_log/ -name "*.*" -type f -exec rm -f {} \; find /usr/local/libexec/softether/vpnserver/security_log/ -name "*.*" -type f -exec rm -f {} \; find /usr/local/libexec/softether/vpnserver/server_log/ -name "*" -type f -exec rm -f {} \; # exit exit 0
Выставим флаг исполнения:
chmod +x /var/scripts/clearlogs.sh
Откроем список cron задач:
sudo crontab -e
Если cron не установлен в системе, то необходимо выполнить команду для установки:
sudo apt update && sudo apt install cron && sudo systemctl enable cron && sudo systemctl status cron
Добавим строки:
# At minute 0 past every 2nd hour. 0 */2 * * * sudo /var/scripts/clearlogs.sh # after system startup @reboot sleep 60 && sudo /var/scripts/clearlogs.sh
Для выставления другого рассписания выполнения задачи воспользуйтесь сайтом Crontab.guru — The cron schedule expression generator.
Сохраним изменения и перезапустим службу:
sudo systemctl restart cron sudo systemctl status cron
Шаг 8 — Удаление лишних пакетов
После обновления ОС остаются устаревшие версии ядер, и другие пакеты. Удалить все старые ядра, кроме используемого и предпоследнего, также можно командой:
sudo apt-get purge $(dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | head -n -1)
Утилита wajig отображает список пакетов в порядке возрастания их размера. Вы можете вывести список пакетов и определить какие требуется удалить.
Установка:
sudo apt update && sudo apt install wajig
Вывести список наибольших по размеру пакетов:
wajig large
Результат выполнения команды:
root@ubuntu:~# wajig large Package Size (KB) Status =================================-==========-============ aptitude-common 10,100 installed binutils-x86-64-linux-gnu 10,431 installed linux-image-5.15.0-112-generic 11,443 config-files ... linux-headers-5.15.0-124 76,130 installed docker-ce 94,341 installed snapd 101,504 installed linux-modules-5.15.0-112-generic 112,943 config-files ... linux-firmware 929,901 installed
В списке пакетов присутствует пакет snapd, который не используется и занимает 104 МБ дискового пространства. Далее, удалим пакет snapd:
sudo apt purge snapd
Команда purge в отличие от apt remove —auto-remove , удаляет все конфигурационные файлы, связанные с данным пакетом, в том числе и сам пакет.
Шаг 9 — Удаление кэша и остальных неиспользуемых пакетов
Просто выполнить в терминале:
sudo apt clean autoclean -y \ && sudo apt autoremove -y \ && sudo apt clean \ && sudo apt --purge autoremove \ && sudo rm -rf /var/lib/{cache,log}/ \ && sudo rm -rf /var/log/* \ && sudo rm -rf /tmp/* /var/tmp/* \ && sudo rm -rf /var/cache/fontconfig/ \ && sudo rm -rf /var/cache/apt/ \ && sudo rm -rf /var/cache/man/
Дополнительно, можно удалить неиспользуемые старые версии пакетов:
dpkg -l | awk '/^rc/ {print $2}' | xargs sudo dpkg --purge
Вывести список самых больших файлов
Данная команда позволит найти самые большие файлы. Вывод идет в порядке убывания по 10 файлов за раз. Количество выводимых файлов можно изменить, просто изменив число 10 на любое другое:
sudo find -type f -exec du -Sh {} + | sort -rh | head -n 10
Шаг 10 — Сжатие диска ВМ, файл *.vmdk
Несмотря на все действия, выполненные выше, размер диска ВМ, файл *.vmdk не уменьшиться в размере. Для сокращения размера диска *.vmdk необходимо в ВМ выполнить команду:
sudo vmware-toolbox-cmd disk shrink /
Более подробно в посте Уменьшение размера виртуальной машины VMware для гостевой-ОС Linux и освобождение пространства на диске.
Ресурсы
- How to Install and Configure SoftEther VPN on Ubuntu by liosa.f — OPERAVPS
- How to set up Softether VPN client on Ubuntu 20.04 / Linux [Simple] by Muhammad Faizan — Medium
- WireGuard fast, modern, secure VPN tunnel — WireGuard
- Installation — WireGuard
- linuxserver/wireguard — Docker Image Docker Hub
- SoftEther VPN Project — SoftEther VPN Project
- GitHub SoftEtherVPN/SoftEtherVPN
- siomiz/softethervpn — Docker Image Docker Hub
- SoftEther Download Center
- Pipelines of SoftEther VPN — Azure DevOps
- Shadowsocks A fast tunnel proxy that helps you bypass firewalls
- GitHub shadowsocks/shadowsocks-rust
- What is a SOCKS5 proxy and why should you use one NordVPN
- SoftEther VPN — SoftEther VPNВикипедия
- Что такое Softether Vpn?