iptables路由

iptables路由

我相信这个问题之前已经被回答过 100 次了,但我几乎可以肯定我正在寻找错误的方向。我想要的设置如下:

我有一个使用 KVM 和 libvirt 的虚拟主机。我有一个简单的 192.168.1.0/24 家庭网络,我想通过服务器网络对其进行扩展。我将使用 192.168.12.0/24 作为新网络。但由于会有少数服务器仍在正常网络中运行,所以我在libvirt中添加了一个虚拟网络。基本上我想在 br0(它是 eth0 的桥)和 virbr0(它是虚拟网络接口)之间路由。我尝试使用 iptables 路由流量,并且我已经使用这些命令管理它来访问网络

iptables -I FORWARD -d 192.168.12.0/24 -s 0.0.0.0/0 -j ACCEPT
iptables -I FORWARD -s 192.168.12.0/24 -d 0.0.0.0/0 -j ACCEPT
iptables -I FORWARD -s 192.168.1.0/24 -d 0.0.0.0/0 -j ACCEPT
iptables -I FORWARD -d 192.168.1.0/24 -s 0.0.0.0/0 -j ACCEPT

有人可以告诉我正确的方向吗?

编辑1:感谢您的回答。我完全忘记了内核规则并应用了它们。我现在可以从 192.168.1.0/24 网络 ping 机器,反之亦然。但不幸的是,我无法通过 ssh 连接到这台机器,也无法 ping 192.168.1.0/24(当然还有它的原始网络)之外的其他任何东西。 “核心”路由器已正确配置,可将任何内容路由到服务器网络、kvm 管理程序。

我还考虑将网桥作为路由接口,并添加了一个新接口 (eth0:1),它现在是我的“外部”接口,但这也不会改变任何内容。

答案1

iptables 用于定义流量策略。添加转发规则并不启用转发。您必须设置相应的 sysctl 键,即

sysctl net.ipv4.conf.br0.forwarding=1
sysctl net.ipv4.conf.virbr0.forwarding=1

同样,您也可以发出

echo 1 > /proc/sys/net/ipv4/conf/br0/forwarding
echo 1 > /proc/sys/net/ipv4/conf/virbr0/forwarding

您可能还需要(取决于您的设置)添加适当的路由表条目。

相关内容