- Joined
 - Feb 17, 2007
 
- Messages
 - 681
 
- Reaction score
 - 1,030
 
- Points
 - 93
 
На этом этапе сетевые адаптеры ваших ВМ настроены на NAT хоста. В интернет они выходят, соответственно, через хостовую службу VPN. В этой статье мы расскажем, как создать ВМ маршрутизатора/брандмауэра pfSense, настроить его в качестве VPN-клиента и протестировать на наличие утечек с помощью Wireshark. Рабочая среда Linux будет иметь доступ к интернету через цепочки ВМ-VPN-шлюзов и виртуальных машин Tor-шлюзов.
Обозревать принцип работы виртуального шлюза будем на примере протокола WireGuard, потому что он быстрый и его достаточно просто настраивать в pfSense. VPN на хосте может быть любой удобный, поддерживающий обход блокировок. Или VPN может отсутствовать вовсе, если у вас нет блокировок и вы не стремитесь к повышенной анонимности.
Для начала загрузите pfSense-LiveCD на хост-машину (с использованием прямого VPN-соединения) и извлеките установочный образ (.gz открывается любым стандартным архиватором в Linux).
Создание ВМ pfSense
- Откройте VirtualBox, нажмите “New” дайте название машине. Название может служить маркером: одна называется “pfWork”, другая – “pfLife”, третья – “pfCrypto”. Пока что для теста можете назвать просто “pfSense”
 - Выберите распакованный файл .iso. “Type” – выберите “BSD”, “Version” – “FreeBSD” (64-bit)
 - Память можете указать 512 MB, процессор оставляем как есть
 - Размер диска можете выбрать 2-4 GB, в большом нет смысла
 - Нажмите “Finish”
 - После зайдите в настройки ВМ, включите PAE/NX (“System” → “Processor”)
 - ВМ готова.
 
Установка ОС
- После запуска и некоторого времени появится окно “Copyright and distribution notice”, нажмите “Enter”
 - Выберите “Install (Enter)”
 - Выберите “Auto (ZFS)”
 - Еще раз выберите “Install”
 - Выберите “Stripe”
 - В окне “ZFS Configuration” нажмите пробел, затем “Enter”
 - В предупреждающем окне нажмите левую стрелку, затем “Enter”
 - Дождитесь окончания установки
 - В конце мастер установки предложит загрузиться. В этот момент выключите ВМ.
 - Зайдите в настройки, далее “Storage”, нажмите на “pfSense-CE-2...iso” и внизу по центру на значок “Remove Attachment”; подтвердите удаление
 - Зайдите в “Network” → “Adapter 2”, опцию “Attached to:” поставьте в положение “Internal Network”, затем в строке внизу напишите название новой виртуальной сети, например, “pfSenseTest”
 - Запустите ВМ заново, pfSense начнет автоматическую настройку. Дождитесь появления пронумерованных опций. Оставьте ВМ включенной в таком состоянии.
 
- Зайдите в настройки сети рабочей ВМ и для первого адаптера выберите “Attached to: Internal Network”, а в графе “Name” поставьте название внутренней сети “pfSenseTest”, если выбрали это название ранее.
 - Запустите ВМ.
 - Зайдите в браузер и напишите http://192.168.1.1. Браузер предупредит о риске, примите риск и продолжите.
 - Если все сделано правильно, появится окно логина в панель администратора pfSense. Стандартный логин – “admin”, пароль – “pfSense”.
 - Вас встретит окно “pfSense Setup”, нажмите два раза “Next”.
 - В окне “General Information” можете оставить все как есть, внимания заслуживает только графа с DNS. Пока что можете оставить все как есть, о тонкой настройке DNS поговорим в другой раз.
 - Нажмайте “Next”, пока не дойдете до окна “Set Admin WebGUI Password”. Укажите хороший сложный пароль. Нажмите кнопку “Reload”. Подождите, пока ВМ роутера перезагружается.
 - Нажмите “Finish”
 - После вылезет окно “Copyright”, нажмите “Accept”, затем “Close”.
 
Для настройки вам понадобится готовый конфигурационный файл. Его можно получить у провайдера VPN, либо создать самостоятельно на своем сервере с помощью скрипта. Вот необходимые данные (ваши будут отличаться):
Tunnel Addresses: 10.68.140.33/32 и fc00:bbbb:bbbb:bb01::5:8c20/128
Tunnel Private Key: ADRM6pyoYpofcDd0TkX4sb7UkR+Zj4AYeZOE2WWg2tI=
Peer Public Key: EPLh6pVel06dND8cE4Prix9GP4hGLYNhQhn5mSN2yzM=
Peer Endpoint: 86.106.143.236
Peer Port: 51820
Peer WG Address: то же, что и Tunnel Addresses
Peer DNS Server: DNS как в конфиге
Allowed IPs: 0.0.0.0/0 и ::0/0
Обратите внимание, что некоторые строки в конфиге WireGuard называются по-другому.
Конфигурация туннеля
- В верхней панели откройте “VPN” → “WireGuard” → “Tunnels”
 - Нажмите “Add Tunnel”
 - Заполните строки. “Enable Tunnel” – отметить галочкой; “Description” – “VPN”. “Listen Port” – укажите порт из конфига; “Interface Keys” – введите значение “Private Key” из конфига.
 - Нажмите “Save Tunnel”
 
