LINUX.ORG.RU

Статьи

Активные теги:

 ,

Подключение VDS в локальную сеть через MikroTik посредством VPN L2TP+IPSec

Статьи — Администрирование

Предыстория! Убил я на это 4 дня и 4 ночи :D но мне удалось решить и организовать задуманную мною задачу и хочу поделиться, возможно кому то это понадобиться так как в интернете я путнего так ни чего и не нашел пока сам методом тыка и поиска все не решил сам! Сразу скажу что в Linux`ах и написание статей я не спец, самоучка, поэтому не судите строго! :)

Что мы имеем. В данном примере будет приведена наша сеть. У нас домашняя локальная сеть из 4-х сегментов вся на MikroTik`ах ниже я приведу все подсети для понимания

10.0.0.0/27 - подсеть выделанная для VPN 1 сети
10.0.0.32/27 - подсеть выделанная для VPN 2 сети
10.0.0.64/27 - подсеть выделанная для VPN 3 сети
10.0.0.96/27 - подсеть выделанная для VPN 4 сети
10.0.1.0/24 - подсеть выделенная для локалки 1 сети
10.0.2.0/24 - подсеть выделенная для локалки 2 сети
10.0.3.0/24 - подсеть выделенная для локалки 3 сети
10.0.4.0/24 - подсеть выделенная для локалки 4 сети

