Следующее находится на виртуальном частном сервере в сети и только на одной машине. Я испробовал ряд идей с использованием 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 для настройки переадресации портов?
Я предполагаю, что вы делаете это за маршрутизатором. Вот альтернатива.
Предложение А:
Предложение Б:
В своем маршрутизаторе откройте порт 3000, затем перенаправьте его на сервер, используя порт 3000.
На вашем сервере откройте порт 3000 в ufw.
Я бы не стал делать переадресацию портов из ufw.
Примечание. При выборе варианта A весь трафик порта 80 будет идти на порт 3000. Это может стать проблемой, если у вас есть другие приложения, использующие этот порт (например, веб-сервер).