У меня возникла проблема с переадресацией портов на виртуальную машину с помощью правил 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 --dport 2727 -j DNAT --to 10.0.0.2:2727
и удаление -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 -- где угодно и где угодно tcp dpt:nbd
ПРИНЯТЬ gre -- везде где угодно
RH-Firewall-1-INPUT все -- где угодно где угодно
Сеть FORWARD (политика ACCEPT)
целевая защита выбор источника назначения
RH-Firewall-1-INPUT все -- где угодно где угодно
Цепочка OUTPUT (политика ACCEPT)
целевая защита выбор источника назначения
xapi_nbd_output_chain tcp -- везде где угодно tcp spt:nbd
Цепочка RH-Firewall-1-INPUT (2 ссылки)
целевая защита выбор источника назначения
ПРИНИМАТЬ все -- в любом месте в любом месте
ПРИНЯТЬ icmp -- везде где угодно icmp любой
ПРИНЯТЬ udp -- где угодно udp dpt:bootps
ПРИНЯТЬ все -- где угодно и где угодно ctstate СВЯЗАННО, УСТАНОВЛЕНО
ПРИНЯТЬ udp -- в любом месте ctstate NEW udp dpt:ha-cluster
ПРИНЯТЬ tcp -- в любом месте ctstate NEW tcp dpt:ssh
ПРИНЯТЬ tcp -- в любом месте ctstate NEW tcp dpt:http
ПРИНЯТЬ tcp -- в любом месте ctstate NEW tcp dpt:https
ПРИНЯТЬ tcp -- в любом месте tcp dpt:21064
ПРИНЯТЬ udp -- в любом месте многопортовый dports hpoms-dps-lstn,netsupport
REJECT all -- везде, где угодно
Сеть xapi_nbd_input_chain (1 ссылка)
целевая защита выбор источника назначения
REJECT all -- везде, где угодно
Цепочка xapi_nbd_output_chain (1 ссылка)
целевая защита выбор источника назначения
REJECT all -- везде, где угодно
Цепь PREROUTING (политика ПРИНЯТЬ)
целевая защита выбор источника назначения
DNAT tcp -- в любом месте tcp dpt:mgcp-callagent to:10.0.0.2:2727
Сеть INPUT (политика ACCEPT)
целевая защита выбор источника назначения
Цепочка OUTPUT (политика ACCEPT)
целевая защита выбор источника назначения
Сеть POSTROUTING (правило ACCEPT)
целевая защита выбор источника назначения
MASQUERADE all -- 10.0.0.0/24 в любом месте
/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/.
#
# Настройки поставщиков находятся в /usr/lib/sysctl.d/.
# Чтобы переопределить весь файл, создайте новый файл с таким же
# /etc/sysctl.d/ и поместить туда новые настройки. Переопределить
# только конкретные настройки, добавить файл с лексически более поздним
# имя в /etc/sysctl.d/ и поместите туда новые настройки.
#
# Для получения дополнительной информации см. sysctl.conf(5) и sysctl.d(5).
net.ipv4.ip_forward = 1