Конфигурация пира
- “VPN” → “WireGuard” → “Peers”
 - Нажмите “Add Peer”
 - “Enable Peer” – галочка отмечена
 - “Tunnel” – выбрать из списка туннель WireGuard
 - “Description” – придумать название сервера
 - “Dynamic Endpoint” – снять галочку
 - “Endpoint” – IP-адрес из конфига
 - “Enpoint Port” – порт из конфига
 - “Public Key” – публичный ключ из конфига
 - “Pre-Shared Key” – если вы делали конфиг самостоятельно, у вас будет эта опция. Если вы брали конфиг у частного провайдера, этой строки в конфиге может и не быть.
 - “Allowed IPs” – 0.0.0.0/0 для IPv4 и ::0/0 для IPv6
 - Нажмите “Save Peer”
 - Нажмите “Apply Changes”
 - Зайдите в “VPN” → “WireGuard” → “Settings” и отметьте галочку “Enable WireGuard”
 - Нажмите “Save”
 - Нажмите “Apply Changes”
 
Назначение сетевого интерфейса
- В верхней панели откройте “Interfaces” → “Assignments”
 - Нажмите зеленую кнопку “Add” (автоматически будет выбран нужный туннель)
 - Нажмите “Save”, интерфейс будет автоматически назван “OPT1”.
 - Нажмите на название нового интерфейса слева.
 - Отметьте галочку “Enable Interface”
 - Поменяйте название на “WG_VPN” (опционально)
 - “IPv4 Configuration Type” – “Static IPv4”
 - “IPv6 Configuration Type” – “Static IPv6”
 - “IPv4 Address” – укажите значение до запятой из строки “Address” в конфиге
 - “IPv4 Upstream Gateway” – нажмите “Add a new gateway”; “Gateway Name” – “WG_VPN_v4”, “Gateway IPv4” – то же, что и в “Address”, но без маски (без “/32”)
 - “IPv6 Address” – укажите значение после запятой из строки “Address” в конфиге
 - Повторите п. 10, используя данные для IPv6
 - Нажмите “Save”
 - Нажмите “Apply Changes”
 
- Откройте “System” → “Routing” → “Gateway Groups”
 - Нажмите “Add”
 - Сконфигурируйте группу. “Group Name” – “Prefer_WireGuard_V4”; “Gateway Priority” “WG_VPN_v4” – поменять с “Never” на “Tier 1”; “WAN_DHCP” – “Tier 2”; “Description” – “Prefer VPN, fail to WAN”.
 - Нажмите “Save”
 - Нажмите “Apply Changes”
 
Конфигурация NAT
- Откройте “Firewall” → “NAT” → “Outbound”
 - Поставьте режим в “Hybrid Outbound NAT”
 - Нажмите “Save”
 - Нажмите “Add” со стрелочкой вверх.
 - Сконфигурируйте NAT. “Interface” – выбрать интерфейс WireGuard (последний в списке). “Source” – здесь нужно выбрать “Network”, затем сбоку указать подсеть LAN. В Ubuntu 22.04 этот адрес можно узнать в настройках сети, нажав на значок шестеренки около подключения. Во вкладке “Details” будет графа “IPv4 Address” (например, 192.168.1.100)
 - Нажмите “Save”
 - Нажмите “Apply Changes”
 
Правила Фаервола
- Откройте “Firewall” → “Rules” → “LAN”
 - Нажмите “Add” со стрелочкой вверх
 - Сконфигурируйте правило фаервола. “Action” – “Pass”; “Interface” – “LAN”, “Protocol” – “Any”; “Source” – “Single host or alias”, в значении вписать то же, что и в п. 5 предыдущей инструкции (192.168.1.100).
 - Нажмите “Display Advanced”
 - Найдите внизу “Gateway” и выставите “WG_VPN_v4”
 - Нажмите “Save”
 - Нажмите “Apply Changes”
 
DNS
Для дополнительной безопасности нужно добавить DNS-серверы.Это может помочь предотвратить утечку DNS-запросов на другие серверы, не использующие VPN, но может привести к сценарию "курица-или-яйцо", когда DNS-запросы не будут выполняться, если VPN не работает. Подробнее про это поговорим отдельно в другой раз. Пример настройки здесь приводится в теоретических целях.
- Откройте “System” → “General”
 - В “DNS Hostname” укажите один из этих резолверов (советуем попробовать конкретно этот), которые поддерживают “DNS over HTTPS (TLS)”/
 - В “Gateway” укажите “WG_VPN_v4”
 - “DNS Server Override” – снимите галочку
 - Поставьте “DNS Resolution Behavior”. Здесь есть три опции. (1) “Use local DNS, fall back to remote DNS Servers” – выберите эту опцию при использовании DNS в режиме переадресации и когда DNS-серверу не требуется “DNS over TLS”. Это наиболее подходящий вариант для данного примера. (2) “Use local DNS, ignore remote DNS Servers” – выберите эту опцию при использовании “DNS over TLS” с DNS-резолвером в режиме переадресации. Это гарантирует, что ни один DNS-запрос не будет отправлен без TLS. (3) “Use remote DNS Servers, ignore local DNS” – используйте эту опцию, если сам фаервол не должен использовать DNS-резолвер, а взаимодействовать с DNS-сервером напрямую без TLS.
 
- Перейдите в меню “Services” →”DNS Resolver”
 - Снимите флажок “Enable DNSSEC Support”
 - Установите флажок “Enable Forwarding Mode”.
 - Повторите для IPv6, если требуется.
 - Нажмите “Save”
 - Нажмите “Apply Changes”
 
