Как создать виртуальную компьютерную сеть

Создаём виртуальную локальную сеть

Когда-то давно мне попалась на глаза программа 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.

Читайте также:  Одна из важнейших характеристик компьютерной сети является ответ

Подключать виртуальные машины к Интернету

Hyper-V поддерживает три типа виртуальных коммутаторов: внешние, внутренние и частные. Создайте внешний коммутатор, чтобы предоставить доступ к сети вашего компьютера виртуальным машинам, работающим на нем.

В этом упражнении выполняется создание внешнего виртуального коммутатора. После завершения этого шага на узле Hyper-V будет виртуальный коммутатор, который сможет подключать виртуальные машины к Интернету через сетевое подключение вашего компьютера.

Создание виртуального коммутатора с помощью диспетчера Hyper-V

  1. Откройте диспетчер Hyper-V. Чтобы сделать это быстро, нажмите кнопку или клавишу Windows и введите «Hyper-V Manager».
    Если диспетчер Hyper-V найти не удается, это значит, что Hyper-V или средства управления Hyper-V отключены. Инструкции по включению см. в разделе Включение Hyper-V.
  2. Выберите сервер в левой области или нажмите кнопку «Подключиться к серверу. » в правой области.
  3. В диспетчере Hyper-V выберите пункт Диспетчер виртуальных коммутаторов. в меню «Действия» справа.
  4. В разделе «Виртуальные коммутаторы» выберите пункт Создать виртуальный сетевой коммутатор.
  5. В окне «Виртуальный коммутатор какого типа вы хотите создать?» выберите Внешний.
  6. Нажмите кнопку Создать виртуальный коммутатор.
  7. В разделе «Свойства виртуального коммутатора» присвойте новому коммутатору имя, например Внешний коммутатор виртуальных машин.
  8. Убедитесь, что в разделе «Тип подключения» выбран параметр Внешняя сеть.
  9. Выберите физический сетевой адаптер для связывания с новым виртуальным коммутатором. Этот сетевой адаптер физически подключен к сети. Screenshot of the Virtual Switch Properties section of the Virtual Switch Manager pane.
  10. Щелкните Применить, чтобы создать виртуальный коммутатор. На этом этапе, скорее всего, появится приведенное ниже сообщение. Чтобы продолжить, нажмите кнопку Да . Screenshot of the Apply Networking Changes message with a focus on the Yes option.
  11. Щелкните ОК, чтобы закрыть окно диспетчера виртуальных коммутаторов.

Создание виртуального коммутатора с помощью PowerShell

Чтобы создать виртуальный коммутатор с внешним подключением с помощью PowerShell:

    Используйте командлет Get-NetAdapter, чтобы получить список сетевых адаптеров, подключенных к системе Windows 10.

PS C:\> Get-NetAdapter Name InterfaceDescription ifIndex Status MacAddress LinkSpeed ---- -------------------- ------- ------ ---------- --------- Ethernet 2 Broadcom NetXtreme 57xx Gigabit Cont. 5 Up BC-30-5B-A8-C1-7F 1 Gbps Ethernet Intel(R) PRO/100 M Desktop Adapter 3 Up 00-0E-0C-A8-DC-31 10 Mbps 
$net = Get-NetAdapter -Name 'Ethernet' 
New-VMSwitch -Name "External VM Switch" -AllowManagementOS $True -NetAdapterName $net.Name 

Виртуальная сеть на ноутбуке

Сеть NAT

Механизм преобразования сетевых адресов (NAT) предоставляет виртуальной машине доступ к сети вашего компьютера путем объединения IP-адреса главного компьютера с портом через внутренний виртуальный коммутатор Hyper-V.

У этого механизма есть ряд полезных возможностей.

  1. NAT экономит IP-адреса за счет сопоставления внешнего IP-адреса и порта с гораздо большим набором внутренних IP-адресов.
  2. NAT позволяет нескольким виртуальным машинам размещать приложения, которым требуются одинаковые (внутренние) порты связи, сопоставляя их с уникальными внешними портами.
  3. NAT использует внутренний коммутатор. После создания внутреннего коммутатора вы можете не использовать сетевое подключение. Кроме того, за счет этого снижается нагрузка на сет компьютера.
Читайте также:  Характеристика основных компонентов компьютерной сети

Чтобы настроить сеть NAT и подключить ее к виртуальной машине, см. Руководство пользователя по созданию сети NAT.

Подход с использованием двух коммутаторов

Если вы используете Hyper-V в Windows 10 на ноутбуке и часто переключаетесь между беспроводной и проводной сетями, вы можете создать виртуальный коммутатор как для сетевой карты Ethernet, так и для карты беспроводной сети. В зависимости от того, как ноутбук подключается к сети, можно переключать виртуальные машины между этими коммутаторам. Виртуальные машины не переключаются между проводными и беспроводными сетями автоматически.

Подход, при котором задействованы два коммутатора, не поддерживают внешний виртуальный коммутатор с использованием платы беспроводных сетей. Такой подход следует использовать только для тестирования.

Источник

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Настройки сетевых интерфейсов LAN 2

На данном этапе 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, чтобы избежать пересекающихся диапазонов адресов.

Источник

Оцените статью
Adblock
detector