我的 iptables 有什么问题?

我的 iptables 有什么问题?

问题

我无法将端口 80 上的请求重定向到端口 8080 上的客户端

服务器

我使用 CentOS 6.3 VM 作为服务器,客户端是 Arduino

服务器 eth0 - 172.16.145.139 eth1 - 10.14.4.1

客户端 eth0——10.14.45

最终目标

任何能让我从内部客户端获取网页的修复方法

我尝试过的

我尝试过以各种方式修改 iptables 以允许我访问。最接近的结果是,我的客户端注册了已建立连接,但网页无法加载。当我使用 SSH 隧道时也发生了这种情况。所以我认为我忽略了一些设置,这些设置不允许它正确转发

# cat /proc/sys/net/ipv4/ip_forward
1

IP表

*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 10.14.4.5:8080
-A POSTROUTING -s 10.14.4.0/25 -o eth0 -j SNAT --to-source 172.16.145.139
COMMIT
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth1 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i eth1 -s 10.14.4.0/25 -o eth0 ! -d 10.14.4.0/25 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

提前感谢所有帮助!

答案1

以下是在我的 VM 服务器上适用的操作(适应您的 IP):

## Allow through firewll
iptables -I FORWARD -d 10.14.4.5/32 -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT
## Set up NAT forwarding rule
iptables -t nat -I PREROUTING -p tcp -i eth0 --destination-port 8080 -j DNAT --to-destination 10.14.4.5:80

看起来您缺少第一条规则,该规则允许数据包通过防火墙。不过您的 nat 规则看起来没问题。

请注意,“-I”插入规则链的顶部,“-A”附加到底部。对于第一条规则,我们希望它位于过滤表中的“拒绝”规则之前 - 最简单的方法是继续将其插入顶部(如果您正在修改现有表 - 否则,如果修改现有配置文件,请继续将其转换为“-A”并将其放在“拒绝”规则之前)。

相关内容