我正在尝试设置具有 3 个 NIC 和静态路由的 CentOS。eth0 的 IP 地址为 192.168.10.2 和 GW:192.168.10.1,eth1 的 IP 地址为 192.168.20.2 和 GW:192.168.20.1,eth2 的 IP 地址为 192.168.10.3 和 GW:192.168.10.1。
我想在 eth1 上接受来自其他机器的流量(我已将服务器的 eth1 设置为这些客户端机器的网关)并通过 eth2 将其发送到路由器,反之亦然(反向路径)。
已将路线添加到系统
ip route add default via 192.168.10.3 dev eth1 proto static metric 1024
现在我面临的问题是,流量在 eth1 上接收,但没有通过 eth2。它看起来像是通过 eth0。
我暂时不想使用 NAT 或 IPTABLES,是否可以将 eth1 的流量路由到 eth2 以及反之亦然。
答案1
您可以使用以下方式开启 IP 转发
回显 1 > /proc/sys/net/ipv4/ip_forwarding
但这只是事实的一半。不使用 NAT 意味着所有主机都需要知道哪个路由器(网关)服务于哪个网络。例如,192.168.10.0/24 中的一台机器(例如 192.168.10.25)希望连接到 192.168.20.0/24 中的一台机器(例如 192.168.20.25),在一个网络中使用 192.168.10.3,在另一个网络中使用 192.168.20.2。机器 192.168.10.25 需要此路由
路由添加-net 192.168.20.0 网络掩码 255.255.255.0 gw 192.168.10.3
并且机器 192.168.20.25 需要
路由添加-net 192.168.10.0 网络掩码 255.255.255.0 网关 192.168.20.2
或者,你可以使用 NAT 和 IPTables
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables --flush
iptables -t nat——刷新
iptables -t mangle --flush
iptables -A 输入 -i lo -j 接受
iptables -A 输出 -o lo -j 接受
iptables --policy 输入接受
iptables --policy 输出接受
iptables --policy 转发接受
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
这样,您只需配置(假设路由已到位)路由器。