Linux 上的路由和过滤

Linux 上的路由和过滤

我有一个带有两个接口的虚拟机,eth0 和 eth1。我希望处理来自 eth0 的数据包,如果它们不匹配任何规则,则将其丢弃。如果它们匹配规则,那么我希望它们不做任何修改地转发到 eth1。换句话说,转发数据包的源IP和目的IP必须与进入eth0时保持一致。我正在考虑在所有这个过程中使用 iptables,但我开始认为转发部分在不修改数据包的情况下是不可能的。有人能证实这一点吗?

答案1

使能够路由在 Linux 上:

IPv4

/proc/sys/net/ipv4/conf/all/forwarding

IPv6

echo 1 > /proc/sys/net/ipv6/conf/all/forwarding

您还可以针对每个网络适配器进行配置,而不是全局配置(替换all为网络适配器的名称)。请注意,此更改不会在重新启动后持续存在。要在启动时应用这些,您可以在/etc/sysctl.conf.

您还应该知道rp_filter范围(反向路径过滤)。

启用 IP 转发后,您可以通过在 iptables(和 ip6tables)FORWARD链中添加规则来过滤转发的数据包。

相关内容