有两个 IP 与一个物理网络接口 eth0 和 eth0:0 相关联。
对于第一个界面来说,以下内容运行良好:
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
然而,对于第二个接口,同样的方法不起作用:
iptables -A PREROUTING -t nat -i eth0:0 -p tcp --dport 80 -j REDIRECT --to-port 8080
还尝试过:
iptables -A PREROUTING -t nat -p tcp --dport 80 -d $THE_IP -j REDIRECT --to-port 8080
所以问题是如何在虚拟接口上进行重定向。
答案1
你不需要。别名接口是一种符号约定,实际上并不存在于 iptables 漫游的内核深层。使用 IP 地址(你的第三个示例命令已损坏,将产生一条错误消息,这应该会提示你)一切都会好起来。
答案2
您的第三个命令缺少了一些东西:在开头启用多端口添加,这样就可以了。 +即使您只指定一个端口,-m multiport
它也应该是--dports
和(复数形式)--to-ports
请注意,我遇到了类似的问题 + 我已经有一个使用端口 80 的应用程序(apache2),我必须先终止它才能使用重定向
答案3
您应该使用 TUN/TAP 接口来完成这项工作。请参阅教程了解更多详情。