Проверка на утечки
Чтобы проверить VPN на утечки, можно воспользоваться встроенным функционалом pfSense. Перейдите в раздел “Diagnostics” → ”Packet Capture”. Интерфейс должен быть указан WAN (em0), в “Max number of packets...” (вторая строка сверху) напишите “0”. Теперь спуститесь вниз и нажмите “Start”. Внизу в окне вы увидите логи, в которых должны всплывать локальные IP-адресы (начинающиеся с “10.0…”) и IP-адрес VPN. Это значит, что ВМ соединяется с интернетом только через VPN.На этом этапе сетевые адаптеры ваших ВМ настроены на NAT хоста. В интернет они выходят, соответственно, через хостовую службу VPN. В этой статье мы расскажем, как создать ВМ маршрутизатора/брандмауэра pfSense, настроить его в качестве VPN-клиента и протестировать на наличие утечек с помощью Wireshark. Рабочая среда Linux будет иметь доступ к интернету через цепочки ВМ-VPN-шлюзов и виртуальных машин Tor-шлюзов.
Обозревать принцип работы виртуального шлюза будем на примере протокола WireGuard, потому что он быстрый и его достаточно просто настраивать в pfSense. VPN на хосте может быть любой удобный, поддерживающий обход блокировок. Или VPN может отсутствовать вовсе, если у вас нет блокировок и вы не стремитесь к повышенной анонимности.
Для начала загрузите pfSense-LiveCD на хост-машину (с использованием прямого VPN-соединения) и извлеките установочный образ (.gz открывается любым стандартным архиватором в Linux).
Создание ВМ pfSense
- Откройте VirtualBox, нажмите “New” дайте название машине. Название может служить маркером: одна называется “pfWork”, другая – “pfLife”, третья – “pfCrypto”. Пока что для теста можете назвать просто “pfSense”
 - Выберите распакованный файл .iso. “Type” – выберите “BSD”, “Version” – “FreeBSD” (64-bit)
 - Память можете указать 512 MB, процессор оставляем как есть
 - Размер диска можете выбрать 2-4 GB, в большом нет смысла
 - Нажмите “Finish”
 - После зайдите в настройки ВМ, включите PAE/NX (“System” → “Processor”)
 - ВМ готова.
 
Установка ОС
- После запуска и некоторого времени появится окно “Copyright and distribution notice”, нажмите “Enter”
 - Выберите “Install (Enter)”
 - Выберите “Auto (ZFS)”
 - Еще раз выберите “Install”
 - Выберите “Stripe”
 - В окне “ZFS Configuration” нажмите пробел, затем “Enter”
 - В предупреждающем окне нажмите левую стрелку, затем “Enter”
 - Дождитесь окончания установки
 - В конце мастер установки предложит загрузиться. В этот момент выключите ВМ.
 - Зайдите в настройки, далее “Storage”, нажмите на “pfSense-CE-2...iso” и внизу по центру на значок “Remove Attachment”; подтвердите удаление
 - Зайдите в “Network” → “Adapter 2”, опцию “Attached to:” поставьте в положение “Internal Network”, затем в строке внизу напишите название новой виртуальной сети, например, “pfSenseTest”
 - Запустите ВМ заново, pfSense начнет автоматическую настройку. Дождитесь появления пронумерованных опций. Оставьте ВМ включенной в таком состоянии.
 
- Зайдите в настройки сети рабочей ВМ и для первого адаптера выберите “Attached to: Internal Network”, а в графе “Name” поставьте название внутренней сети “pfSenseTest”, если выбрали это название ранее.
 - Запустите ВМ.
 - Зайдите в браузер и напишите http://192.168.1.1. Браузер предупредит о риске, примите риск и продолжите.
 - Если все сделано правильно, появится окно логина в панель администратора pfSense. Стандартный логин – “admin”, пароль – “pfSense”.
 - Вас встретит окно “pfSense Setup”, нажмите два раза “Next”.
 - В окне “General Information” можете оставить все как есть, внимания заслуживает только графа с DNS. Пока что можете оставить все как есть, о тонкой настройке DNS поговорим в другой раз.
 - Нажмайте “Next”, пока не дойдете до окна “Set Admin WebGUI Password”. Укажите хороший сложный пароль. Нажмите кнопку “Reload”. Подождите, пока ВМ роутера перезагружается.
 - Нажмите “Finish”
 - После вылезет окно “Copyright”, нажмите “Accept”, затем “Close”.
 
Для настройки вам понадобится готовый конфигурационный файл. Его можно получить у провайдера VPN, либо создать самостоятельно на своем сервере с помощью скрипта. Вот необходимые данные (ваши будут отличаться):
Tunnel Addresses: 10.68.140.33/32 и fc00:bbbb:bbbb:bb01::5:8c20/128
Tunnel Private Key: ADRM6pyoYpofcDd0TkX4sb7UkR+Zj4AYeZOE2WWg2tI=
Peer Public Key: EPLh6pVel06dND8cE4Prix9GP4hGLYNhQhn5mSN2yzM=
Peer Endpoint: 86.106.143.236
Peer Port: 51820
Peer WG Address: то же, что и Tunnel Addresses
Peer DNS Server: DNS как в конфиге
Allowed IPs: 0.0.0.0/0 и ::0/0
Обратите внимание, что некоторые строки в конфиге WireGuard называются по-другому.
Конфигурация туннеля
- В верхней панели откройте “VPN” → “WireGuard” → “Tunnels”
 - Нажмите “Add Tunnel”
 - Заполните строки. “Enable Tunnel” – отметить галочкой; “Description” – “VPN”. “Listen Port” – укажите порт из конфига; “Interface Keys” – введите значение “Private Key” из конфига.
 - Нажмите “Save Tunnel”
 
