iptables FORWARD 规则

iptables FORWARD 规则

我正在运行 3 个装有 Fedora 19 的虚拟机。机器 B 设置了两个网络适配器,并在机器 A 和机器 C 之间提供队列通道。

机器 A 的 IP 设置为192.168.1.1,机器 C 的 IP 设置为172.16.1.1。机器 BI 上有一个适配器的 IP 为192.168.1.254,另一个适配器的 IP 为172.16.1.254

我在机器 B(它作为路由器工作)上创建了此规则:

iptables -P 输入删除

iptables -A 输入 -p icmp -j 接受

PING因此,除非允许机器 A 和 B 之间的通信,否则机器之间不会建立任何连接。

现在我想在路由器中创建一个规则,允许HTTPS外部网络(机器C)和内部网络(机器A)之间的通信

我在机器B中添加了这条规则:

iptables -A FORWARD -o p7p1 -p tcp --dport 443 -d 192.168.1.1 -j ACCEPT

p7p1机器B上连接机器A的接口在哪里。我也试过:

iptables -A FORWARD -i p8p1 -o p7p1 -p tcp --dport 443 -d 192.168.1.1 -j ACCEPT

p8p1机器 B 上连接机器 C 的接口在哪里。

现在,在机器 AI 上nc -l 443和在机器 C 上,nc 192.168.1.1 443但我得到了Ncat: Connection timed out

我的规则有什么问题?

答案1

您缺少一条允许答案通过防火墙的规则。

我信任 netfilter 的代码及其强大的state模块,因此我会使用它iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT,这样其他方向的数据包也是被允许的。

在您的规则集中,从 192.168.1.1 到 172.16.1.1 的另一台机器的应答被阻止。

另请参阅有关 iptables 故障排除的文档,例如linuxhomenetworking.com 上有这个并在出现问题时添加日志记录规则。

iptables -A FORWARD -j LOG

相关内容