Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Оплата
Новости
Доставка
Загрузки
Форум
Настройка
    info@proxmox.su
    +7 (495) 320-70-49
    Заказать звонок
    Аспро: ЛайтШоп
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Аспро: ЛайтШоп
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Аспро: ЛайтШоп
    Телефоны
    +7 (495) 320-70-49
    Заказать звонок
    0
    0
    0
    Аспро: ЛайтШоп
    • +7 (495) 320-70-49
      • Назад
      • Телефоны
      • +7 (495) 320-70-49
      • Заказать звонок
    • info@proxmox.su
    • Москва, Бакунинская улица, 69с1
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    Proxmox Виртуальная Среда
    Межсетевой экран PVE с NAT не работает.

    Форумы: Proxmox Виртуальная Среда, Proxmox Backup Server, Proxmox Mail Gateway, Proxmox Datacenter Manager
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    Межсетевой экран PVE с NAT не работает., Proxmox Виртуальная Среда
     
    5k7
    Guest
    #1
    0
    29.09.2022 12:10:00
    Привет! Я поставил свежий Proxmox на выделенный сервер у Hetzner. У меня есть только один IPv4 и подсеть IPv6. Всё работает нормально, а именно:  
    - 3 интерфейса: eno1, vmbr0 с маршрутизацией и vmbr1 с NAT.  
    - Я могу напрямую подключаться к ВМ по IPv6.  
    - ВМ может выходить в IPv4 сеть через NAT.  

    /etc/network/interfaces  
    Код:

    ### LOOPBACK ###  
    auto lo  
    iface lo inet loopback  
    iface lo inet6 loopback  

    ### IPv4 ###  
    # Основной IPv4 от хоста  
    auto eno1  
    iface eno1 inet static  
     address <MAIN IP>  
     netmask 255.255.255.255  
     gateway <GATEWAY_IP>  
     pointopoint <GATEWAY_IP>  

    ### IPv6 ###  
    # Основной IPv6  
    iface eno1 inet6 static  
     address <ipv6 addr from subnet>::2  
     netmask 128  
     gateway <gateway>  
     up sysctl -p  

    ### VM-Routed IPv4  
    auto vmbr0  
    iface vmbr0 inet static  
     address <MainIP>  
     netmask 255.255.255.255  
     bridge_ports none  
     bridge_stp off  
     bridge_fd 0  

    # VM-Routed IPv6  
    iface vmbr0 inet6 static  
     address <ipv6>::3  
     netmask 64  
     up ip -6 route add <ipv6>::/64 dev vmbr0  

    ### Частная NAT-сеть Proxmox  
    auto vmbr1  
    iface vmbr1 inet static  
     address 10.10.10.1  
     netmask 255.255.255.0  
     bridge_ports none  
     bridge_stp off  
     bridge_fd 0  
     bridge_maxwait 0  
     post-up iptables -t nat -A POSTROUTING -s '10.10.10.0/24' -o eno1 -j MASQUERADE  
     post-down iptables -t nat -D POSTROUTING -s '10.10.10.0/24' -o eno1 -j MASQUERADE  

    Конфигурация ВМ:  
    Код:  
    auto lo  
    iface lo inet loopback  

    auto eth0  
    iface eth0 inet6 static  
           address <ipv6>::4/64  
           gateway <ipv6>::3  

    auto eth1  
    iface eth1 inet dhcp  

    Пока что, как минимум на данном этапе, у меня всё работает, как и ожидалось. Проблема в том, что когда я включаю файрвол, перестаёт работать IPv4 из ВМ. Файрвол включён только на уровне датацентра с правилами для SSH и порта 8006 для GUI. IPv6, судя по всему, работает нормально. Нужно ли мне добавить особое правило для vmbr1 с NAT, чтобы сохранить исходящие подключения с ВМ?
     
     
     
    Code-Exec
    Guest
    #2
    0
    22.10.2022 10:11:00
    Возможно, моё решение будет удобнее для управления NAT — https://forum.proxmox.com/threads/proxmox-nat-on-gui-for-everyone.82323/
     
     
     
    fuomag9
    Guest
    #3
    0
    11.01.2025 19:18:00
    Кто-нибудь знает, как решить эту проблему, но для hairpin NAT? Искал везде, но так и не нашёл ничего.
     
     
     
    _gabriel
    Guest
    #4
    0
    11.01.2025 19:55:00
    Или так называемый NAT Loopback (отражение) требует более сложных правил iptables. Здесь я назначил доменное имя локальному IP в файле "hosts" виртуальной машины.
     
     
     
    bofh
    Guest
    #5
    0
    13.01.2025 10:23:00
    Ты имеешь в виду обычный snat? dnat? Код: echo 1 > /proc/sys/net/ipv4/ip_forward  
    iptables -t raw -I PREROUTING -i fwbr+ -j CT --zone 1  

    #iptables -t nat -A POSTROUTING -s '10.11.250.0/24' -o eth0 -j MASQUERADE  
    iptables -w -t nat -A POSTROUTING -o eth0 -s 10.11.250.20 -j SNAT --to-source 10.10.250.20  

    iptables -w -t nat -A PREROUTING -i eth0 -p tcp -m tcp -d 10.10.250.20 --dport 80 -j DNAT --to-destination 10.11.250.20  
    iptables -w -t nat -A PREROUTING -i eth0 -p tcp -m tcp -d 10.10.250.20 --dport 22 -j DNAT --to-destination 10.11.250.20 – это, конечно, работает.  
    Код: up ip add 10.11.250.20 dev eth0 в интерфейсах.  

    В этом примере мы пробрасываем только два порта на виртуалку, но, конечно, можно пробросить сразу все порты, если хочешь. При этом мы разрешаем все исходящие порты.
     
     
     
    fuomag9
    Guest
    #6
    0
    13.01.2025 10:32:00
    К сожалению, простое SNAT/DNAT работает только в случае отключенного файрвола vNIC, независимо от состояния файрвола контейнера LXC.
     
     
     
    bofh
    Guest
    #7
    0
    14.01.2025 20:53:00
    Не могу сказать насчёт контейнера lcx, но это работает с файрволом виртуальной машины, если добавить prerouting в цепочку fwbr (строка 2).
     
     
     
    fuomag9
    Guest
    #8
    0
    14.01.2025 21:06:00
    К сожалению, у меня это не работает, если на vNIC включён файрвол (хотя в панели файрвола он выключен).

    Код:

    auto lo  
    iface lo inet loopback  

    iface enp41s0 inet manual  

    auto vmbr0  
    iface vmbr0 inet static  
       address publicIP/26  
       gateway publicGW  
       bridge-ports enp41s0  
       bridge-stp off  
       bridge-fd 0  
       post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp -m multiport --dports 443,80 -j DNAT --to 192.168.20.200  
       post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp -m multiport --dports 443,80 -j DNAT --to 192.168.20.200  
       post-up iptables -t nat -A PREROUTING -i vmbr0 -p udp -m multiport --dports 443,80 -j DNAT --to 192.168.20.200  
       post-down iptables -t nat -D PREROUTING -i vmbr0 -p udp -m multiport --dports 443,80 -j DNAT --to 192.168.20.200  
       post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp -m multiport --dports 25,465,587,143,993,110,995,4190 -j DNAT --to 192.168.20.3  
       post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp -m multiport --dports 25,465,587,143,993,110,995,4190 -j DNAT --to 192.168.20.3  

       #https://forum.proxmox.com/threads/pve-firewall-with-nat-not-working.115896/  
       post-up   iptables -t raw -I PREROUTING -i fwbr+ -j CT --zone 1  
       post-down iptables -t raw -D PREROUTING -i fwbr+ -j CT --zone 1  

    auto vmbr1  
    iface vmbr1 inet static  
       address 192.168.20.0/24  
       bridge-ports none  
       bridge-stp off  
       bridge-fd 0  

       post-up ip route add 192.168.1.0/24 via 192.168.20.7  
       post-down ip route del 192.168.1.0/24 via 192.168.20.7  
       post-up ip route add 192.168.6.0/24 via 192.168.20.7  
       post-down ip route del 192.168.6.0/24 via 192.168.20.7  
       post-up ip route add 192.168.8.0/24 via 192.168.20.7  
       post-down ip route del 192.168.8.0/24 via 192.168.20.7  

       post-up iptables -t nat -A POSTROUTING -s '192.168.20.0/24' -o vmbr0 -j MASQUERADE && iptables -t nat -A PREROUTING -d publicIP -p tcp --dport 443 -j DNAT --to 192.168.20.200:443  
       post-down iptables -t nat -D POSTROUTING -s '192.168.20.0/24' -o vmbr0 -j MASQUERADE && iptables -t nat -D PREROUTING -d publicIP -p tcp --dport 443 -j DNAT --to 192.168.20.200:443
     
     
     
    bofh
    Guest
    #9
    0
    15.01.2025 01:40:00
    Конфигурация, которую я тебе дал, работает, по крайней мере для виртуальной машины. Опять же, про lxc не могу ничего сказать, я lxc-контейнеры не использую. Но для виртуалки точно работает, конечно, нужно изменить сетевые настройки на самой виртуальной машине для vmbr0.
     
     
     
    bofh
    Guest
    #10
    0
    14.01.2025 21:50:00
    Если в vnic включён файрвол, а в панели файрвола он отключён, значит файрвол на самом деле ВЫКЛЮЧЕН. Если у тебя всё ещё проблемы с блокировкой, то дело совсем не в файрволе. И я точно знаю, в чём причина, потому что недавно написал об этом пост. Когда ты ставишь галочку в vnic firewall, независимо от того, включён ли файрвол или нет, MTU будет принудительно установлен либо на заданное значение, либо на 1500, если ничего не введено. Если установить MTU в 1, то будет использоваться MTU моста. Это важно, потому что если MTU слишком высокое, то некоторые сервисы будут выдавать проблемы, похожие на блокировки файрвола. Кстати, я бы предпочёл SNAT вместо MASQUERADE — он быстрее и позволяет точно знать исходящий IP, а MASQUERADE этого не даёт.
     
     
     
    fuomag9
    Guest
    #11
    0
    14.01.2025 21:53:00
    MTU не был изменён ни в виртуальных машинах, ни в контейнерах. Я считаю, что проблема всё ещё кроется в настройках маршрутизации, поскольку необходимость в команде Code: post-up iptables -t raw -I PREROUTING -i fwbr+ -j CT --zone 1 доказывает существование этой проблемы.
     
     
     
    bofh
    Guest
    #12
    0
    14.01.2025 21:58:00
    Ой, постой, это неправильно настроенный NAT. Ты должен назначить публичный IP-адрес своему сетевому адаптеру, потом сделать vmbr0 частной сетью, и только после этого настраивать NAT на неё.
     
     
     
    bofh
    Guest
    #13
    0
    14.01.2025 22:02:00
    Нет, это не доказательство проблемы. Дополнительная команда необходима, чтобы добавить prerouting в цепочку fwbr, которая обычно там не нужна, поэтому её там нет. Если вы используете NAT, то она нужна, чтобы prerouting мог фильтроваться через fwbr, что в свою очередь позволяет задавать правила через GUI. Добавлять её в fwbr не обязательно, но тогда правила нужно будет задавать вне GUI. Я не уверен, что NAT будет работать, если ваш основной адаптер — это мост. Было бы чище и проще настроить основной адаптер как интерфейс с публичным IP, а потом делать NAT на приватную сеть vmbr, как и задумывалось. В любом случае не очень хорошая идея крепить приватную сеть к публичному адаптеру, но я бы предположил, что ваш хостинг-провайдер всё равно заблокирует утечки.
     
     
     
    bofh
    Guest
    #14
    0
    14.01.2025 22:35:00
    Ок, я даже не знаю, зачем я это сделал, но вот рабочая конфигурация:

    Code:  
    auto lo  
    iface lo inet loopback  

    auto enp41s0  
    iface enp41s0 inet static  
       address publicIP/26  
       gateway publicGW  

       post-up iptables -w -t nat -A PREROUTING -i enp41s0 -p udp -m tcp -m multiport -d publicIP --dports 443,80 -j DNAT --to-destination 192.168.20.200  
       post-up iptables -w -t nat -A PREROUTING -i enp41s0 -p udp -m udp -m multiport -d publicIP --dports 443,80 -j DNAT --to-destination 192.168.20.200  
       post-up iptables -w -t nat -A PREROUTING -i enp41s0 -p udp -m tcp -m multiport -d publicIP --dports 25,465,587,143,993,110,995,4190 -j DNAT --to-destination 192.168.20.3  
       post-up iptables -t raw -I PREROUTING -i fwbr+ -j CT --zone 1  

       post-down iptables -w -t nat -D PREROUTING -i enp41s0 -p udp -m tcp -m multiport -d publicIP --dports 443,80 -j DNAT --to-destination 192.168.20.200  
       post-down iptables -w -t nat -D PREROUTING -i enp41s0 -p udp -m udp -m multiport -d publicIP --dports 443,80 -j DNAT --to-destination 192.168.20.200  
       post-down iptables -w -t nat -D PREROUTING -i enp41s0 -p udp -m tcp -m multiport -d publicIP --dports 25,465,587,143,993,110,995,4190 -j DNAT --to-destination 192.168.20.3  
       post-down iptables -t raw -D PREROUTING -i fwbr+ -j CT --zone 1  

    auto vmbr0  
    iface vmbr1 inet static  
       address 192.168.20.0/24  
       bridge-ports none  
       bridge-stp off  
       bridge-fd 0  

       post-up ip route add 192.168.0.0/16 via 192.168.20.7  
       post-down ip route del 192.168.0.0/16 via 192.168.20.7  

       # Благодаря этому даже ваши маршрутизированные подсети 1,6,8 смогут выйти наружу, и при этом используется не masquerade — а это хорошо  
       post-up iptables -w -t nat -A POSTROUTING -o enp41s0 -s 192.168.0.0/16 -j SNAT --to-source publicIP  
       post-down iptables -w -t nat -D POSTROUTING -o enp41s0 -s 192.168.0.0/16 -j SNAT --to-source publicIP  

       # Этот маршрут упрощает настройку на данный момент, разбивать на три отдельных маршрута нужно только если у вас есть другие подсети 192.168.x.x для маршрутизации  
       #post-up ip route add 192.168.1.0/24 via 192.168.20.7  
       #post-up ip route add 192.168.6.0/24 via 192.168.20.7  
       #post-up ip route add 192.168.8.0/24 via 192.168.20.7  

       #post-down ip route del 192.168.1.0/24 via 192.168.20.7  
       #post-down ip route del 192.168.6.0/24 via 192.168.20.7  
       #post-down ip route del 192.168.8.0/24 via 192.168.20.7  

       # Здесь вы используете masquerade, а нам это не нравится, да и NAT происходит дважды  
       #post-up iptables -t nat -A POSTROUTING -s '192.168.20.0/24' -o vmbr0 -j MASQUERADE && iptables -t nat -A PREROUTING -d publicIP -p tcp --dport 443 -j DNAT --to 192.168.20.200:443  
       #post-down iptables -t nat -D POSTROUTING -s '192.168.20.0/24' -o vmbr0 -j MASQUERADE && iptables -t nat -D PREROUTING -d publicIP -p tcp --dport 443 -j DNAT --to 192.168.20.200:443
     
     
     
    fuomag9
    Guest
    #15
    0
    14.01.2025 23:37:00
    Это именно то, как описано в разделе «Маскировка (NAT)» этого руководства: https://community.hetzner.com/tutorials/install-and-configure-proxmox_ve/
     
     
     
    bofh
    Guest
    #16
    0
    15.01.2025 00:29:00
    Нет, это не так, перечитай ещё раз. Ты перепутал маршрутизацию (routed) с NAT — вот там, в разделе NAT, даже у Hetzner (знаменитого своей эзотерической чепухой) всё примерно так же, как я тебе написал: они указывают, что основной интерфейс имеет IP, затем создаётся мост для получения приватной подсети, а потом делают NAT, как и должно быть. Если нужно больше одного IP, просто добавляешь IP-адреса к основному интерфейсу и делаешь ещё NAT. Я подготовил для тебя полную настройку, замени публичный IP на свой настоящий — и всё заработает. Принимай или отбрось.
     
     
     
    fuomag9
    Guest
    #17
    0
    15.01.2025 01:14:00
    Кстати, это всё ещё не работает.
     
     
     
    Vitamins4811
    Guest
    #18
    0
    22.05.2025 09:04:00
    У меня тоже такая же проблема с CT, несмотря на то, что зона conntrack настроена. По какой-то причине контейнер не может получить MAC-адрес шлюза (узла) через ARP. Помогает только включение галочки в настройках фаервола vNIC. Фаерволы дата-центра, узла и контейнера все отключены.
     
     
     
    Страницы: 1
    Читают тему
    +7 (495) 320-70-49
    info@proxmox.su

    Конфиденциальность Оферта
    © 2026 Proxmox.su
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры