路由在 Linux 中不起作用

路由在 Linux 中不起作用

这是我的 ifconfig 文件:http://pastebin.com/5ZUGYbnB

auto eth0
iface eth0 inet static
        address 180.xxx.xx.68
        netmask 255.255.255.248
        network 180.xxx.xx.64
        broadcast 180.xxx.xx.71
        gateway 180.xxx.xx.65
        # dns-* options are implemented by the resolvconf package, if installed
        dns-nameservers 180.xxx.xx.65 8.8.8.8

auto eth1
iface eth1 inet static
        address 10.96.92.23
        netmask 255.255.255.0
        network 10.96.92.0
        broadcast 10.96.92.255
        gateway 10.96.92.1
        dns-nameservers 10.96.92.11
        up route add -net 10.86.82.0 netmask 255.255.255.0 gw 10.96.92.1
        down route del -net 10.86.82.0 netmask 255.255.255.0 gw 10.96.92.1

这是我的路由表http://pastebin.com/VVwCe7ZF

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
180.xxx.xx.64   0.0.0.0         255.255.255.248 U     0      0        0 eth0
10.86.82.0      10.96.92.1      255.255.255.0   UG    0      0        0 eth1
10.96.92.0      0.0.0.0         255.255.255.0   U     0      0        0 eth1
0.0.0.0         180.xxx.xx.65   0.0.0.0         UG    100    0        0 eth0
0.0.0.0         10.96.92.1      0.0.0.0         UG    100    0        0 eth1

但它没有将任何数据包转发到另一个网络。我的路由表有问题吗?

答案1

首先,您有两条默认路线。在某些情况下可能会出现这种情况,但这不太可能是您想要的。

通常会使用一条默认路由,我猜您想使用该 180.x 网络上的默认网关。

从 eth1 定义中删除网关行。

要检查的另一件事是/proc/sys/net/ipv4/ip_forward已启用:

cat /proc/sys/net/ipv4/ip_forward 

并检查是否得到 1,而不是 0。

如果没有,你需要启用它,最好的方法是编辑/etc/sysctl.conf和设置net.ipv4.ip_forward=1

这将使转发正常工作,但如果此时仍然不起作用(如果没有更好地描述您想要实现的目标,很难说出您的要求是什么),您可能需要使用 iptables 研究 netfilter SNAT 或 MASQ。

答案2

不要忘记:

iptables -P FORWARD ACCEPT

答案3

如果有答案就太好了,我也在研究 Linux 路由器。这似乎不像说那么简单:

net.ipv4.ip_forwarding=1
iptables -P 转发 -j 接受

从重新启动状态开始,如果该路由表是重新启动状态路由:

sudo route del default eth0
sudo route del default eth1
sudo route 添加默认 gw $GATEWAY $IFACE
sudo route del -net 10.96.92.0 网络掩码 255.255.255.0
sudo route add -net 10.96.92.0 网络掩码 255.255.255.0 gw 1​​0.96.92.1 eth1
sudo route del -net 180.xx64 网络掩码 255.255.255.248
sudo route add -net 180.xx64 网络掩码 255.255.255.248 gw 1​​80.xx65 eth0

因此,这将是一个非常硬编码的路由表,$GATEWAY 是网关的 IP 地址,它知道如何处理目的地不是表中的目标,并且 $IFACE 是此路由器所在的 eth0 或 eth1 或另一个接口(如 ppp0)。如果 10.96.91.1 或 180.xx65 是这些路由器之一,则可以通过放置或保留默认路由来简化此路由表。

这只会有帮助机器找到并路由它的路径。据我所知,你需要防火墙sudo iptables帮助转发。它也不是持久的(重启后)...有很多方法,我想你已经用过其中一种了。

相关内容