我正在尝试将所有 HTTP/HTTPS 流量从一台服务器重定向到另一台服务器(通过 IP)。
我确实使用ufw
防火墙。我该如何配置它才能实现这一点?
答案1
(您需要管理员权限,因此请以 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
(选项:-i)中通过端口 80 和 443(选项:--dport 80, 443)接收的所有流量重定向到foo_serverip
端口 80 或 443 上的 IP 地址。
测试后,你可以使用以下命令保存当前的 iptables 规则
iptables-save > /etc/iptables.rules
并使用
iptables-restore < /etc/iptables.rules
了解了这一点,在启动时恢复规则的选项有很多。我能想到的最简单的方法是编辑你的/etc/rc.local
并将行附加/sbin/iptables-restore < /etc/iptables.rules
到其中。
我认为,ufw
仅靠它自己是无法做到这一切的。
答案2
可以配置联邦快递将端口转发到外部 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