так как у нас VPN клиентов не много было принято решение не раскидывать их по подсетям и не мудрить и мы сделали ограничение в /27, самый мощный и стабильный MikroTik у нас стоит в 1 сети следовательно мы сделали подключение по схеме звезда через VPN L2TP+IPSec, 1 сеть VPN сервер, 2,3,4 сеть через VPN клиент подключены к 1 сети VPN серверу, естественно на всех MikroTik`ах настроены route во все подсети то есть все друг друга видят, пингуют, шары и так далее.

Задача была подключить VDS (наш VDS на Ubuntu 20.04) в локальную сеть к VPN серверу 1 сети через L2TP+IPSec со всеми route как положено, и тут у нас начались головники, поэтому прикладываю ниже инструкцию как мы это организовали.

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

sudo apt-get install strongswan xl2tpd net-tools

далее заходим в файл ipsec.conf

sudo nano /etc/ipsec.conf

и вносим следующие данные

conn НАЗВАНИЕ_ВАШЕГО_ПОДКЛЮЧЕНИЯ
  auto=add
  dpdaction=restart
  closeaction=restart
  keyexchange=ikev1
  authby=secret
  type=transport
  left=%defaultroute
  leftprotoport=17/1701
  rightprotoport=17/1701
  right=АДРЕС_VPN_СЕРВЕРА
  ike=aes128-sha1-modp2048
  esp=aes128-sha1

заходим в файл ipsec.secrets

sudo nano /etc/ipsec.secrets

и вносим строку с паролем от IPSec

: PSK "ПАРОЛЬ_IPSEC"

в начале знак двоеточие : обязательно

меняем права на ipsec.secrets

sudo chmod 600 /etc/ipsec.secrets

заходим в файл xl2tpd.conf

sudo nano /etc/xl2tpd/xl2tpd.conf

вносим конфиг

[lac НАЗВАНИЕ_ВАШЕГО_ПОДКЛЮЧЕНИЯ]
lns = АДРЕС_VPN_СЕРВЕРА
ppp debug = yes
pppoptfile = /etc/ppp/options.l2tpd.client
length bit = yes
redial = yes
redial timeout = 15

заходим в файл options.l2tpd.client

sudo nano /etc/ppp/options.l2tpd.client

вносим конфиг

ipcp-accept-local
ipcp-accept-remote
refuse-eap
require-chap
noccp
noauth
mtu 1280
mru 1280
noipdefault
defaultroute
usepeerdns
connect-delay 5000
name "ЛОГИН_VPN_ЮЗЕРА"
password "ПАРОЛЬ_VPN_ЮЗЕРА"

меняем права

sudo chmod 600 /etc/ppp/options.l2tpd.client

так же выполняем следующие команды

sudo mkdir -p /var/run/xl2tpd
sudo touch /var/run/xl2tpd/l2tp-control

заходим в конфиг rc.local

sudo nano /etc/rc.local

прописываем авто запуск в rc.local с задержкой в 15 и 30 секунд, далее расскажу зачем

#!/bin/sh -e
sleep 15; ipsec up НАЗВАНИЕ_ВАШЕГО_ПОДКЛЮЧЕНИЯ
sleep 30; echo "c НАЗВАНИЕ_ВАШЕГО_ПОДКЛЮЧЕНИЯ" > /var/run/xl2tpd/l2tp-control
exit 0

разрешаем выполнение

sudo chmod +x /etc/rc.local

теперь нам нужно подкоректировать ip-up для выполнения нужных команд при запуске нашего VPN клиента, заходим

sudo nano /etc/ppp/ip-up

вносим следующее, 1 команда по добавлению DNS сервера нашего VPN сервера к интерфейсу, так как насколько я знаю с Ubuntu 18 уже пошли systemd-resolved отвечающие за DNS resolve, у нас возникли проблемы и при подключении что бы мы не делали DNS не присваивался нашему VPN клиенту и DNS имена не в какую не работали, все инструкции которые мы перечитали в интернете все указывали на костыльный метод добавления DNS сервера в глобальные настройка но это костыль, мы нашли единственный рабочий метод который добавляется не в глобальные настройки а при подключении VPN присваивается интерфейсу, все остальные команды для добавления маршрутов во все подсети локальной сети

#!/bin/sh
resolvectl dns $1 10.0.0.1
route add -net 10.0.0.0/27 gw 10.0.0.1
route add -net 10.0.0.32/27 gw 10.0.0.1
route add -net 10.0.0.64/27 gw 10.0.0.1
route add -net 10.0.0.96/27 gw 10.0.0.1
route add -net 10.0.1.0/24 gw 10.0.0.1
route add -net 10.0.2.0/24 gw 10.0.0.1
route add -net 10.0.3.0/24 gw 10.0.0.1
route add -net 10.0.4.0/24 gw 10.0.0.1
exit 0

в файле ip-down

sudo nano /etc/ppp/ip-down

мы прописываем команды для удаления маршрутов при отключении VPN соединения, DNS сюда добавлять не нужно так как при отключении оно удалиться само с интерфейсом

#!/bin/sh
route delete -net 10.0.0.0/27 gw 10.0.0.1
route delete -net 10.0.0.32/27 gw 10.0.0.1
route delete -net 10.0.0.64/27 gw 10.0.0.1
route delete -net 10.0.0.96/27 gw 10.0.0.1
route delete -net 10.0.1.0/24 gw 10.0.0.1
route delete -net 10.0.2.0/24 gw 10.0.0.1
route delete -net 10.0.3.0/24 gw 10.0.0.1
route delete -net 10.0.4.0/24 gw 10.0.0.1
exit 0

далее перезагружаем сервер командой

sudo shutdown -r now

или

sudo reboot

далее командой проверяем появился ли у нас интерфейс ppp0

ifconfig

проверяем работоспособность IPSec

sudo ipsec status

проверяем все ли у нас хорошо в rc.local

sudo systemctl status rc-local.service

должно быть все хорошо)))

так же дополнительные команды запуск

sudo ipsec up НАЗВАНИЕ_ВАШЕГО_ПОДКЛЮЧЕНИЯ
echo "c НАЗВАНИЕ_ВАШЕГО_ПОДКЛЮЧЕНИЯ" | sudo tee /var/run/xl2tpd/l2tp-control

выключение

echo "d НАЗВАНИЕ_ВАШЕГО_ПОДКЛЮЧЕНИЯ" | sudo tee /var/run/xl2tpd/l2tp-control
sudo ipsec down НАЗВАНИЕ_ВАШЕГО_ПОДКЛЮЧЕНИЯ

А теперь немного пояснений по поводу rc.local зачем мы прописали авто запуск туда? Теоретически можно прописать авто запуск в ipsec.conf и xl2tpd.conf но при запуске самого VDS сперва стартует L2TP а уже потом только IPSec следовательно так как у нас включено на MikroTik`е без шифрования отказывать в соединение L2TP начинает спамить так как MikroTik его дропает без IPSec, поэтому мы сделали так при включении VDS спустя 15 секунд устанавливается сначала соединение IPSec а уже после этого через 30 секунд устанавливается VPN туннель все везде без спама и поднимается в нужном порядке.

