Я пытаюсь перенаправить весь трафик 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
редактировать /etc/default/ufw
принимать запросы на пересылку
default_forward_policy = "accept"
отредактируйте /etc/ufw/sysctl.conf, чтобы разрешить пересылку
net.ipv4.ip_forward=1
редактировать /etc/ufw/before.rules
добавьте следующее после первого комментария
*nat
:PREROUTING ACCEPT [0:0]
-A PREROUTING -p tcp --dport 80 -j DNAT --to-destination external_ip:80
COMMIT