Ubuntu 上的 iptables 端口重定向

Ubuntu 上的 iptables 端口重定向

我有一个在 8100 上运行的 Apache 服务器。打开时http://本地主机:8100在浏览器中我们将看到网站正确运行。

现在我想把所有 80 上的请求都转发到 8100,这样就可以不用端口号访问网站了。我对 iptables 不熟悉,所以我在网上搜索了解决方案。这是我尝试过的方法之一:

用户@ubuntu:~$ sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
用户@ubuntu:~$ sudo iptables -A INPUT -p tcp --dport 8100 -j ACCEPT
用户@ubuntu:~$ sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8100

它不起作用。该网站在 8100 上可以工作,但在 80 上却不行。如果使用“iptables -t nat -L -n -v”打印出规则,我看到的是这样的:

用户@ubuntu:~$ sudo iptables -t nat -L -n -v
链 PREROUTING(策略接受 14 个数据包,2142 字节)
 pkts 字节数 目标 协议 选择加入 退出 源 目标         
    0 0 重定向 tcp -- * * 0.0.0.0/0 0.0.0.0/0           
tcp dpt:80 重定向端口 8100

链输入(策略接受14个数据包,2142字节)
 pkts 字节数 目标 协议 选择加入 退出 源 目标         

链输出(策略接受 177 个数据包,13171 字节)
 pkts 字节数 目标 协议 选择加入 退出 源 目标         

链 POSTROUTING(策略接受 177 个数据包,13171 字节)
 pkts 字节数 目标 协议 选择加入 退出 源 目标

操作系统是 VMware 上的 Ubuntu。我以为这应该是一项简单的任务,但我已经为此工作了几个小时却没有成功。 :( 我遗漏了什么?

答案1

尝试:sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 127.0.0.1:8100

答案2

“PREROUTING”链仅适用于从网络接收的流量。如果您想重定向本地生成的流量,则需要使用“OUTPUT”链。

您可能还希望对目标 IP 地址进行一些匹配。

答案3

我会选择

sudo iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDIRECT --to-ports 8100

相关内容