Я думаю моя статья будет кому то полезна! :)

Всем спасибо кто пытался нам помочь в данной проблеме в теме Проблемы с DNS на VPN а так же всем респект от сети WN (WhiteNet) :D

 , , , ,

Kot837
()

Включаем шифрование для DNS-запросов

Статьи — Администрирование
Включаем шифрование для DNS-запросов

Рассмотренные ниже приемы будут полезны для пользователей прокси-серверов/VPN и позволяют скрывать запрашиваемые по DNS имена доменов.
Время на чтение: ~5 минут.
Сложность: Middle AnyKey Developer (нужно уметь запустить терминал).

( читать дальше... )

 , , ,

rtxtxtrx
()
: Установка Ventoy через репозиторий пакетов Makedeb, который, в свою очередь, GIT (1 комментарий)
: Удаление deb-пакетов с некорректными pre- и post-скриптами (15 комментариев)

Создание пакетов для Python-приложений с помощью pyproject.toml

Статьи — Разработка
Создание пакетов для Python-приложений с помощью pyproject.toml

Вам больше не нужны poetry и pipenv - достаточно лишь pyproject.toml.

( читать дальше... )

 ,

rtxtxtrx
()

Systemd-Ukify: Миграция системы на Secure Boot

Статьи — Desktop

Secure Boot на линуксе нужен для того, чтобы Windows в дуалбуте была в безопасности, и проходила все тесты на безопасность в Защитнике Windows.
Руководство ориентировано на дистрибутивы из семейства Arch Linux.

( читать дальше... )

 , , , ,

Set440
()

Запуск Windows-игр, созданных в RPG Maker VX Ace под Linux

Статьи — Игры

RPG Maker VX Ace — программа для создания игр в жанре jRPG и ему подобных без навыков программирования.

Например, на этом движке сделаны следующие игры: Monster Girl Quest! Paradox RPG, Black Souls 2, SHRIFT, Corpse Party -Rebuilt (хоррор).

( читать дальше... )

 ,

vbcnthfkmnth123
()

Выложил исходники своего буллет хелла H.P.W

Статьи — Игры
Выложил исходники своего буллет хелла H.P.W

Я делаю игру на C++, в ней надо управлять НЛО-бумерангом и уворачиваться от пуль. Недавно я добавил в неё возможность создавать вырвиглазые графические плагины на Си и Цпп:

[ ! ] ЭПИЛЕПСИ ВОРНИНГ [ ! ]
Видео демонстрация эффектов

Теперь игру можно скачать на гитхабе и собрать в Линуксе, для этого найдите пакеты GCC/Clang, GLEW, GLFW3, OpenAL-soft и YAML-cpp, они есть в apt и pacman. Всё собирается - чекал на Арче, Манжаре и Убунте. Если будут какие-то ошибки можете писать тут в комменты, игра ещё в разработке.

Инфа как создавать плагины и делать палитры написана на странице проекта. В целом, можете дождаться релиза через сто лет и ничего не собирать, я сделаю билды в appimage.

 , , , ,

HPW-dev
()
: Создание скринсейвера на базе mpv и swayidle (27 комментариев)

Разработка сетевой библиотеки на C++20: интеграция асинхронности и алгоритма Raft (часть 2)

Статьи — Разработка
Разработка сетевой библиотеки на C++20: интеграция асинхронности и алгоритма Raft (часть 2)