Конфигурация пира
- “VPN” → “WireGuard” → “Peers”
 - Нажмите “Add Peer”
 - “Enable Peer” – галочка отмечена
 - “Tunnel” – выбрать из списка туннель WireGuard
 - “Description” – придумать название сервера
 - “Dynamic Endpoint” – снять галочку
 - “Endpoint” – IP-адрес из конфига
 - “Enpoint Port” – порт из конфига
 - “Public Key” – публичный ключ из конфига
 - “Pre-Shared Key” – если вы делали конфиг самостоятельно, у вас будет эта опция. Если вы брали конфиг у частного провайдера, этой строки в конфиге может и не быть.
 - “Allowed IPs” – 0.0.0.0/0 для IPv4 и ::0/0 для IPv6
 - Нажмите “Save Peer”
 - Нажмите “Apply Changes”
 - Зайдите в “VPN” → “WireGuard” → “Settings” и отметьте галочку “Enable WireGuard”
 - Нажмите “Save”
 - Нажмите “Apply Changes”
 
Назначение сетевого интерфейса
- В верхней панели откройте “Interfaces” → “Assignments”
 - Нажмите зеленую кнопку “Add” (автоматически будет выбран нужный туннель)
 - Нажмите “Save”, интерфейс будет автоматически назван “OPT1”.
 - Нажмите на название нового интерфейса слева.
 - Отметьте галочку “Enable Interface”
 - Поменяйте название на “WG_VPN” (опционально)
 - “IPv4 Configuration Type” – “Static IPv4”
 - “IPv6 Configuration Type” – “Static IPv6”
 - “IPv4 Address” – укажите значение до запятой из строки “Address” в конфиге
 - “IPv4 Upstream Gateway” – нажмите “Add a new gateway”; “Gateway Name” – “WG_VPN_v4”, “Gateway IPv4” – то же, что и в “Address”, но без маски (без “/32”)
 - “IPv6 Address” – укажите значение после запятой из строки “Address” в конфиге
 - Повторите п. 10, используя данные для IPv6
 - Нажмите “Save”
 - Нажмите “Apply Changes”
 
- Откройте “System” → “Routing” → “Gateway Groups”
 - Нажмите “Add”
 - Сконфигурируйте группу. “Group Name” – “Prefer_WireGuard_V4”; “Gateway Priority” “WG_VPN_v4” – поменять с “Never” на “Tier 1”; “WAN_DHCP” – “Tier 2”; “Description” – “Prefer VPN, fail to WAN”.
 - Нажмите “Save”
 - Нажмите “Apply Changes”
 
Конфигурация NAT
- Откройте “Firewall” → “NAT” → “Outbound”
 - Поставьте режим в “Hybrid Outbound NAT”
 - Нажмите “Save”
 - Нажмите “Add” со стрелочкой вверх.
 - Сконфигурируйте NAT. “Interface” – выбрать интерфейс WireGuard (последний в списке). “Source” – здесь нужно выбрать “Network”, затем сбоку указать подсеть LAN. В Ubuntu 22.04 этот адрес можно узнать в настройках сети, нажав на значок шестеренки около подключения. Во вкладке “Details” будет графа “IPv4 Address” (например, 192.168.1.100)
 - Нажмите “Save”
 - Нажмите “Apply Changes”
 
Правила Фаервола
- Откройте “Firewall” → “Rules” → “LAN”
 - Нажмите “Add” со стрелочкой вверх
 - Сконфигурируйте правило фаервола. “Action” – “Pass”; “Interface” – “LAN”, “Protocol” – “Any”; “Source” – “Single host or alias”, в а значении вписать то же, что и в п. 5 предыдущей инструкции (192.168.1.100).
 - Нажмите “Display Advanced”
 - Найдите внизу “Gateway” и выставите “WG_VPN_v4”
 - Нажмите “Save”
 - Нажмите “Apply Changes”
 
DNS
Для дополнительной безопасности нужно добавить DNS-серверы.Это может помочь предотвратить утечку DNS-запросов на другие серверы, не использующие VPN, но может привести к сценарию "курица-или-яйцо", когда DNS-запросы не будут выполняться, если VPN не работает. Подробнее про это поговорим отдельно в другой раз. Пример настройки здесь приводится в теоретических целах.
- Откройте “System” → “General”
 - В “DNS Hostname” укажите один из этих резолверов (советуем попробовать конкретно этот), которые поддерживают “DNS over HTTPS (TLS)”/
 - В “Gateway” укажите “WG_VPN_v4”
 - “DNS Server Override” – снимите галочку
 - Поставьте “DNS Resolution Behavior”. Здесь есть три опции. (1) “Use local DNS, fall back to remote DNS Servers” – выберите эту опцию при использовании DNS в режиме переадресации и когда DNS-серверу не требуется “DNS over TLS”. Это наиболее подходящий вариант для данного примера. (2) “Use local DNS, ignore remote DNS Servers” – выберите эту опцию при использовании “DNS over TLS” с DNS-резолвером в режиме переадресации. Это гарантирует, что ни один DNS-запрос не будет отправлен без TLS. (3) “Use remote DNS Servers, ignore local DNS” – используйте эту опцию, если сам фаервол не должен использовать DNS-резолвер, а взаимодействовать с DNS-сервером напрямую без TLS.
 
- Перейдите в меню “Services” →”DNS Resolver”
 - Снимите флажок “Enable DNSSEC Support”
 - Установите флажок “Enable Forwarding Mode”.
 - Повторите для IPv6, если требуется.
 - Нажмите “Save”
 - Нажмите “Apply Changes”
 
Проверка на утечки
Чтобы проверить VPN на утечки, можно воспользоваться встроенным функционалом pfSense. Перейдите в раздел “Diagnostics” → ”Packet Capture”. Интерфейс должен быть указан WAN (em0), в “Max number of packets...” (вторая строка сверху) напишите “0”. Теперь спуститесь вниз и нажмите “Start”. Внизу в окне вы увидите логи, в которых должны всплывать локальные IP-адресы (начинающиеся с “10.0…”) и IP-адрес VPN. Это значит, что ВМ соединяется с интернетом только через VPN.By Vergil & Pavluu
| часть 1 | часть 2 | часть 3 | часть 4 |
Источник
		Original message
	На этом этапе сетевые адаптеры ваших ВМ настроены на NAT хоста. В интернет они выходят, соответственно, через хостовую службу VPN. В этой статье мы расскажем, как создать ВМ маршрутизатора/брандмауэра pfSense, настроить его в качестве VPN-клиента и протестировать на наличие утечек с помощью Wireshark. Рабочая среда Linux будет иметь доступ к интернету через цепочки ВМ-VPN-шлюзов и виртуальных машин Tor-шлюзов.
