![iptables,将所有端口 80 重定向到一个 IP,但让一个 IP 转发通过](https://linux22.com/image/663129/iptables%EF%BC%8C%E5%B0%86%E6%89%80%E6%9C%89%E7%AB%AF%E5%8F%A3%2080%20%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%E4%B8%80%E4%B8%AA%20IP%EF%BC%8C%E4%BD%86%E8%AE%A9%E4%B8%80%E4%B8%AA%20IP%20%E8%BD%AC%E5%8F%91%E9%80%9A%E8%BF%87.png)
我的路由器重定向所有传入流量(接口eth0)至 IP 1.2.3.4:
iptables -t NAT -A PREROUTING -i eth0 -p tcp --dport 80 --to-destination 1.2.3.4:80
当客户端点击“100.80.77.8”时,我不想重定向他,而是让他访问 www-online IP 100.80.77.8。(注意:IP 转发已开启)。
最后,除 100.80.77.8 之外的任何 IP 都会被捕获并重定向到 1.2.3.4。
我应该添加哪些 iptables 规则?在全部重定向规则之前还是之后(见上文)?
谢谢。
__ 编辑 __ 这是我运行的制定规则的脚本:
IPTABLES=iptables
# Enable Internet connection sharing,
echo "1" > /proc/sys/net/ipv4/ip_forward
#clear all rules (flush)
$IPTABLES -F
$IPTABLES -X
$IPTABLES -t nat -F
$IPTABLES -t nat -X
$IPTABLES -t mangle -F
$IPTABLES -t mangle -X
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT
#rules--------
$IPTABLES -t nat -A PREROUTING -i wlan0 -d 100.80.77.8 -p tcp --dport 80 -j ACCEPT
#http (80)
$IPTABLES -t nat -A PREROUTING -i wlan0 -p tcp --dport 80 -j DNAT --to-destination 1.2.3.4
$IPTABLES -t nat -A POSTROUTING -j MASQUERADE
echo "\nipforward: done. but Apple."
答案1
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -d 100.80.77.8 -j ACCEPT
前上面显示的规则(即处理异常,然后规则)。
iptables
不执行 DNS(以任何你想要的方式),所以放弃任何关于第 4 层处理的想法——它严格来说是一个第 2/3 层工具。如果你发现这不起作用,我们需要看看全部您的规则无法做出任何进一步的评论,因此请将结果编辑iptables -L -n -v ; iptables -t nat -L -n -v
到您的问题中。