• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
  • Skip to secondary sidebar
  • Skip to footer

У Павла!

  • Контроллеры
    • Arduino
      • Приборы
      • Музыка
      • Проекты Arduino
      • Уроки Arduino
      • Игры на Arduino
      • Роботы на Ардуино
      • FLProg
    • Одноплатные ПК
      • Orange pi
      • Raspberry pi
        • Raspberry pi pico
        • Raspberry pi server
        • Проекты Raspberry pi
    • ESP
      • ESP8266
        • NodeMCU
      • ESP32
      • M5stack
    • Другие контроллеры
      • STM32
  • Умный дом
    • Home Assistant
      • Автоматизации
    • Tuya
    • Bluetooth
    • ESPHome
    • Frigate
    • Telegram
    • Яндекс
  • ЧПУ
  • 3d печать
  • Об авторе

Настройка сервера proxmox для работы виртуальных машин по wifi с помощью маршрутизации сети.

19 октября, 2024

Работа протестирована на МиниПК на Ryzen 7 5700U с двумя HDD 3.5: https://alii.pub/71mcyu?erid=2SDnjcCC1yC

Всем привет. Я долго бьюсь над тем, чтоб полноценно заработал wifi на proxmox. Proxmox как серверный софт, естественно из коробки заточен на то, чтоб работать по Ethernet интерфейсу. И wifi там даже и не пахнет.

Но так как proxmox работает на Linux, то в теории интерфейс можно на wifi перенастроить. Но как только Вы это сделаете, то поймёте, что почему-то виртуалки ваши недоступны.

А дело все в том, что wifi точка не пропускает через себя множество разных мак адресов, а только один. На этом мы и получаем блок.

  1. И чтоб все заработало, я сначала пробовал вариант, с пробросом wifi модуля к виртуалке. Это работало, но для одной виртуальной машины, а сам proxmox оставался работать по ethernet порту. Это конечно было не очень интересно. Смысл wifi тогда терялся. И такое применение можно использовать только в узких моментах. Почитать о нём можно тут.
  2. Второй способ который я попробовал, это был NAT. То есть ip адрес и MAC у нас у wifi интерфейса был один, а все виртуальные машины были за натом и выходили в сеть (как собственно и в сеть интернет). С этим способом уже можно было все виртуальные машины и сам Proxmox настроить на работу по wifi. Но тут были проблемы в том, что, чтоб достучаться до виртуальной машины, надо было пробрасывать порты (как мы делаем на роутере в случае подключения к домашней сети). И это очень неудобно, так как портов может быть огромное множество и одинаковые указывать нельзя. Что в конечном итоге приведёт к тому, что мы попросту запутаемся. Почитать о нём можно тут.
  3. Ну а в этой статье будет использоваться третий вариант. У этого варианта нет изъянов, кроме того, что нужно дополнительные настройки произвести. В этом варианте мы настроим сетевые интерфейсы так, что у нас будет внутренняя сеть 192.168.3.0 – в которой будут сидеть виртуальные машины. И настроим маршрутизацию, чтоб из нашей обычной локальной сети (у меня она 10.155.222.0) мы могли достучаться до виртуалок из сети 192.168.3.0 и виртуалки могли общаться с сеть 10.155.222.0 и выходить в интернет.

Вот в данной статье я и покажу как настроить данную работу. После настройки Вы сможете полноценно использовать wifi не подключаясь проводом. А мне такой способ просто необходим, так как живу в маленькой квартире и места под то, чтоб тянуть провода попросту нет, а у роутера размещать сервачек тоже нет возможности, для него там места не хватает.

По этому у меня план отнести сервер на балкон и там он будет работать через wifi.

Наверное я уже утомил вступлением, по этому давайте перейдём к настройке.

 

Настройка интерфейсов для работы wifi в Proxmox:

Настройка wifi интерфейса:

Обновляем пакеты:

apt update

Ставим пакет для работы с wifi под названием wpasupplicant
apt install wpasupplicant

Отключаем его из автозагрузки:
systemctl disable wpa_supplicant

Вписываем SSID и пароль от вашей wifi сети. Где NETGEAR – нужно заменить на название Вашей SSID сети. А PASSWORD заменить на пароль от Вашей wifi сети.
wpa_passphrase NETGEAR PASSWORD >> /etc/wpa_supplicant/wpa_supplicant.conf

Далее проверяем файл с данными wifi сети:

cat /etc/wpa_supplicant/wpa_supplicant.conf

Должно выдать что-то такое:

 

Определяем как называется у нас wi-fi интерфейс:

ip a

 

У меня интерфейс имеет имя -> wlp3s0