Эта статья является продолжением предыдущей публикации, в которой описывается разработка сетевой библиотеки на C++20. В данном продолжении акцент сделан на более детальном описании разработки алгоритма Raft и его интеграции с сетевой библиотекой.

( читать дальше... )

 , , ,

Reset
()

Разработка сетевой библиотеки на C++20: интеграция асинхронности и алгоритма Raft (часть 1)

Статьи — Разработка
Разработка сетевой библиотеки на C++20: интеграция асинхронности и алгоритма Raft (часть 1)

Введение

С годами работы в области распределённых систем, я понял, что мой опыт не будет полным без реализации алгоритма Raft. Это осознание побудило меня к действию: я решил создать свою реализацию, используя асинхронные возможности C++20.

( читать дальше... )

 , , , ,

Reset
()

Линукс, ассемблер и X11

Статьи — Разработка
Линукс, ассемблер и X11

Это текстовая версия моей статьи про разработку графического приложения на чистом ассемблере под линукс.

( читать дальше... )

 , ,

alex0x08
()

Immutable-дистрибутивы, что это такое, и с чем это едят?

Статьи — Desktop
Immutable-дистрибутивы, что это такое, и с чем это едят?

Начнем с простого

Как часто вы сталкиваетесь с ситуацией когда ваш любимый линукс вдруг перестает работать? А как часто после обновления выясняется что что-то отвалилось или вообще отказывается грузится?

Если вы один из таких «счастливчиков», то добро пожаловать в мир immutable-дистрибутивов! В этой статье мы наглядно разберем все плюсы и минусы, а также выясним, действительно ли immutable лучше традиционных дистрибутивов?

( читать дальше... )

 , ,

Unixson
()

Что НЕ является критерием выбора дистрибутива

Статьи — Desktop

Начальная информация к размышлению для тех, кто выбирает дистрибутив для себя и хочет понять, например, «в каком дистрибутиве больше время работы от аккумулятора».

( читать дальше... )

 

Kroz
()

Проблемы надёжной доставки данных до постоянного хранилища и fsync()

Статьи — Разработка

Когда речь идёт об организации надёжного хранения данных на диске, возникает проблема: надо как-то узнавать о том, что данные на диск не смогли записаться, и принимать по этому поводу какие-то меры.
Есть, конечно, и другая проблема: даже если данные на самом деле записались, они всё равно могут позже потеряться из-за аппаратного сбоя. Но это другая тема и тут мы не будем её рассматривать.

( читать дальше... )

 , ,

firkax
()
: Как запустить XboxDrv в режиме демона (23 комментария)
: Запуск Windows-игр на Ren'Py под Linux (18 комментариев)
: Чиним микрофон наушников Fifine H6 с pipewire (13 комментариев)

Осваиваем STM32 снизу: часть 9 - подключаем libc

Статьи — Разработка

Часть 1 Часть 2 Часть 3 Часть 4 Часть 5 Часть 6 Часть 7 Часть 8 Часть 9

Часть 9: подключаем libc

libc это стандартная библиотека языка С. До сих пор мы избегали использования любых функций из стандартной библиотеки, если бы мы попробовали это сделать, то линкер выдал бы ошибку.

( читать дальше... )

 ,

vbr
()

Осваиваем STM32 снизу: часть 8 - используем CMSIS

Статьи — Разработка

Часть 1 Часть 2 Часть 3 Часть 4 Часть 5 Часть 6 Часть 7 Часть 8 Часть 9

Часть 8: используем CMSIS

Очень многое из предыдущих частей было сделано для наглядности. К примеру мы написали свой линкер-скрипт, свой стартовый код, использовали явные адреса памяти. В этом нет ничего априори плохого, но, вообще говоря, умные люди это всё уже написали до нас. Поэтому, после того, как стало понятно, как это всё работает, настало время выкинуть все самодельные велосипеды, посмотреть, как устроен велосипед из магазина и научиться кататься на нём.

( читать дальше... )

 ,

vbr
()

RSS подписка на новые темы