配置 ufw 以将 http 流量重定向到另一个 IP

Oli*_*ier 6 ubuntu redirect ufw

我正在尝试将所有 HTTP/HTTPS 流量从一台服务器重定向到另一台服务器(通过 IP)。

我确实使用ufw防火墙。我该如何配置它呢?

Bru*_*ira 10

(为此您需要管理员权限,因此请以 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
Run Code Online (Sandbox Code Playgroud)

会将eth0在端口 80 和 443(选项:--dport 80、443)上接收到的接口(选项:-i)中的所有流量重定向到foo_serverip端口 80 或 443 上的IP 地址。

经过测试后,您可以使用以下命令保存当前的 iptables 规则

iptables-save > /etc/iptables.rules
Run Code Online (Sandbox Code Playgroud)

并用

iptables-restore < /etc/iptables.rules
Run Code Online (Sandbox Code Playgroud)

知道了这一点,在启动时恢复规则的选项有多种。我能想到的最简单的方法是编辑您的/etc/rc.local并将行附加/sbin/iptables-restore < /etc/iptables.rules到它。

我认为ufw仅凭其本身无法做到这一点。


Rom*_*nov 6

可以配置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  
    
    Run Code Online (Sandbox Code Playgroud)