Назад | Перейти на главную страницу

Centos 7 не может перенаправить порт

У меня есть два сервера под управлением CentOS 7 с общедоступными IP-адресами, которые также подключены к одной локальной сети. На сервере A есть несколько виртуальных машин, на одну из которых я пытаюсь перенаправить порт 80. Я делаю это используя firewall-cmd, и моя сетевая карта WAN присоединена к внешней зоне в обоих случаях (LAN - внутренняя зона). Это, конечно, означает, что маскарад включен (так как это значение по умолчанию для внешнего). Я также проверил (как минимум дюжину раз), чтобы убедиться, что ip_forwarding установлен в 1, и что настройка сохраняется после перезагрузки.

Вот результат firewall-cmd --list-all на сервере A:

external (active)
  target: default
  icmp-block-inversion: no
  interfaces: em1
  sources: 
  services: 
  ports: 
  protocols: 
  masquerade: yes
  forward-ports: port=80:proto=tcp:toport=80:toaddr=192.168.11.1
  source-ports: 
  icmp-blocks: 
  rich rules: 

Насколько мне известно, это должно работать, но это не так. Чтобы проверить, я бегу nc -vl 80 на виртуальной машине и nc -v [external IP] 80 на стороннем сервере. Время ожидания соединения истекло.

Та же самая конфигурация на сервере B работает отлично. Я могу отправлять и получать текст с помощью netcat без проблем.


Вот схема сети для некоторых дополнительных деталей:

             WAN
              |
       _____Switch_____
      /                \
    em1               enp1s0      
     |                  |         zone: external
+----------+       +----------+  ---------------
| Server A |       | Server B |
+----------+       +----------+  ---------------
     |                  |         zone: internal
  bridge1            bridge1
   |   |                |
   |  em2            enp3s0
   |   \____Switch_____/
   |
  vnet0
+--------+
| Web VM |
+--------+

Что касается основных различий, я могу думать только о следующем:


Я уже начинаю сойти с ума. Я даже пробовал включить маскировку во внутренней зоне, как я видел в другом месте (что не имеет абсолютно никакого смысла и, к удивлению, не устранило проблему).

Что мне здесь не хватает?


Обновить

Пытался перенаправить локально на другой порт на сервере A (т.е. firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=192.168.11.3:toport:81). Я могу подключиться к порту 80 при прослушивании с помощью netcat на сервере A на порту 81, поэтому локальная переадресация работает нормально. Просто не могу пересылать на другие IP-адреса.

Установка цели для внутренней зоны на ПРИНЯТЬ устранила эту проблему для меня.

I.E. firewall-cmd --permanent --zone=internal --set-target=ACCEPT

Признаюсь, я как-то пропустил эту настройку на сервере B. Тем не менее, мне кажется немного странным, что исходящие соединения не принимаются по умолчанию в default цель.

Очевидно, необходимо убедиться, что ваш WAN-маршрутизатор, каким бы он ни был, отправляет входящий трафик порта 80 на нужный сервер.