限制某些接口/网络之间的 IP 转发

限制某些接口/网络之间的 IP 转发

我目前已ipv4.ip_forward启用在多个接口之间路由数据包。

我现在将系统扩展到 8 个接口,但我想限制接口/地址之间的路由。

一种选择是使用firewalld,但我将其部署在旧版本的 RH 上,因此可以通过iptables.

答案1

实际上iptables非常适合限制这一点。这筛选允许或阻止数据包的表具有三个链。在每个链中,可以定义规则来匹配数据包,并在数据包匹配时触发操作。数据包匹配的规则链取决于数据包相对于正在iptables运行的主机的方向:

  • INPUT:发往本地主机的传入数据包
  • OUTPUT:来自本地主机的传出数据包
  • FORWARD:发往其他主机且需要转发的数据包

现在,例如,如果要转发一个数据包,并且在链中没有与其匹配的规则FORWARD,则将根据政策在此链上设置,默认为:ACCEPT。数据包将被允许通过。此命令将显示策略和规则(如果定义了其中任何一个):

iptables -t filter -vnL

该表使用 指定-t <table>filter如果未指定,则为默认表,因此以下命令等效:

iptables -vnL

要阻止所有数据包转发,该链上的策略可以设置为REJECTDROP如下

iptables -P FORWARD REJECT

FORWARD现在,如果链中没有规则明确接受所有要转发的数据包,它们都会被拒绝。

对于内部流量,您可能需要一个REJECT策略。这将立即通知客户端路径已关闭。您可能需要DROP针对来自外部网络的流量制定规则。

为了明确允许某些数据包通过,规则被附加到这些链中,这些链按照定义这些规则的顺序与数据包进行匹配。例如,允许所有进入eth0并基于路由的流量转发到eth1

iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT

例如,仅允许来自10.0.0.0/24子网的数据包以相反方向通过:

iptables -A FORWARD -i eth1 -o eth0 -s 10.0.0.0/24 -j ACCEPT

有关所有参数的详细说明,请参阅iptables 联机帮助页iptables 扩展联机帮助页

相关内容