Обозревать принцип работы виртуального шлюза будем на примере протокола WireGuard, потому что он быстрый и его достаточно просто настраивать в pfSense. VPN на хосте может быть любой удобный, поддерживающий обход блокировок. Или VPN может отсутствовать вовсе, если у вас нет блокировок и вы не стремитесь к повышенной анонимности.
Для начала загрузите pfSense-LiveCD на хост-машину (с использованием прямого VPN-соединения) и извлеките установочный образ (.gz открывается любым стандартным архиватором в Linux).
Создание ВМ pfSense
- Откройте VirtualBox, нажмите “New” дайте название машине. Название может служить маркером: одна называется “pfWork”, другая – “pfLife”, третья – “pfCrypto”. Пока что для теста можете назвать просто “pfSense”
 - Выберите распакованный файл .iso. “Type” – выберите “BSD”, “Version” – “FreeBSD” (64-bit)
 - Память можете указать 512 MB, процессор оставляем как есть
 - Размер диска можете выбрать 2-4 GB, в большом нет смысла
 - Нажмите “Finish”
 - После зайдите в настройки ВМ, включите PAE/NX (“System” → “Processor”)
 - ВМ готова.
 
Установка ОС
- После запуска и некоторого времени появится окно “Copyright and distribution notice”, нажмите “Enter”
 - Выберите “Install (Enter)”
 - Выберите “Auto (ZFS)”
 - Еще раз выберите “Install”
 - Выберите “Stripe”
 - В окне “ZFS Configuration” нажмите пробел, затем “Enter”
 - В предупреждающем окне нажмите левую стрелку, затем “Enter”
 - Дождитесь окончания установки
 - В конце мастер установки предложит загрузиться. В этот момент выключите ВМ.
 - Зайдите в настройки, далее “Storage”, нажмите на “pfSense-CE-2...iso” и внизу по центру на значок “Remove Attachment”; подтвердите удаление
 - Зайдите в “Network” → “Adapter 2”, опцию “Attached to:” поставьте в положение “Internal Network”, затем в строке внизу напишите название новой виртуальной сети, например, “pfSenseTest”
 - Запустите ВМ заново, pfSense начнет автоматическую настройку. Дождитесь появления пронумерованных опций. Оставьте ВМ включенной в таком состоянии.
 
- Зайдите в настройки сети рабочей ВМ и для первого адаптера выберите “Attached to: Internal Network”, а в графе “Name” поставьте название внутренней сети “pfSenseTest”, если выбрали это название ранее.
 - Запустите ВМ.
 - Зайдите в браузер и напишите http://192.168.1.1. Браузер предупредит о риске, примите риск и продолжите.
 - Если все сделано правильно, появится окно логина в панель администратора pfSense. Стандартный логин – “admin”, пароль – “pfSense”.
 - Вас встретит окно “pfSense Setup”, нажмите два раза “Next”.
 - В окне “General Information” можете оставить все как есть, внимания заслуживает только графа с DNS. Пока что можете оставить все как есть, о тонкой настройке DNS поговорим в другой раз.
 - Нажмайте “Next”, пока не дойдете до окна “Set Admin WebGUI Password”. Укажите хороший сложный пароль. Нажмите кнопку “Reload”. Подождите, пока ВМ роутера перезагружается.
 - Нажмите “Finish”
 - После вылезет окно “Copyright”, нажмите “Accept”, затем “Close”.
 
Для настройки вам понадобится готовый конфигурационный файл. Его можно получить у провайдера VPN, либо создать самостоятельно на своем сервере с помощью скрипта. Вот необходимые данные (ваши будут отличаться):
Tunnel Addresses: 10.68.140.33/32 и fc00:bbbb:bbbb:bb01::5:8c20/128
Tunnel Private Key: ADRM6pyoYpofcDd0TkX4sb7UkR+Zj4AYeZOE2WWg2tI=
Peer Public Key: EPLh6pVel06dND8cE4Prix9GP4hGLYNhQhn5mSN2yzM=
Peer Endpoint: 86.106.143.236
Peer Port: 51820
Peer WG Address: то же, что и Tunnel Addresses
Peer DNS Server: DNS как в конфиге
Allowed IPs: 0.0.0.0/0 и ::0/0
Обратите внимание, что некоторые строки в конфиге WireGuard называются по-другому.
Конфигурация туннеля
- В верхней панели откройте “VPN” → “WireGuard” → “Tunnels”
 - Нажмите “Add Tunnel”
 - Заполните строки. “Enable Tunnel” – отметить галочкой; “Description” – “VPN”. “Listen Port” – укажите порт из конфига; “Interface Keys” – введите значение “Private Key” из конфига.
 - Нажмите “Save Tunnel”
 