Далее создаём Сервис, который будет автоматически запускать wifi сеть при загрузке системы:

nano /etc/systemd/system/wpa_supplicant.service

И вставим туда вот такое содержимое:

[Unit] Description=WPA supplicant
Before=network.target
After=dbus.service
Wants=network.target
IgnoreOnIsolate=true

[Service] Type=dbus
BusName=fi.w1.wpa_supplicant1
ExecStart=/sbin/wpa_supplicant -u -s -c /etc/wpa_supplicant/wpa_supplicant.conf -i wlp3s0
Restart=always
[Install] WantedBy=multi-user.target
Alias=dbus-fi.w1.wpa_supplicant1.service

 

 

Где wlp3s0 Указываем свой интерфейс wifi который узнали выше.

Далее сохраняем этот файл и программу wpa_supplicant добавляем в автозагрузку.

systemctl enable wpa_supplicant

 

Настройка сетевых интерфейсов:

Следующим шагом редактируем Все Ваши сетевые интерфейсы в Proxmox:

nano /etc/network/interfaces

И приводим их к такому виду:

Показал скриншотом не просто так. Дело в том, что по какой-то причине, когда я сюда вставлял код, где-то видимо кодировка ломалась и при обратной вставке в файл с сайта, не поднимался порт vmbr0, который и отвечает за мост между wifi и виртуалками. По этому я оставлю тут ссылку на скачивание файла текстового, где все вбито. Ну либо руками набивайте.

Ссылка на скачивание: https://disk.yandex.ru/d/2vuTMdPdUD-jBQ

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

Тут нужно понимать что мы делаем. Во первых, указываем, что LAN интерфейсы у нас eno1 и enp2s0 просто в режиме получения адреса по DHCP. Это физические лан порты моего сервера, их мы не будем использовать.

Так-же назначаем и WIfi интерфейсу wlp3s0 Тоже получать ip адрес по DHCP. Но так как мы ранее wifi уже настроили, то этот интерфейс у нас получит ip адрес.

Виртуальному интерфейсу vmbr0 который создаёт сам proxmox указываем, что у него будет адрес 192.168.3.1/24 И собственно отсюда понятно, что внутренняя сеть у нас будет для виртуальных машин 192.168.3.0/24.

Так-же этому интерфейсу указываем iptables правила, по которым трафик будет заворачиваться исходящий на интерфейс wlp3s0 и обратно идти через интерфейс vmbr0. Это все делают 4 строчки правил iptables:

post-up iptables -A FORWARD -i wlp3s0 -j ACCEPT
 post-up iptables -A FORWARD -0 wlp3s0 -j ACCEPT
 post-up iptables -A FORWARD -i vmbr0 -j ACCEPT
 post-up iptables -A FORWARD -0 vmbr0 -j ACCEPT

Далее сохраняем конфиг и перезапускаем сначала wifi:

systemctl restart wpa_supplicant

Потом перезапускаем сеть linux целиком, чтоб применились все настройки:

systemctl restart networking

Либо все это дело можно просто в reboot отправить:

reboot

 

Установка и настройка DHCP сервера DNSMASQ:

После этого устанавливаем dnsmasq как внутренний DCHP на Proxmox. То есть эта утилита будет раздавать по DHCP ip адреса нашим виртуалкам из сети 192.168.3.0/24

apt install dnsmasq dnsutils -y

 

Далее редактируем файл и добавляем в него содержимое в самый конец:

nano /etc/dnsmasq.conf

Содержимое:

domain=dnsmasq.local
interface=vmbr0

# Интервал выдаваемых адресов и время аренды адресов (в данном случае 12 часов).
dhcp-range=192.168.3.10,192.168.3.200,12h

# Задать значение опции DHCP с номером 1. Опция с номером 1 — это маска подсети (netmask).
dhcp-option=1,255.255.255.0

# Задать значение опции DHCP с номером 3. Опция с номером 3 — это шлюз по умолчанию (default gateway).
dhcp-option=vmbr0,3,192.168.3.1

# Read DHCP host information from the specified file. The format of a line is the same as text to the right of '=' in —dhcp-host.
dhcp-hostsfile=/etc/dnsmasq-hosts.conf

# DNS-серверы, на которые будут форвардиться запросы
server=192.168.3.1
server=1.1.1.1
server=8.8.8.8

# Файл аренды адресов
dhcp-leasefile=/var/log/dnsmasq/dnsmasq.leases

# Кеширование
cache-size=10000
all-servers
no-negcache

# Логирование
log-queries
log-facility=/var/log/dnsmasq/dnsmasq.log

 

После этого сохраняем файл и редактируем файл для хранения постов.

# Создаем файл для хранения хостов:
nano /etc/dnsmasq-hosts.conf

