- Создаём виртуальную локальную сеть
- Подскажите бесплатное ПО для создания виртуальной локальной сети в интернете работающее как Windows так и в Linux
- VirtualBox: виртуальная локальная сеть, маршрутизация в Linux
- Описание задачи
- Настройка виртуальных машин
- Настройка адресов сетей и сервера
- Маршрутизация через сервер
- Заключение
Создаём виртуальную локальную сеть
Когда-то давно мне попалась на глаза программа Hamachi, с помощью которой можно создать виртуальную локальную сеть, не имея «реальных» IP-адресов. Но в какой-то момент мне захотелось получить подобный сервис собственной реализации.
Тут на помощь мне пришел OpenVPN.
Итак, задача:
Имея VPS под Debian Lenny, создать виртуальную локальную сеть с клиентами под Linux и Windows XP.
Настройка сервера:
Конечно подразумевается, что на нашем VPS IP-адрес белый и разрешено использование tun.
Подключаемся к серверу и устанавливаем openvpn и openssl:
Копируем содержимое папки easy-rsa в директорию openvpn:
Заходим в директорию /etc/openvpn/easy-rsa/2.0
Открываем текстовым редактором файл vars и в его конце видим:
export KEY_COUNTRY=«US»
export KEY_PROVINCE=«CA»
export KEY_CITY=«SanFrancisco»
export KEY_ORG=«Fort-Funston»
export KEY_EMAIL=«me@myhost.mydomain»
Редактируем параметры в кавычках так, как нам хочется.
Выполняем следующие команды:
Последняя команда создает сертификат для нашего сервера, используя параметры, которые мы прописали в файле vars, за исключением Common Name, его пишем сами.
Генерим ключик для сервера:
В пункте Common Name пишем server.
В пункте Common Name пишем client1.
Создаем ключ Диффи — Хеллмана:
Копируем файлы ca.crt ca.key dh1024.pem server.crt server.key в папку openvpn:
Переходим в /etc/openvpn/ и открываем/создаем файл openvpn.conf следующего содержания:
port 1194
proto tcp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
server 172.16.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
user nobody
group users
persist-key
persist-tun
status openvpn-status.log
verb 3
client-to-client
в ifconfig должен появиться сетевой адаптер tun0 c IP 172.16.0.1.
Настройка клиента под Linux:
Для начала опять же ставим openvpn.
Теперь надо передать на клиентскую машину файлы ca.crt client1.crt client1.key
(лежат в директории /etc/openvpn/easy-rsa/2.0/keys/ сервера)
и положить их папку /etc/openvpn/
после чего открыть/создать файл /etc/openvpn/openvpn.conf:
client
dev tun
proto tcp
remote реальный_IP-адрес_нашего_сервера 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
comp-lzo
verb 3
(в нашем случае имя клиента — client1)
Настройка клиента под Windows XP:
Качаем и устанавливаем Openvpn GUI.
Кидаем нужные файлы (см.предыдущий пункт) в папку C:\Program Files\OpenVPN\config\,
после чего в трее находим значок openvpn gui, жмём правой кнопкой и выбираем «Connect».
Подключение остальных клиентов:
Заходим на сервере в папку /etc/openvpn/easy-rsa/2.0
Выполняем команды:
Кидаем клиенту файлы ca.crt имя_клиента.crt имя_клиента.key
Далее клиент делает все по мануалам выше.
Подскажите бесплатное ПО для создания виртуальной локальной сети в интернете работающее как Windows так и в Linux
Всех приветствую! Необходимо обьединить через интернет несколько компов как на Windows так и на Linux отдаленных друг от друга в одну локальную сеть, подскажите годное актуальное и бесплатное для этого ПО? Такое ПО существует и в большом количестве, однако оно либо платное, либо очень сложно в настройке, либо только для Windows, есть хорошая прога — Radmin VPN — но она только для Windows, еще хорошее средство — Logmein Hamachi как для винды так и для линуха, однако с недавних пор разрабы хамачи сделали ряд неудобств в использовании своего ПО пользующимся им бесплатно — или платите или мучайтесь, так что хамачи тоже отпадает, teamviewer как бы не совсем средство для обьединения в локальную сеть, хоть VPN там тоже есть, тимвьювер это в основном удаленный доступ и при частом и длительном использовании его разрабы начинают настоятельно рекомендовать приобрести подписку, так что тоже отпадает, пробовал Softether VPN — вроде и настроил все по инструкции но удаленные компы соединится так и не смогли — не видят друг друга, хоть и через Azure пытался подключится https://www.vpnazure.net/en/, есть еще много других средств — https://ruprogi.ru/software/radmin-vpn, многое из этого попробовал но ничего не получается — либо вообще настроить не получается либо все настроил но компы друг друга все равно не видят
Хотя бы один из узлов виртуальной сети должен иметь белый IP. Если все машины за NAT, то лучше всего просто арендовать самую дешевую VPS для этих целей.
openvpn в tap режиме. Там как раз и L2 ходить будет.
Если все машины за NAT, то лучше всего просто арендовать самую дешевую VPS для этих целей
Или взять современный маршрутизатор Keenetic\Asus со встроенным сервисом DDNS, арендовать адрес и запустить на нём же VPN(поставляется почти со всеми нормальными маршрутизаторами, обычно OpenVPN, но WG тоже накручивается).
С VPS плохой вариант, пинг убогий будет + MiTM натуральный. Тогда уж лучше пробрасывать через скрытосервис в Tor.
+1 за wireguard. Вчера раздал предварительно сделанные conf-файлы сотрудникам, 100% справились даже самые далёкие от IT.
Не только, но и ещё под MacOS, iOS, Android. https://www.wireguard.com/install/
Mixa ★ ( 28.03.20 20:20:49 MSK )
Последнее исправление: Mixa 28.03.20 20:21:50 MSK (всего исправлений: 1)
Сотрудники на ноутбуках на windows. Сервер — на linux.
С VPS плохой вариант, пинг убогий будет + MiTM натуральный.
Тогда уж лучше пробрасывать через скрытосервис в Tor.
Ага, а уж через Tor компы в локалку объединять — это очень быстро 🙂
а ядро на сервере какой версии?
OpenVPN сейчас стандарт де-факто (кроме случаев, когда законодательно принуждают использовать ПО с закладками от спецслужб).
Тогда уж лучше пробрасывать через скрытосервис в Tor. Можно об этом поподробнее пожалуйста, хотя бы ссылку
Вроде очевидно же:
1) Виртуальный сервер на то и виртуальный, что весь контроль остаётся в руках провайдера. Он в любой момент может «упасть», похерив ваше соединение(редко, но метко)
2)Он видит всё, или почти всё: кто, куда, когда, откуда, что, как долго и иногда даже зачем. Хочешь ты этого или нет, но в логах оно ОСЕДАЕТ(без этого работоспособность обеспечить невозможно технически), а куда потом идёт — неизвестно. Грубо говоря, при таком подходе из «VPN» можно смело выкидывать букву «P». Да ещё ты сам же платишь за эту красоту.
Ага, а уж через Tor компы в локалку объединять — это очень быстро 🙂
А надо уметь правильно готовить его, благо сие есть наука простая:
/etc/tor/torrc SocksPort 9050 IsolateSOCKSAuth KeepAliveIsolateSOCKSAuth ControlPort 9051 DNSPort 9053 AutomapHostsOnResolve 1 HashedControlPassword # ставишь свой командой 'tor --hash-password "СВОЙ_ПАРОЛЬ" DataDirectory /var/lib/tor/data ClientOnionAuthDir /var/lib/tor/client ExitNodes MiddleNodes EntryNodes HiddenServiceDir /var/lib/tor/hsv3/ HiddenServicePort 22 127.0.0.1:22 HiddenServicePort 3003 127.0.0.1:3003 HiddenServicePort 443 127.0.0.1:443 # И т.д. сколько надо HiddenServiceSingleHopMode 1
Создаёшь папку /var/lib/tor/hsv3/authorized_clients/ и пихаешь туда файлы типа example.auth в которых одной строкой записано: descriptor:x25519:’ТВОЙ_ПУБЛИЧНЫЙ_КЛЮЧ_В_base32′
В папку клиенту запихиваешь файлы типа example.auth_private в которых одной строкой записано: ‘СЕРВЕРНЫЙ_v3_ONION_АДРЕС’:descriptor:x25519:’СЕРВЕРНЫЙ_ПУБЛИЧНЫЙ_КЛЮЧ_В_base32′
Дальше меняешься ключами между машинами и спокойно пробрасываешь через .onion вообще всё, что только в голову влетит. Пинг маленький, так как гуляет трафик внутри одной страны. Можно и соседние приписать, если живёшь где-нибудь в центре Европы.
Плюсы: всё ещё достаточно анонимно и приватно, бесплатно, в логах у всех промежуточных компьютеров полнейшая каша, оконечное шифрование из коробки, а самим фактом использования сети ты помогаешь тем, кому сильно надо.
Минусы: Tor таки светится, скорость иногда проседает(ретрансляторы бывают тормозные), в некоторых местах нужно сильно постараться, чтобы просто подключиться к сети.
VirtualBox: виртуальная локальная сеть, маршрутизация в Linux
На 4 курсе Бауманки я получил задание: сделать виртуальную локальную сеть на базе Linux. Информации на эту тему оказалось довольно много, но ее поиск может занять много времени, а порой даже запутать. Поэтому я решил расписать самые основные шаги для построения локальной сети с использованием VirtualBox, а также пролить свет на некоторые неочевидные настройки Linux.
Описание задачи
Создать виртуальную сеть в VirtualBox, включающую в себя первую сеть на 2048 хостов, вторую сеть на 256 хостов и сервер, выступающий в роли маршрутизатора. В последствии на сервере можно будет настроить файервол для вывода в интернет обоих сетей.
Любой компьютер первой сети должен успешно выполнять пинг любого другого компьютера второй сети и наоборот. ICMP-пакеты должны проходить через сервер. Сети и сервер должны быть представлены в виде компьютеров с соответствующими ipv4-адресами.
Настройка виртуальных машин
Если говорить максимально коротко, то сервер одновременно находится и в первой локальной сети, и во второй. Это значит, что по одному сетевому интерфейсу он видит все компьютеры из сети на 2048 хостов, а по другому — все компьютеры из сети на 256 хостов. Для объединения виртуальных машин, допустим сервера и машины первой сети, будем использовать тип подключения «Внутренняя сеть». Внутренняя сеть позволит объединить сервер (SERVER) и первую сеть (LAN 1) на физическом уровне (аналог — соединение кабелем).
Следует обратить внимание на то, что имя внутренней сети LAN1 на первом адаптере должно совпадать с именем внутренней сети SERVER’а на первом адаптере. Таким образом, можно реализовать физическое соединение любого адаптера виртуальной машины LAN 1 с любым адаптером виртуальной машины SERVER. Аналогичным образом соединим вторую сеть (LAN 2) с другим сетевым адаптером сервера, за одним исключением, название внутренней сети должно отличаться.
На данном этапе машины соединены физически, но отправлять ICMP пакеты еще нельзя, для этого необходимо настроить ip-адреса.
Настройка адресов сетей и сервера
Для первой сети на 2048 хостов зададим адрес 192.168.1.0/21, для второй — 192.168.2.0/24. Про ip-адресацию написано уже достаточно большое количество статей, поэтому на ней останавливаться не будем. Соответственно, необходимо задать адреса каждой виртуальной машине.
Для начала стоит посмотреть на сетевые интерфейсы сервера с помощью команды ifconfig:
- eth0 — из предыдущего пункта адаптер 1 с типом подключения «Сетевой мост», сейчас его рано разбирать
- eth1 — адаптер 2 с типом подключения внутренняя сеть, соединяется с адаптером 1 (там это будет eth0) первой виртуальной машины LAN 1, имя подключения LAN 1
- eth2 — адаптер 2 с типом подключения внутренняя сеть, соединяется с адаптером 1 второй виртуальной машины LAN 2, имя подключения LAN 2
Следующими двумя командами зададим ip-адреса сервера в первой и второй сетях соответственно:
- ifconfig eth1 192.168.1.10 netmask 255.255.248.0
- ifconfig eth2 192.168.2.10 netmask 255.255.255.0
Затем необходимо настроить ip-адреса на eth0 виртуальных машин LAN1 и LAN2. Выполнив команду ifconfig на каждой из машин можно увидеть следующее:
На данном этапе LAN 1 видит SERVER по адресу 192.168.1.10, а SERVER видит LAN 1 по 192.168.1.1. Похожая ситуация и со второй сетью, LAN 1 видит SERVER по адресу 192.168.2.10, а SERVER видит LAN 1 по 192.168.2.1.
Убедиться в этом можно с помощью команды ping, которая отсылает icmp пакеты по определенному ip-адресу и принимает ответ. При пинге с SERVER’а адреса 192.168.2.1 (команда ping 192.168.2.10) должен получиться следующий результат:
Пакеты идут, значит все правильно.
Маршрутизация через сервер
Данная часть статьи легче для понимая, поэтому коротко и по делу. LAN 1 и LAN 2 находят в разных сетях, но у них есть общая точка соприкосновения — SERVER. Это значит, что две сети могут общаться между собой именно через него. Но для этого надо настроить маршрутизацию.
Для начала стоит разрешить на сервере пересылку пакетов между различными сетевыми интерфейсами командой: echo 1 > /proc/sys/net/ipv4/ip_forward. С помощью утилиты маршрутизации route добавим статические маршруты из сети LAN 1 в LAN 2 через SERVER, и из сети LAN 2 в LAN 1 через SERVER.
LAN 1: route add -net 192,168.2.0 netmask 255.255.255.0 gw 192.168.1.10 dev eth0
LAN 2: route add -net 192.168.0.0 netmask 255.255.248.0 gw 192.168.2.10 dev eth0
Следует отметить, что атрибут -net указывается для того, чтобы провести маршрут именно до сети, а не до отдельного хоста, а после атрибута gw указывается адрес сервера для той сети, в которой начинается маршрут.
Такая маршрутизация позволяет первой сети направлять пакеты из одной сети в другую через сервер.
Заключение
Данная статья должна ответить на базовые вопросы читателей по поводу практической реализации и расставить по местам некоторые вопросы о создании виртуальных локальных сетей в VirtualBox с использованием Linux.
Также стоит отметить, что на практике стоит выбрать другой адрес для первой подсети, например 10.0.0.0/21, чтобы избежать пересекающихся диапазонов адресов.