Конфигурация пира
- “VPN” → “WireGuard” → “Peers”
 - Нажмите “Add Peer”
 - “Enable Peer” – галочка отмечена
 - “Tunnel” – выбрать из списка туннель WireGuard
 - “Description” – придумать название сервера
 - “Dynamic Endpoint” – снять галочку
 - “Endpoint” – IP-адрес из конфига
 - “Enpoint Port” – порт из конфига
 - “Public Key” – публичный ключ из конфига
 - “Pre-Shared Key” – если вы делали конфиг самостоятельно, у вас будет эта опция. Если вы брали конфиг у частного провайдера, этой строки в конфиге может и не быть.
 - “Allowed IPs” – 0.0.0.0/0 для IPv4 и ::0/0 для IPv6
 - Нажмите “Save Peer”
 - Нажмите “Apply Changes”
 - Зайдите в “VPN” → “WireGuard” → “Settings” и отметьте галочку “Enable WireGuard”
 - Нажмите “Save”
 - Нажмите “Apply Changes”
 
Назначение сетевого интерфейса
- В верхней панели откройте “Interfaces” → “Assignments”
 - Нажмите зеленую кнопку “Add” (автоматически будет выбран нужный туннель)
 - Нажмите “Save”, интерфейс будет автоматически назван “OPT1”.
 - Нажмите на название нового интерфейса слева.
 - Отметьте галочку “Enable Interface”
 - Поменяйте название на “WG_VPN” (опционально)
 - “IPv4 Configuration Type” – “Static IPv4”
 - “IPv6 Configuration Type” – “Static IPv6”
 - “IPv4 Address” – укажите значение до запятой из строки “Address” в конфиге
 - “IPv4 Upstream Gateway” – нажмите “Add a new gateway”; “Gateway Name” – “WG_VPN_v4”, “Gateway IPv4” – то же, что и в “Address”, но без маски (без “/32”)
 - “IPv6 Address” – укажите значение после запятой из строки “Address” в конфиге
 - Повторите п. 10, используя данные для IPv6
 - Нажмите “Save”
 - Нажмите “Apply Changes”
 
- Откройте “System” → “Routing” → “Gateway Groups”
 - Нажмите “Add”
 - Сконфигурируйте группу. “Group Name” – “Prefer_WireGuard_V4”; “Gateway Priority” “WG_VPN_v4” – поменять с “Never” на “Tier 1”; “WAN_DHCP” – “Tier 2”; “Description” – “Prefer VPN, fail to WAN”.
 - Нажмите “Save”
 - Нажмите “Apply Changes”
 
Конфигурация NAT
- Откройте “Firewall” → “NAT” → “Outbound”
 - Поставьте режим в “Hybrid Outbound NAT”
 - Нажмите “Save”
 - Нажмите “Add” со стрелочкой вверх.
 - Сконфигурируйте NAT. “Interface” – выбрать интерфейс WireGuard (последний в списке). “Source” – здесь нужно выбрать “Network”, затем сбоку указать подсеть LAN. В Ubuntu 22.04 этот адрес можно узнать в настройках сети, нажав на значок шестеренки около подключения. Во вкладке “Details” будет графа “IPv4 Address” (например, 192.168.1.100)
 - Нажмите “Save”
 - Нажмите “Apply Changes”
 
Правила Фаервола
- Откройте “Firewall” → “Rules” → “LAN”
 - Нажмите “Add” со стрелочкой вверх
 - Сконфигурируйте правило фаервола. “Action” – “Pass”; “Interface” – “LAN”, “Protocol” – “Any”; “Source” – “Single host or alias”, в значении вписать то же, что и в п. 5 предыдущей инструкции (192.168.1.100).
 - Нажмите “Display Advanced”
 - Найдите внизу “Gateway” и выставите “WG_VPN_v4”
 - Нажмите “Save”
 - Нажмите “Apply Changes”
 
DNS
Для дополнительной безопасности нужно добавить DNS-серверы.Это может помочь предотвратить утечку DNS-запросов на другие серверы, не использующие VPN, но может привести к сценарию "курица-или-яйцо", когда DNS-запросы не будут выполняться, если VPN не работает. Подробнее про это поговорим отдельно в другой раз. Пример настройки здесь приводится в теоретических целях.
- Откройте “System” → “General”
 - В “DNS Hostname” укажите один из этих резолверов (советуем попробовать конкретно этот), которые поддерживают “DNS over HTTPS (TLS)”/
 - В “Gateway” укажите “WG_VPN_v4”
 - “DNS Server Override” – снимите галочку
 - Поставьте “DNS Resolution Behavior”. Здесь есть три опции. (1) “Use local DNS, fall back to remote DNS Servers” – выберите эту опцию при использовании DNS в режиме переадресации и когда DNS-серверу не требуется “DNS over TLS”. Это наиболее подходящий вариант для данного примера. (2) “Use local DNS, ignore remote DNS Servers” – выберите эту опцию при использовании “DNS over TLS” с DNS-резолвером в режиме переадресации. Это гарантирует, что ни один DNS-запрос не будет отправлен без TLS. (3) “Use remote DNS Servers, ignore local DNS” – используйте эту опцию, если сам фаервол не должен использовать DNS-резолвер, а взаимодействовать с DNS-сервером напрямую без TLS.
 
- Перейдите в меню “Services” →”DNS Resolver”
 - Снимите флажок “Enable DNSSEC Support”
 - Установите флажок “Enable Forwarding Mode”.
 - Повторите для IPv6, если требуется.
 - Нажмите “Save”
 - Нажмите “Apply Changes”
 
Проверка на утечки
Чтобы проверить VPN на утечки, можно воспользоваться встроенным функционалом pfSense. Перейдите в раздел “Diagnostics” → ”Packet Capture”. Интерфейс должен быть указан WAN (em0), в “Max number of packets...” (вторая строка сверху) напишите “0”. Теперь спуститесь вниз и нажмите “Start”. Внизу в окне вы увидите логи, в которых должны всплывать локальные IP-адресы (начинающиеся с “10.0…”) и IP-адрес VPN. Это значит, что ВМ соединяется с интернетом только через VPN.На этом этапе сетевые адаптеры ваших ВМ настроены на NAT хоста. В интернет они выходят, соответственно, через хостовую службу VPN. В этой статье мы расскажем, как создать ВМ маршрутизатора/брандмауэра pfSense, настроить его в качестве VPN-клиента и протестировать на наличие утечек с помощью Wireshark. Рабочая среда Linux будет иметь доступ к интернету через цепочки ВМ-VPN-шлюзов и виртуальных машин Tor-шлюзов.
Обозревать принцип работы виртуального шлюза будем на примере протокола WireGuard, потому что он быстрый и его достаточно просто настраивать в pfSense. VPN на хосте может быть любой удобный, поддерживающий обход блокировок. Или VPN может отсутствовать вовсе, если у вас нет блокировок и вы не стремитесь к повышенной анонимности.
Для начала загрузите pfSense-LiveCD на хост-машину (с использованием прямого VPN-соединения) и извлеките установочный образ (.gz открывается любым стандартным архиватором в Linux).
Создание ВМ pfSense
- Откройте VirtualBox, нажмите “New” дайте название машине. Название может служить маркером: одна называется “pfWork”, другая – “pfLife”, третья – “pfCrypto”. Пока что для теста можете назвать просто “pfSense”
 - Выберите распакованный файл .iso. “Type” – выберите “BSD”, “Version” – “FreeBSD” (64-bit)
 - Память можете указать 512 MB, процессор оставляем как есть
 - Размер диска можете выбрать 2-4 GB, в большом нет смысла
 - Нажмите “Finish”
 - После зайдите в настройки ВМ, включите PAE/NX (“System” → “Processor”)
 - ВМ готова.
 
Установка ОС
- После запуска и некоторого времени появится окно “Copyright and distribution notice”, нажмите “Enter”
 - Выберите “Install (Enter)”
 - Выберите “Auto (ZFS)”
 - Еще раз выберите “Install”
 - Выберите “Stripe”
 - В окне “ZFS Configuration” нажмите пробел, затем “Enter”
 - В предупреждающем окне нажмите левую стрелку, затем “Enter”
 - Дождитесь окончания установки
 - В конце мастер установки предложит загрузиться. В этот момент выключите ВМ.
 - Зайдите в настройки, далее “Storage”, нажмите на “pfSense-CE-2...iso” и внизу по центру на значок “Remove Attachment”; подтвердите удаление
 - Зайдите в “Network” → “Adapter 2”, опцию “Attached to:” поставьте в положение “Internal Network”, затем в строке внизу напишите название новой виртуальной сети, например, “pfSenseTest”
 - Запустите ВМ заново, pfSense начнет автоматическую настройку. Дождитесь появления пронумерованных опций. Оставьте ВМ включенной в таком состоянии.
 
- Зайдите в настройки сети рабочей ВМ и для первого адаптера выберите “Attached to: Internal Network”, а в графе “Name” поставьте название внутренней сети “pfSenseTest”, если выбрали это название ранее.
 - Запустите ВМ.
 - Зайдите в браузер и напишите http://192.168.1.1. Браузер предупредит о риске, примите риск и продолжите.
 - Если все сделано правильно, появится окно логина в панель администратора pfSense. Стандартный логин – “admin”, пароль – “pfSense”.
 - Вас встретит окно “pfSense Setup”, нажмите два раза “Next”.
 - В окне “General Information” можете оставить все как есть, внимания заслуживает только графа с DNS. Пока что можете оставить все как есть, о тонкой настройке DNS поговорим в другой раз.
 - Нажмайте “Next”, пока не дойдете до окна “Set Admin WebGUI Password”. Укажите хороший сложный пароль. Нажмите кнопку “Reload”. Подождите, пока ВМ роутера перезагружается.
 - Нажмите “Finish”
 - После вылезет окно “Copyright”, нажмите “Accept”, затем “Close”.
 
Для настройки вам понадобится готовый конфигурационный файл. Его можно получить у провайдера VPN, либо создать самостоятельно на своем сервере с помощью скрипта. Вот необходимые данные (ваши будут отличаться):
Tunnel Addresses: 10.68.140.33/32 и fc00:bbbb:bbbb:bb01::5:8c20/128
Tunnel Private Key: ADRM6pyoYpofcDd0TkX4sb7UkR+Zj4AYeZOE2WWg2tI=
Peer Public Key: EPLh6pVel06dND8cE4Prix9GP4hGLYNhQhn5mSN2yzM=
Peer Endpoint: 86.106.143.236
Peer Port: 51820
Peer WG Address: то же, что и Tunnel Addresses
Peer DNS Server: DNS как в конфиге
Allowed IPs: 0.0.0.0/0 и ::0/0
Обратите внимание, что некоторые строки в конфиге WireGuard называются по-другому.
Конфигурация туннеля
- В верхней панели откройте “VPN” → “WireGuard” → “Tunnels”
 - Нажмите “Add Tunnel”
 - Заполните строки. “Enable Tunnel” – отметить галочкой; “Description” – “VPN”. “Listen Port” – укажите порт из конфига; “Interface Keys” – введите значение “Private Key” из конфига.
 - Нажмите “Save Tunnel”
 
Конфигурация пира
- “VPN” → “WireGuard” → “Peers”
 - Нажмите “Add Peer”
 - “Enable Peer” – галочка отмечена
 - “Tunnel” – выбрать из списка туннель WireGuard
 - “Description” – придумать название сервера
 - “Dynamic Endpoint” – снять галочку
 - “Endpoint” – IP-адрес из конфига
 - “Enpoint Port” – порт из конфига
 - “Public Key” – публичный ключ из конфига
 - “Pre-Shared Key” – если вы делали конфиг самостоятельно, у вас будет эта опция. Если вы брали конфиг у частного провайдера, этой строки в конфиге может и не быть.
 - “Allowed IPs” – 0.0.0.0/0 для IPv4 и ::0/0 для IPv6
 - Нажмите “Save Peer”
 - Нажмите “Apply Changes”
 - Зайдите в “VPN” → “WireGuard” → “Settings” и отметьте галочку “Enable WireGuard”
 - Нажмите “Save”
 - Нажмите “Apply Changes”
 