Содержимое, как пример для выдачи фиксированных адресов по MAC:

BC:24:11:DE:41:64,10.10.10.10 # OpenWRT
BC:24:11:50:BB:CC,10.10.10.11 # Alpine-Docker LXC
BC:24:11:3D:E1:6A,10.10.10.12 # Alpine-Base LXC

Как пример указаны 3 хоста, где указаны их маки и ip которые им присваивать. Меняем естественно на свои.

После этого создаем каталог для хранения лога:
mkdir /var/log/dnsmasq

Перезапускаем dnsmasq, чтобы применить изменения:
systemctl restart dnsmasq

Просмотреть лог можно командой (непрерывное чтение):
tail -f /var/log/dnsmasq/dnsmasq.log

# Проверить выданные IP адрес dnsmasq
cat /var/log/dnsmasq/dnsmasq.leases

По сути мы сейчас создали новый dhcp сервер, который будет раздавать внутри proxmox ip адреса свои из сети 192.168.3.0 , так-же настроили сетевые интерфейсы так, чтоб трафик вел  на интерфейс wifi и обратно.

Ну и получается, что сейчас весь наш трафик который мы хотим отправить или получить через интернет, будет стучаться на интерфейс wifi wlp3s0  Но вот из нашей основной локальной сети (собственно в которой и работает наш wifi интерфейс) мы пока не можем достучаться до наших виртуалок, так как до них тоже нужно прописать маршрут и этот маршрут надо прописывать на роутере.

Маршрут прописываем на Keenetic:

У меня Роутер keeenetic, по этому покажу как сделать маршрутизацию на нём.

Идём в Сетевые правила-> Маршрутизация -> добавить маршрут:

Там выбираем в тип маршрута -> Маршрут до сети , описание произвольное, я указал Proxmox.

Адрес сети назначения у нас будет 192.168.3.0 

Адрес шлюза будет ip адрес, который мы получили по wifi. у меня это 10.155.222.114

 

После добавления этого маршрута, мы сможем уже получать доступ к нашим виртуалкам внутри proxmox. Но у них по прежнему не будет интернета, потому что сети 192.168.3.0 нужно еще на роутере разрешить выходить в интернет.

Для этого прописываем маршрут, чтоб из сети 192.68.3.0 при обращении на роутер натились запросы. Это получилось сделать только через командную строку. По этому в случае с keenetic, подключаемся к консоли через telnet и вводим туда вот такую команду:

ip nat 192.168.3.0 255.255.255.0

И нужно далее сохранить конфигурацию, иначе после перезагрузки роутера по питанию это правило удалится. Сохраняется в командной строке командой:

system configuration save

 

Вывод:

На этом настройка сети закончена. И мы полноценно наконец-то можем пользоваться wifi сетью в proxmox. И наконец я этот домашний сервер умного дома proxmox отнесу на балкон, где он у меня будет трудиться по сети. Причем больше настроек таких сложных делать не придётся, а просто при установке новой виртуалки, ей выдастся адрес внутренним dhcp сервером dnsmasq. Ну а так как маршрутизация уже вся настроена, виртуалки сразу получат доступ в интернет и доступ с вашей локальной сети до виртуальной машины новой тоже будет доступен.

На этом я свою эпопею с настройкой wifi в proxmox заканчиваю. Вышло целых 3 статьи, все по сути рабочие но со своими минусами. Кроме этой. Тут все настраивается без изъянов. И получилась полная рабочая инструкция. Я по ней еще 5 раз попробовал установить все, пока отладкой занимался, по этому copy-paste будет работать.

P.S. Взял информацию частично с этой статьи: https://forum.proxmox.com/threads/howto-proxmox-ve-8-x-x-wifi-with-routed-configuration.147714/

Но я её причесал и лишнее убрал, ну а что-то добавил. По итогу получилось интереснее.

Primary Sidebar

Поиск

Новые записи

  • Интеграция ИИ Deepseek в Home Assistant
  • Выводим уведомления из умного дома Home Assistant на Android TV с помощью программы TvOverlay.
  • Автоматизация оповещения о надвигающимся дожде в Home Assistant
  • Автоматизация перезагрузки устройства по команде Ping.
  • Разблокирование и добавление шлюза Xiaomi gateway 3 в Home Assistant для управления Bluetooth устройствами из экосистемы Xiaomi Home (mihome)

Официальный YouTube Канал M5Stack:

Подписывайтесь на Телеграм канал

https://t.me/ypavla

Подписаться на YouTube!

Secondary Sidebar




Подписывайтесь на Telegram Канал!

У Павла!

Footer

Copyright_У Павла! © 2025 ·