我有一个带有两个接口的虚拟机,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
链中添加规则来过滤转发的数据包。