SoftEther VPN — это бесплатное, кроссплатформенное, многопротокольное программное обеспечение VPN-клиента и VPN-сервера с открытым исходным кодом.
Установку SoftEther VPN мы будем выполнять из исходников на базе ОС Ubuntu 22.04. Рассмотрим процесс компиляции и установки программного обеспечения в командной строке Linux.
1. Устанавливаем необходимые пакеты:
apt update
apt install gcc make wget -y
2. Скачиваем архив SoftEther VPN Server с оф. сайта (версия 4.38-9760 на момент написания статьи)
wget https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/v4.38-9760-rtm/softether-vpnserver-v4.38-9760-rtm-2021.08.17-linux-x64-64bit.tar.gz
3. Разархивируем файлы и запустим процесс компиляции и установки:
tar -xvzf softether-vpnserver-v4.38-9760-rtm-2021.08.17-linux-x64-64bit.tar.gz -C /opt/
cd /opt/vpnserver/
make
4. Запускаем SoftEther VPN Server:
/opt/vpnserver/vpnserver start
5. Назначаем пароль для администратора:
/opt/vpnserver/vpncmd
Выбираем 1 - настройку VPN сервера
1. Management of VPN Server or VPN Bridge
На следующие два вопроса просто нажимаем ENTER
Hostname of IP Address of Destination:
Specify Virtual Hub Name:
1. Management of VPN Server or VPN Bridge
На следующие два вопроса просто нажимаем ENTER
Hostname of IP Address of Destination:
Specify Virtual Hub Name:
После мы окажемся в командной оболочке SoftEther. Вводим команду:
VPN Server> ServerPasswordSet
6. Создадим виртуальный TAP интерфейс:
TAP эмулирует Ethernet устройство и работает на канальном уровне модели OSI, оперируя кадрами Ethernet. TUN (сетевой туннель) работает на сетевом уровне модели OSI, оперируя IP пакетами. TAP используется для создания сетевого моста, тогда как TUN для маршрутизации. SoftEther в режиме SecureNAT может пригодиться, когда нет возможности создать TAP/TUN интерфейс.
VPN Server> BridgeDeviceList
VPN Server> BridgeCreate DEFAULT /DEVICE:soft /TAP:yes
VPN Server> BridgeList
7. Проверяем статус интерфейса в системе:
ip addr или ifconfig
8. Создадим сервис для автозапуска SoftEther VPN Server с присвоением IP-адреса интерфейсу tap_soft:
vi /etc/systemd/system/vpnserver.service
[Unit]
Description=SoftEther VPN Server
After=network.target
[Service]
Type=forking
ExecStart=/opt/vpnserver/vpnserver start
ExecStartPost=/bin/sleep 3s
ExecStartPost=/sbin/ifconfig tap_soft 192.168.249.1/24
#ExecStartPost=/sbin/ip address add 192.168.249.1/24 dev tap_soft
ExecStop=/opt/vpnserver/vpnserver stop
#ExecReload=/bin/kill -HUP $MAINPID
#Restart=on-failure
[Install]
WantedBy=multi-user.target
Перечитываем конфигурацию systemd:
systemctl daemon-reload
Разрешаем автозапуск и стартуем vpnserver:
systemctl enable --now vpnserver
Проверяем статус службы:
systemctl status vpnserver
9. В качестве DHCP-сервера установим сервис Dnsmasq. Для начала остановим службу systemd-resolved:
systemctl disable --now systemd-resolved
rm -f /etc/resolv.conf
echo 'nameserver 1.1.1.1' > /etc/resolv.conf
echo 'nameserver 8.8.8.8' >> /etc/resolv.conf
apt install dnsmasq -y
10. Выполним бэкап конфига Dnsmasq:
mv /etc/dnsmasq.conf /etc/dnsmasq.conf.bak
11. Приводим конфиг к следующему виду:
vi /etc/dnsmasq.conf
interface=tap_soft
dhcp-range=tap_soft,192.168.249.10,192.168.249.200,12h
dhcp-option=3
dhcp-option=tap_soft,6,1.1.1.1,8.8.8.8
dhcp-option=121,192.168.0.0/16,192.168.249.1,172.16.0.0/12,192.168.249.1,10.0.0.0/8,192.168.249.1
12. Перезапускаем службу dnsmasq:
systemctl restart dnsmasq
13. Разрешаем пересылку пакетов между интерфейсами:
sysctl net.ipv4.ip_forward=1
echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf
14. Настроим трансляцию трафика на основе источника:
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.249.0/24 -j MASQUERADE
apt install iptables-persistent -y
iptables-save > /etc/iptables/rules.v4