当我使用以下命令时,我能够从端口 3000 重定向到端口 80,但是当请求针对任何其他端口时,我需要重定向到端口 80。
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3000
答案1
在您的示例中,您正在将通过 tcp 到达 eth0 并到达端口 80(!) 的流量重定向到端口 3000(!),因此情况正好相反!要将所有流量转发到端口 3000,只需删除 --dport 80(--dport 80 选项表示:仅将此规则应用于发送到端口 80 的数据包):
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp -j REDIRECT --to-port 3000
上述命令描述了一条规则:eth0(您的网卡)上使用 tcp 协议(-p(rotocol) tcp)的所有流量都应重定向(-j REDIRECT)到端口 3000。
要将所有流量转发到端口 80(就像您最初要求的那样,但与您的示例相反,只需删除 3000 并插入 80。