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

Настройте ufw для перенаправления HTTP-трафика на другой IP-адрес

Я пытаюсь перенаправить весь трафик HTTP / HTTPS с одного сервера на другой (через IP).

Я использую ufw брандмауэр. Как я могу это настроить?

(Для этого вам потребуются права администратора, поэтому войдите в систему как root или используйте sudo соответственно)

Одно простое решение - использовать iptables для этого:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -m conntrack --ctstate NEW -j DNAT --to foo_serverip:80
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -m conntrack --ctstate NEW -j DNAT --to foo_serverip:443
iptables -t nat -A PREROUTING -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A POSTROUTING -t nat -j MASQUERADE

перенаправит весь трафик в интерфейс eth0 (option: -i) получено через порт 80 и 443 (option: --dport 80, 443) в foo_serverip IP-адрес на порту 80 или 443.

После тестирования вы можете просто сохранить текущие правила iptables с помощью

iptables-save > /etc/iptables.rules

и восстановить их с помощью

iptables-restore < /etc/iptables.rules

Зная это, существует множество вариантов восстановления правил во время загрузки. Самый простой способ, который я могу придумать, - это отредактировать ваш /etc/rc.local и добавьте строку /sbin/iptables-restore < /etc/iptables.rules к нему.

я так не думаю ufw может делать все это самостоятельно.

Возможна настройка ufw сделать переадресацию порта на внешний IP

  1. редактировать /etc/default/ufw принимать запросы на пересылку

    default_forward_policy = "accept"

  2. отредактируйте /etc/ufw/sysctl.conf, чтобы разрешить пересылку

    net.ipv4.ip_forward=1

  3. редактировать /etc/ufw/before.rulesдобавьте следующее после первого комментария

    *nat
    :PREROUTING ACCEPT [0:0]
    -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination external_ip:80
    COMMIT