Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Оплата
Новости
Доставка
Загрузки
Форум
Настройка
    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 Виртуальная Среда
    [РЕШЕНО] Настройка NAT в Proxmox 6.2-6

    Форумы: Proxmox Виртуальная Среда, Proxmox Backup Server, Proxmox Mail Gateway, Proxmox Datacenter Manager
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    [РЕШЕНО] Настройка NAT в Proxmox 6.2-6, Proxmox Виртуальная Среда
     
    lethargos
    Guest
    #1
    0
    23.06.2020 11:09:00
    Привет! Я пытаюсь настроить SNAT для своих виртуальных машин, но по какой-то причине у меня это не получается, и я толком не понимаю, почему. Вот как я настроил файл interfaces:

    Code:
    auto vmbr1
    iface vmbr1 inet static
       address 10.10.111.1
       netmask 255.255.255.0
       bridge-ports none
       bridge-stp off
       bridge-fd 0

       post-up iptables -t nat -A POSTROUTING -s '10.10.111.0/24' -o vmbr0 -j MASQUERADE
       post-down iptables -t nat -D POSTROUTING -s '10.10.111.0/24' -o vmbr0 -j MASQUERADE

    На моей Windows-машине у меня выглядит так:

    iptables, на мой взгляд, настроен правильно:

    Code:
    root@pve1:~# iptables -t nat -vnL --line-numbers
    Chain PREROUTING (policy ACCEPT 22394 packets, 4195K bytes)
    num   pkts bytes target     prot opt in     out     source               destination

    Chain INPUT (policy ACCEPT 1138 packets, 70431 bytes)
    num   pkts bytes target     prot opt in     out     source               destination

    Chain OUTPUT (policy ACCEPT 1081 packets, 67494 bytes)
    num   pkts bytes target     prot opt in     out     source               destination

    Chain POSTROUTING (policy ACCEPT 1081 packets, 67494 bytes)
    num   pkts bytes target     prot opt in     out     source               destination
    1      230 15281 MASQUERADE  all  --  *      vmbr0   10.10.111.0/24       0.0.0.0/0

    И vmbr0 — это основной интерфейс, выходящий в интернет:

    Code:
    root@pve1:~# ip a show vmbr0
    3: vmbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
       link/ether 70:71:bc:83:38:14 brd ff:ff:ff:ff:ff:ff
       inet 192.168.111.16/24 brd 192.168.111.255 scope global dynamic vmbr0

    Странно то, что ответный трафик не доходит до виртуальной машины. Когда запускаю tcpdump на vmbr0 и пингую внешний сервер из ВМ, я вижу пакеты ответов, но сама машина их не получает. Я думал, что правило SNAT должно быть stateful, конечно, но что-то блокирует трафик, и я не понимаю, что именно.

    Вот как выглядит ping с ВМ:

    Code:
    root@pve1:~# tcpdump -i vmbr0 icmp -nn -vvv
    tcpdump: listening on vmbr0, link-type EN10MB (Ethernet), capture size 262144 bytes
    12:03:55.332153 IP (tos 0x0, ttl 127, id 13584, offset 0, flags [none], proto ICMP (1), length 60)
       192.168.111.16 > public_ip: ICMP echo request, id 1, seq 38, length 40
    12:03:55.335972 IP (tos 0x0, ttl 58, id 55309, offset 0, flags [none], proto ICMP (1), length 60)
       public_ip > 192.168.111.16: ICMP echo reply, id 1, seq 38, length 40
    12:04:00.029916 IP (tos 0x0, ttl 127, id 13585, offset 0, flags [none], proto ICMP (1), length 60)
       192.168.111.16 > public_ip: ICMP echo request, id 1, seq 39, length 40
    12:04:00.033527 IP (tos 0x0, ttl 58, id 55541, offset 0, flags [none], proto ICMP (1), length 60)
       public_ip > 192.168.111.16: ICMP echo reply, id 1, seq 39, length 40
    12:04:05.029182 IP (tos 0x0, ttl 127, id 13586, offset 0, flags [none], proto ICMP (1), length 60)

    Есть идеи, как можно дальше искать причину? Спасибо!

    P.S. Забыл сказать, что ipv4 forwarding тоже включён:

    Code:
    root@pve1:~# sysctl -a | grep ip_forward
    net.ipv4.ip_forward = 1
     
     
     
    lethargos
    Guest
    #2
    0
    10.07.2020 09:44:00
    Привет! Нет, пинг между ВМ, которые относятся к разным бриджам, не работает. Я могу пинговать только шлюз (10.10.111.1) с ВМ под NAT. На хосте:

    Код: root@pve1:~# arp -a  
    ? (10.10.111.111) at 0e:f3:46:5f:bf:b1 [ether] on vmbr1
    ? (192.168.111.22) at 4a:9e:c2:96:5f:eb [ether] on vmbr0
    ? (192.168.111.2) at b8:e8:56:09:01:74 [ether] on vmbr0
    ? (192.168.111.21) at 4e:bb:2f:83:fb:94 [ether] on vmbr0
    ? (192.168.111.1) at f4:79:60:42:7e:3c [ether] on vmbr0

    На ВМ (в vmbr1):

    Код:  
    ? (10.10.111.1) at 5a:a9:c7:ad:9f:5e [ether] on ens18

    Так что ничего удивительного, как я и думал.

    Код: root@pve1:~# ip link show vmbr1  
    4: vmbr1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000  
       link/ether 5a:a9:c7:ad:9f:5e brd ff:ff:ff:ff:ff:ff  

    Да, ты, конечно, прав насчет информации про firewall/iptables.
     
     
     
    tsak_magic
    Guest
    #3
    0
    20.07.2020 08:32:00
    Всем привет! Решил поделиться своим опытом, потому что долго с этим мучился, а вот что сработало у меня:

    - Допустим, у вас Proxmox-хост с IP 192.168.0.100, и контейнер, например, с IP 192.168.0.101, который использует vmbr0.

    Я добавил на хосте в файле /etc/networks/interfaces следующие две строки и перезагрузил pve-ноду:

    post-up echo 1 > /proc/sys/net/ipv4/ip_forward  
    post-up iptables -t nat -A POSTROUTING -s '192.168.0.0/24' -o vmbr0 -j MASQUERADE  
    post-down iptables -t nat -D POSTROUTING -s '192.168.0.0/24' -o vmbr0 -j MASQUERADE

    Надеюсь, кому-то поможет!
     
     
     
    lethargos
    Guest
    #4
    0
    21.07.2020 22:55:00
    Ну, могу подтвердить, что это именно твои два цента, учитывая, что конфигурация идентична моей, а ты просто повторяешь то, что я уже выкладывал, только с другим подсетью (второе правило вообще неверное, потому что у тебя точка после IP) и учитывая, что ip_forwarding постоянно включён через sysctl. Так что если ты думаешь, что повторять уже опубликованное действительно помогает — могу тебя уверить, что нет. Хотя, возможно, это поможет поднять тему и привлечь к ней больше внимания, так что в этом смысле ты мог и помочь.
     
     
     
    lethargos
    Guest
    #5
    0
    16.12.2020 23:19:00
    Прошло уже 5 месяцев, а я всё так же ничего не понимаю. Если у кого-то есть какие-то идеи по делу — буду рад их прочитать. Я вообще не понимаю, почему пакеты не маршрутизируются. Когда запускаю tcpdump на vmbr0 (интерфейс, смотрящий в интернет), вижу, что ICMP-пакеты идут в обоих направлениях. Значит, проблема во внутренней маршрутизации хоста — пакеты не пересылаются на vmbr1. Код:  
    root@pve1:~# ip route  
    default via 192.168.111.1 dev vmbr0  
    10.10.111.0/24 dev vmbr1 proto kernel scope link src 10.10.111.1  
    192.168.111.0/24 dev vmbr0 proto kernel scope link src 192.168.111.16
     
     
     
    lethargos
    Guest
    #6
    0
    19.02.2021 01:07:00
    Проблема была в том, что DHCP был активирован на vmbr0 (мост, выходящий в интернет). По какой-то причине Linux (думаю, это не проблема Proxmox, я ещё не проверял на «обычном» Linux) испытывает проблему с NAT при работе с DHCP по какой-то странной причине.
     
     
     
    Страницы: 1
    Читают тему
    +7 (495) 320-70-49
    info@proxmox.su

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