У меня возникла проблема с переадресацией портов на виртуальную машину с помощью правил MASQUERADE iptable. У меня это работало на тех же серверах с Proxmox. Но теперь с XCP-NG я не могу заставить это работать. Я сделал однажды в прошлом на одном из этих серверов. Но мне не удалось повторить это снова. Сетевое соединение для исходящего трафика и получения обновлений, а также запрос http/https на виртуальных машинах работает нормально.Я просто не могу перенаправить порты на виртуальные машины VoyOs/Pfsense, чтобы передать их на внутренние виртуальные машины.
Короче говоря, я могу подключиться к виртуальной машине, но не могу перенаправить порты.
У меня есть два сервера, на которых работает XCP-NG, но на одном работает VoyOS, а на другом — OPNsense:
- XCP-NG: 8.2
- OPNSense: 21.7.1
- VoyOS : Последние
Я следовал этим руководствам:
xenserver-single-ip-howto
настройка шлюза с использованием iptables и маршрута в Linux
создать-частную-сеть-мост-proxmox-с-нат
xen-host-and-guest-sharing-один и тот же ip
Карта сети
- Интерфейс управления
Сетевая карта 0 --> xenbr0
- MASQUERADE для xenbr1 (10.0.0.254) --> Wan-VoyOs/Pfsense (10.0.0.2) --> Внутренняя локальная сеть (10.0.1.1) --> ВМ (10.0.1.x)
Пытался:
iptables -t nat -A POSTROUTING -s '10.0.0.0/24' -o xenbr0 -j MASQUERADE
iptables -A PREROUTING -t nat -p tcp -i xenbr0 -d XXX.XXX.XXX.XX
и удаление -d XXX.XXX.XXX.XX внешнего IP-адреса
iptables -A PREROUTING -t nat -p tcp -i xenbr0 --dport 2727 -j DNAT --to 10.0.0.2:2727
Затем я удалил эти правила и попробовал:
iptables -I ВПЕРЕД 1 -i xenbr1 -j ПРИНЯТЬ
iptables -t nat -A POSTROUTING -o xenbr0 -j MASQUERADE
И, наконец, попробовал:
iptables --append ВПЕРЕД --in-interface xenbr1 -j ПРИНЯТЬ
iptables -D ВПЕРЕД --in-interface xenbr1 -j ПРИНЯТЬ
Правила IP-таблиц
# iptables --list-rules
-P ВВОД ПРИНЯТЬ
-P ВПЕРЕД ПРИНЯТЬ
-P ВЫВОД ПРИНЯТЬ
-N RH-Брандмауэр-1-ВХОД
-N xapi_nbd_input_chain
-N xapi_nbd_output_chain
-A ВХОД -p tcp -m tcp --dport 10809 -j xapi_nbd_input_chain
-A ВВОД -p gre -j ПРИНЯТЬ
-A ВХОД -j RH-Брандмауэр-1-ВХОД
-A FORWARD -j RH-Брандмауэр-1-ВХОД
-A ВЫХОД -p tcp -m tcp --sport 10809 -j xapi_nbd_output_chain
-A RH-Firewall-1-INPUT -i lo -j ПРИНЯТЬ
-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ПРИНЯТЬ
-A RH-Firewall-1-INPUT -i xenapi -p udp -m udp --dport 67 -j ПРИНЯТЬ
-A RH-Firewall-1-INPUT -m conntrack --ctstate СВЯЗАННО, УСТАНОВЛЕНО -j ПРИНЯТЬ
-A RH-Firewall-1-INPUT -p udp -m conntrack --ctstate NEW -m udp --dport 694 -j ПРИНЯТЬ
-A RH-Firewall-1-INPUT -p tcp -m conntrack --ctstate NEW -m tcp --dport 22 -j ПРИНЯТЬ
-A RH-Firewall-1-INPUT -p tcp -m conntrack --ctstate NEW -m tcp --dport 80 -j ПРИНЯТЬ
-A RH-Firewall-1-INPUT -p tcp -m conntrack --ctstate NEW -m tcp --dport 443 -j ПРИНЯТЬ
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 21064 -j ПРИНЯТЬ
-A RH-Firewall-1-INPUT -p udp -m многопортовый --dports 5404,5405 -j ПРИНЯТЬ
-A RH-Firewall-1-INPUT -j REJECT --reject-with-icmp-host-prohibited
-A xapi_nbd_input_chain -j REJECT --reject-with icmp-port-unreachable
-A xapi_nbd_output_chain -j REJECT --reject-with icmp-port-unreachable
IP-таблицы
# iptables -L && iptables -t nat -L
Сеть INPUT (политика ACCEPT)
целевая защита выбор источника назначения
xapi_nbd_input_chain tcp
ПРИНЯТЬ gre
RH-Firewall-1-INPUT все
Сеть FORWARD (политика ACCEPT)
целевая защита выбор источника назначения
RH-Firewall-1-INPUT все
Цепочка OUTPUT (политика ACCEPT)
целевая защита выбор источника назначения
xapi_nbd_output_chain tcp
Цепочка RH-Firewall-1-INPUT (2 ссылки)
целевая защита выбор источника назначения
ПРИНИМАТЬ все
ПРИНЯТЬ icmp
ПРИНЯТЬ udp
ПРИНЯТЬ все
ПРИНЯТЬ udp
ПРИНЯТЬ tcp
ПРИНЯТЬ tcp
ПРИНЯТЬ tcp
ПРИНЯТЬ tcp
ПРИНЯТЬ udp
REJECT all
Сеть xapi_nbd_input_chain (1 ссылка)
целевая защита выбор источника назначения
REJECT all
Цепочка xapi_nbd_output_chain (1 ссылка)
целевая защита выбор источника назначения
REJECT all
Цепь PREROUTING (политика ПРИНЯТЬ)
целевая защита выбор источника назначения
DNAT tcp
Сеть INPUT (политика ACCEPT)
целевая защита выбор источника назначения
Цепочка OUTPUT (политика ACCEPT)
целевая защита выбор источника назначения
Сеть POSTROUTING (правило ACCEPT)
целевая защита выбор источника назначения
MASQUERADE all
/etc/sysconfig/iptables
# кот /etc/sysconfig/iptables
# Сгенерировано iptables-save v1.4.21 в понедельник, 16 августа, 20:14:40 2021
*фильтр
:ВВОД ПРИНЯТЬ [0:0]
:ВПЕРЕД ПРИНЯТЬ [0:0]
: ВЫВОД ПРИНЯТ [6179:9587238]
:RH-Брандмауэр-1-ВХОД - [0:0]
:xapi_nbd_input_chain — [0:0]
:xapi_nbd_output_chain — [0:0]
-A ВХОД -p tcp -m tcp --dport 10809 -j xapi_nbd_input_chain
-A ВВОД -p gre -j ПРИНЯТЬ
-A ВХОД -j RH-Брандмауэр-1-ВХОД
-A FORWARD -j RH-Брандмауэр-1-ВХОД
-A ВЫХОД -p tcp -m tcp --sport 10809 -j xapi_nbd_output_chain
-A RH-Firewall-1-INPUT -i lo -j ПРИНЯТЬ
-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ПРИНЯТЬ
-A RH-Firewall-1-INPUT -i xenapi -p udp -m udp --dport 67 -j ПРИНЯТЬ
-A RH-Firewall-1-INPUT -m conntrack --ctstate СВЯЗАННО, УСТАНОВЛЕНО -j ПРИНЯТЬ
-A RH-Firewall-1-INPUT -p udp -m conntrack --ctstate NEW -m udp --dport 694 -j ПРИНЯТЬ
-A RH-Firewall-1-INPUT -p tcp -m conntrack --ctstate NEW -m tcp --dport 22 -j ПРИНЯТЬ
-A RH-Firewall-1-INPUT -p tcp -m conntrack --ctstate NEW -m tcp --dport 80 -j ПРИНЯТЬ
-A RH-Firewall-1-INPUT -p tcp -m conntrack --ctstate NEW -m tcp --dport 443 -j ПРИНЯТЬ
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 21064 -j ПРИНЯТЬ
-A RH-Firewall-1-INPUT -p udp -m многопортовый --dports 5404,5405 -j ПРИНЯТЬ
-A RH-Firewall-1-INPUT -j REJECT --reject-with-icmp-host-prohibited
-A xapi_nbd_input_chain -j REJECT --reject-with icmp-port-unreachable
-A xapi_nbd_output_chain -j REJECT --reject-with icmp-port-unreachable
СОВЕРШИТЬ
# Завершено Пн, 16 августа, 20:14:40 2021
# Сгенерировано iptables-save v1.4.21 в понедельник, 16 августа, 20:14:40 2021
*натуральный
: ПРЕДВАРИТЕЛЬНОЕ ПРИНЯТИЕ [5:322]
:ВВОД ПРИНЯТЬ [3:164]
: ВЫВОД ПРИНЯТЬ [1:73]
:ОТПРАВКА ПРИНЯТИЯ [1:73]
-A PREROUTING -i xenbr0 -p tcp -m tcp --dport 2727 -j DNAT --назначение 10.0.0.2:2727
-A РАЗМЕЩЕНИЕ -s 10.0.0.0/24 -o xenbr0 -j МАСКАРАД
СОВЕРШИТЬ
# Завершено Пн, 16 августа, 20:14:40 2021
Ифконфиг
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
эфир 78:2b:cb:3c:81:65 txqueuelen 1000 (Ethernet)
Пакеты RX 24705 байт 3641727 (3,4 МБ)
Ошибки RX 0 отброшено 0 переполнение 0 кадр 0
Пакеты TX 47612 байт 37970921 (36,2 МБ)
Ошибки передачи 0 отброшено 0 превышение пропускной способности 0 несущей 0 коллизий 0
eth1: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
эфир 78:2b:cb:3c:81:66 txqueuelen 1000 (Ethernet)
Пакеты RX 0 байт 0 (0,0 Б)
Ошибки RX 0 отброшено 0 переполнение 0 кадр 0
Пакеты TX 0 байт 0 (0,0 Б)
Ошибки передачи 0 отброшено 0 превышение пропускной способности 0 несущей 0 коллизий 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
инет 127.0.0.1 сетевая маска 255.0.0.0
loop txqueuelen 1000 (локальная петля)
Пакеты RX 5951 байт 33860750 (32,2 МБ)
Ошибки RX 0 отброшено 0 переполнение 0 кадр 0
Пакеты TX 5951 байт 33860750 (32,2 МБ)
Ошибки передачи 0 отброшено 0 превышение пропускной способности 0 несущей 0 коллизий 0
vif1.0: flags=4291<UP,BROADCAST,RUNNING,NOARP,MULTICAST> mtu 1500
эфир fe:ff:ff:ff:ff:ff txqueuelen 32 (Ethernet)
Пакеты RX 6 байт 444 (444,0 Б)
Ошибки RX 0 отброшено 0 переполнение 0 кадр 0
Пакеты TX 0 байт 0 (0,0 Б)
Ошибки передачи 0 отброшено 0 превышение пропускной способности 0 несущей 0 коллизий 0
vif1.1: flags=4291<UP,BROADCAST,RUNNING,NOARP,MULTICAST> mtu 1500
эфир fe:ff:ff:ff:ff:ff txqueuelen 32 (Ethernet)
RX-пакеты 1442 байта 95984 (93,7 КиБ)
Ошибки RX 0 отброшено 0 переполнение 0 кадр 0
Пакеты TX 1336 байт 143058 (139,7 КиБ)
Ошибки передачи 0 отброшено 0 превышение пропускной способности 0 несущей 0 коллизий 0
xapi0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
эфир be:16:43:65:a2:4f txqueuelen 1000 (Ethernet)
Пакеты RX 6 байт 444 (444,0 Б)
Ошибки RX 0 отброшено 0 переполнение 0 кадр 0
Пакеты TX 0 байт 0 (0,0 Б)
Ошибки передачи 0 отброшено 0 превышение пропускной способности 0 несущей 0 коллизий 0
xenbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet XXX.XXX.XXX.XX сетевая маска 255.255.255.252 широковещательная передача XXX.XXX.XXX.XX
эфир 78:2b:cb:3c:81:65 txqueuelen 1000 (Ethernet)
Пакеты RX 23841 байт 3101836 (2,9 МБ)
Ошибки RX 0 отброшено 0 переполнение 0 кадр 0
Пакеты TX 33197 байт 36975647 (35,2 МБ)
Ошибки передачи 0 отброшено 0 превышение пропускной способности 0 несущей 0 коллизий 0
xenbr1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
инет 10.0.0.254 сетевая маска 255.255.255.0 широковещательная рассылка 10.0.0.255
эфир 78:2b:cb:3c:81:66 txqueuelen 1000 (Ethernet)
RX-пакеты 1442 байта 95984 (93,7 КиБ)
Ошибки RX 0 отброшено 0 переполнение 0 кадр 0
Пакеты TX 1336 байт 143058 (139,7 КиБ)
Ошибки передачи 0 отброшено 0 превышение пропускной способности 0 несущей 0 коллизий 0
/etc/sysctl.conf
# настройки sysctl определяются через файлы в
# /usr/lib/sysctl.d/, /run/sysctl.d/ и /etc/sysctl.d/.
#
# Чтобы переопределить весь файл, создайте новый файл с таким же
# /etc/sysctl.d/ и поместить туда новые настройки. Переопределить
# только конкретные настройки, добавить файл с лексически более поздним
# имя в /etc/sysctl.d/ и поместите туда новые настройки.
#
net.ipv4.ip_forward = 1