Назначение сетевого интерфейса
- В верхней панели откройте “Interfaces” → “Assignments”
 - Нажмите зеленую кнопку “Add” (автоматически будет выбран нужный туннель)
 - Нажмите “Save”, интерфейс будет автоматически назван “OPT1”.
 - Нажмите на название нового интерфейса слева.
 - Отметьте галочку “Enable Interface”
 - Поменяйте название на “WG_VPN” (опционально)
 - “IPv4 Configuration Type” – “Static IPv4”
 - “IPv6 Configuration Type” – “Static IPv6”
 - “IPv4 Address” – укажите значение до запятой из строки “Address” в конфиге
 - “IPv4 Upstream Gateway” – нажмите “Add a new gateway”; “Gateway Name” – “WG_VPN_v4”, “Gateway IPv4” – то же, что и в “Address”, но без маски (без “/32”)
 - “IPv6 Address” – укажите значение после запятой из строки “Address” в конфиге
 - Повторите п. 10, используя данные для IPv6
 - Нажмите “Save”
 - Нажмите “Apply Changes”
 
- Откройте “System” → “Routing” → “Gateway Groups”
 - Нажмите “Add”
 - Сконфигурируйте группу. “Group Name” – “Prefer_WireGuard_V4”; “Gateway Priority” “WG_VPN_v4” – поменять с “Never” на “Tier 1”; “WAN_DHCP” – “Tier 2”; “Description” – “Prefer VPN, fail to WAN”.
 - Нажмите “Save”
 - Нажмите “Apply Changes”
 
Конфигурация NAT
- Откройте “Firewall” → “NAT” → “Outbound”
 - Поставьте режим в “Hybrid Outbound NAT”
 - Нажмите “Save”
 - Нажмите “Add” со стрелочкой вверх.
 - Сконфигурируйте NAT. “Interface” – выбрать интерфейс WireGuard (последний в списке). “Source” – здесь нужно выбрать “Network”, затем сбоку указать подсеть LAN. В Ubuntu 22.04 этот адрес можно узнать в настройках сети, нажав на значок шестеренки около подключения. Во вкладке “Details” будет графа “IPv4 Address” (например, 192.168.1.100)
 - Нажмите “Save”
 - Нажмите “Apply Changes”
 
Правила Фаервола
- Откройте “Firewall” → “Rules” → “LAN”
 - Нажмите “Add” со стрелочкой вверх
 - Сконфигурируйте правило фаервола. “Action” – “Pass”; “Interface” – “LAN”, “Protocol” – “Any”; “Source” – “Single host or alias”, в а значении вписать то же, что и в п. 5 предыдущей инструкции (192.168.1.100).
 - Нажмите “Display Advanced”
 - Найдите внизу “Gateway” и выставите “WG_VPN_v4”
 - Нажмите “Save”
 - Нажмите “Apply Changes”
 
DNS
Для дополнительной безопасности нужно добавить DNS-серверы.Это может помочь предотвратить утечку DNS-запросов на другие серверы, не использующие VPN, но может привести к сценарию "курица-или-яйцо", когда DNS-запросы не будут выполняться, если VPN не работает. Подробнее про это поговорим отдельно в другой раз. Пример настройки здесь приводится в теоретических целах.
- Откройте “System” → “General”
 - В “DNS Hostname” укажите один из этих резолверов (советуем попробовать конкретно этот), которые поддерживают “DNS over HTTPS (TLS)”/
 - В “Gateway” укажите “WG_VPN_v4”
 - “DNS Server Override” – снимите галочку
 - Поставьте “DNS Resolution Behavior”. Здесь есть три опции. (1) “Use local DNS, fall back to remote DNS Servers” – выберите эту опцию при использовании DNS в режиме переадресации и когда DNS-серверу не требуется “DNS over TLS”. Это наиболее подходящий вариант для данного примера. (2) “Use local DNS, ignore remote DNS Servers” – выберите эту опцию при использовании “DNS over TLS” с DNS-резолвером в режиме переадресации. Это гарантирует, что ни один DNS-запрос не будет отправлен без TLS. (3) “Use remote DNS Servers, ignore local DNS” – используйте эту опцию, если сам фаервол не должен использовать DNS-резолвер, а взаимодействовать с DNS-сервером напрямую без TLS.
 
- Перейдите в меню “Services” →”DNS Resolver”
 - Снимите флажок “Enable DNSSEC Support”
 - Установите флажок “Enable Forwarding Mode”.
 - Повторите для IPv6, если требуется.
 - Нажмите “Save”
 - Нажмите “Apply Changes”
 
Проверка на утечки
Чтобы проверить VPN на утечки, можно воспользоваться встроенным функционалом pfSense. Перейдите в раздел “Diagnostics” → ”Packet Capture”. Интерфейс должен быть указан WAN (em0), в “Max number of packets...” (вторая строка сверху) напишите “0”. Теперь спуститесь вниз и нажмите “Start”. Внизу в окне вы увидите логи, в которых должны всплывать локальные IP-адресы (начинающиеся с “10.0…”) и IP-адрес VPN. Это значит, что ВМ соединяется с интернетом только через VPN.By Vergil & Pavluu
| часть 1 | часть 2 | часть 3 | часть 4 |
Источник
				
		










