iptables,将所有端口 80 重定向到一个 IP,但让一个 IP 转发通过

iptables,将所有端口 80 重定向到一个 IP,但让一个 IP 转发通过

我的路由器重定向所有传入流量(接口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到您的问题中。

相关内容