Переадресация портов на ВМ с использованием firewalld

1658
xzero121

Я искал и не смог найти ничего о том, как решить эту проблему. Я пытаюсь настроить переадресацию портов на виртуальную машину (qemu) на сервере CentOS 7.

  • Пытаясь переслать что-либо входящее на 8050 на 192.168.100.50:8080.
  • Пробовал firewall-config, и искал по всей сети в течение нескольких дней.

Я не могу найти никого, кто смог бы решить эту проблему, не вернувшись к iptables.

ОС хоста:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: em1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000 link/ether f0:4d:a2:09:c9:87 brd ff:ff:ff:ff:ff:ff inet XXX.XXX.49.99/29 brd XXX.XXX.49.103 scope global em1 valid_lft forever preferred_lft forever inet6 :::f24d:a2ff:fe09:c987/64 scope link valid_lft forever preferred_lft forever 6: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN link/ether 52:54:00:b8:57:fb brd ff:ff:ff:ff:ff:ff inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0 valid_lft forever preferred_lft forever 7: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 500 link/ether 52:54:00:b8:57:fb brd ff:ff:ff:ff:ff:ff 21: virbr1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP link/ether 52:54:00:35:6f:b2 brd ff:ff:ff:ff:ff:ff inet 192.168.100.1/24 brd 192.168.100.255 scope global virbr1 valid_lft forever preferred_lft forever 22: virbr1-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr1 state DOWN qlen 500 link/ether 52:54:00:35:6f:b2 brd ff:ff:ff:ff:ff:ff 34: vnet1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master virbr1 state UNKNOWN qlen 500 link/ether fe:54:00:32:25:24 brd ff:ff:ff:ff:ff:ff inet6 fe80::fc54:ff:fe32:2524/64 scope link valid_lft forever preferred_lft forever 35: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master virbr1 state UNKNOWN qlen 500 link/ether fe:54:00:6c:bf:44 brd ff:ff:ff:ff:ff:ff inet6 fe80::fc54:ff:fe6c:bf44/64 scope link valid_lft forever preferred_lft forever 

VM:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 52:54:00:6c:bf:44 brd ff:ff:ff:ff:ff:ff inet 192.168.100.50/24 brd 192.168.100.255 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::5054:ff:fe6c:bf44/64 scope link valid_lft forever preferred_lft forever 
1
Какой гипервизор вы используете? Qemu / KVM, Virtualbox и т. Д. Звучит так, как будто вы используете маршрутизируемую / сетевую карту по сравнению с настройкой сетевого адаптера. David 8 лет назад 0
qemu (с помощью virt-manager, поэтому нет быстрого способа переключения с nat на bridged), но не будет ли переход на bridged означает, что мне нужен еще один внешний IP? xzero121 8 лет назад 0
Пожалуйста, оставьте свой `ifconfig` (или` ip address show`) для вашего гостя и вашего хоста vm. David 8 лет назад 0
Я добавил их в исходный пост xzero121 8 лет назад 0
@ xzero121 Вы пишете "не будет переход на мост означает, что мне нужен другой внешний IP?" <- Мне не понятно, что вы подразумеваете под «внешним ip», но, возможно, если он соединен мостом, то виртуальная машина получает IP-адрес от маршрутизатора, как если бы это был другой компьютер в вашей сети, поэтому, если ваша сеть - 192.168.xy, то ВМ тоже будет. Таким образом, он все еще находится за NAT вашего реального маршрутизатора, это все еще частный диапазон IP-адресов, но гипервизор не использует собственный NAT. barlop 8 лет назад 0
Хост-ОС имеет внешний IP-адрес, он подключен к Интернету, а не NAT. это обрабатывает NAT для виртуальной машины. xzero121 8 лет назад 0

1 ответ на вопрос

1
David

I think this answer on Serverfault will answer your question:

In your case:

iptables -t nat -I PREROUTING -p tcp -d XXX.XXX.49.99 --dport 8050 -j DNAT --to-destination 192.168.100.50:8080

iptables -I FORWARD -m state -d 192.168.100.0/24 --state NEW,RELATED,ESTABLISHED -j ACCEPT

Я надеялся выяснить, как это сделать с помощью firewalld, но, похоже, это может быть единственным вариантом. xzero121 8 лет назад 0
Перенаправление в состояние / bin / systemctl iptables.service iptables.service Загружен: скрыт (/ dev / null) Активен: неактивен (мертв) Май 05 16:33:33 virtHost systemd [1]: остановлен брандмауэр IPv4 с iptables. xzero121 8 лет назад 0