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

Перенаправление UFW с порта 80 на порт 3000 на одиночном VPS

Следующее находится на виртуальном частном сервере в сети и только на одной машине. Я испробовал ряд идей с использованием UFW в Ubuntu 15.10 для пересылки входящего запроса на порт 80 в простое приложение, которое я работаю на 3000. Мой текущий статус ufw выглядит следующим образом.

To                         Action      From
--                         ------      ----
22/tcp (OpenSSH)           ALLOW IN    Anywhere
80 (HTTP)                  ALLOW IN    Anywhere
22/tcp (OpenSSH (v6))      ALLOW IN    Anywhere (v6)
80 (HTTP (v6))             ALLOW IN    Anywhere (v6)

162.243.39.90 3000         ALLOW FWD   162.243.39.90 80

Для достижения этой последней строчки я использовал

ufw route allow from 162.243.39.90 port 3000 to 162.243.39.90 port 80

Я пробовал несколько других комбинаций, включая

in on eth0 

и

out on xxx

Но если я не открою порт 3000 напрямую, я не смогу получить доступ к приложению. Мой браузер какое-то время просто крутит колеса, прежде чем вернуть сообщение об ошибке «веб-страница недоступна».

Любые идеи?

route правила предназначены для пакетов, проходящих через брандмауэр в многосетевой конфигурации (более одной сети), поэтому они не будут работать в вашей настройке.

http://manpages.ubuntu.com/manpages/trusty/man8/ufw.8.html

Правила для трафика, не предназначенного для самого хоста, а вместо этого для трафика, который должен маршрутизироваться / перенаправляться через брандмауэр, должны указывать ключевое слово маршрута перед правилом (правила маршрутизации значительно отличаются от синтаксиса PF и вместо этого учитывают соглашения netfilter о цепочке FORWARD). Например:

     ufw route allow in on eth1 out on eth2

Это позволит всему трафику, направляемому на eth2 и входящему через eth1, проходить через межсетевой экран.

Для вашего случая ответ здесь: Могу ли я использовать ufw для настройки переадресации портов?

Я предполагаю, что вы делаете это за маршрутизатором. Вот альтернатива.

Предложение А:

  • В вашем маршрутизаторе откройте порт 80, затем перенаправьте его на сервер, используя порт 3000.
  • На вашем сервере откройте порт 3000 в ufw.

Предложение Б:

  • В своем маршрутизаторе откройте порт 3000, затем перенаправьте его на сервер, используя порт 3000.

  • На вашем сервере откройте порт 3000 в ufw.

Я бы не стал делать переадресацию портов из ufw.

Примечание. При выборе варианта A весь трафик порта 80 будет идти на порт 3000. Это может стать проблемой, если у вас есть другие приложения, использующие этот порт (например, веб-сервер).