Перенаправление портов FreeBSD для запросов http - PullRequest
0 голосов
/ 27 июня 2018

Я никогда не использовал FreeBSD в своей жизни, но мне необходимо развернуть HTTP API на FreeBSD. API развернут на порту 3002.

Что мне нужно сделать для пересылки запросов с порта 80 на порт 3002?

Я попытался добавить это в мой файл /etc/natd.conf:

interface le0
use_sockets yes
dynamic yes

redirect_port tcp 192.168.1.8:80 192.168.1.8:3002

У меня также есть это в моем файле /etc/ipfw.rules:

 ipfw add 1000 fwd 127.0.0.1,80 tcp from any to any 3002

Когда я бегу ipfw -q -f flush, я получаю:

 ipfw: setsockopt(IP_FW_XDEL): Protocol not available

Я не знаю, что это значит, но это не работает.

Может, кто-нибудь подскажет (в простых терминах новичка), как пересылать запросы от 80 до 3002 во FreeBSD?

(я предполагаю, что порт 80 и открыт, и порт по умолчанию для запросов HTTTP при новой установке FreeBSD)

Ответы [ 3 ]

0 голосов
/ 28 июня 2018

На мой взгляд, более простым вариантом будет использование PF. Позвольте мне привести пример из справочника. https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/firewalls-pf.html

... правила перенаправления и NAT должны быть определены до правил фильтрации. Вставьте это правило rdr сразу после правила nat:

передача rdr по протоколу $ int_if proto tcp с любого на любой порт ftp -> 127.0.0.1 порт 8021

FWIW, я опубликовал Ansible роль для настройки PF https://galaxy.ansible.com/vbotka/freebsd-pf/

0 голосов
/ 28 июня 2018

Самый простой способ - использовать Nginx или HAproxy для прослушивания port 80, а затем перенаправлять / прокси-запросы к вашему API, выполняя это, вы также можете воспользоваться прекращение SSL port 443 и просто перенаправление трафика на ваш API

Например, чтобы установить nginx:

# pkg install nginx-lite

Затем отредактируйте /usr/local/etc/nginx/nginx.conf и используйте его в разделе сервера:

server {
    listen 80 default_server;
    server_name _;

    location / {
        proxy_pass http://127.0.0.1:3002;
        proxy_http_version 1.1; # for keep-alive
        proxy_redirect off;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Это перенаправит запрос вашему API на порт 3002 без необходимости использования NAT или любого брандмауэра, например ipfw или pf, также работает, если ваше приложение работает в тюрьме.

0 голосов
/ 27 июня 2018

Помните, что вам нужно поместить в /etc/rc.conf: gateway_enable = "YES". Возможно, вам также потребуется создать канал (проверьте ipfw man) и загрузить модуль dummynet.

...