我是路由和网络方面的新手,所以我希望你们中的一些人可以帮助我理解这个问题以及如何解决它。
现在的情况:
我有一台 Linux 服务器(raspbian/ubuntu)。该服务器有两个以太网端口(每个端口都有自己的 MAC 和固定 IP 地址)。请参阅下图以查看预期的连接和分配的 IP 等(请点击下面的链接)。
一个具有固定 IP 地址的微控制器 (µC) 通过一个以太网端口连接到此 Linux 服务器。此 µC 将数据发送到服务器,然后将其保存到 Linux 服务器上的数据库中。Linux 服务器的第二个以太网端口连接到路由器。此路由器可以访问互联网。我的计算机(IP 是动态分配的)也连接到此路由器。
问题:
当 Linux 服务器上的两个以太网端口都连接时,它们无法正常工作。µC 可以向 Linux 服务器发送数据,我可以从 Linux 服务器连接到互联网。但是,如果我想从我的计算机连接到 Linux 服务器(filezilla、ftp、ssh 等),我总是会超时。一旦两个以太网端口都处于活动状态,就无法连接到服务器。只要我禁用一个以太网端口(sudo ip link set eth0 down,或者直接断开以太网电缆),就可以毫无问题地从我的计算机连接到 Linux 服务器。
我已经尝试了很多东西(添加自定义路由表、规则等),但到目前为止,我无法让它按照我希望的方式运行。但与此同时,我觉得我想得太多了,因为让这个设置工作起来似乎真的不需要太多的努力。
到目前为止,我尝试过的大多数解决方案都是朝这个方向发展的: https://kindlund.wordpress.com/2007/11/19/configuring-multiple-default-routes-in-linux/
我希望你们中的一些人能告诉我一些我目前没有注意到的显而易见的东西。我感谢每一个提示和帮助的尝试,非常感谢。
答案1
您遇到的问题是您在两个网络接口上配置了相同的网络。这通常不是您想要的。
理想情况下,您的微控制器网络上的 IP 地址应为 192.168.1.0/24,而其他连接上的 IP 地址应为 192.168.2.0/24。您只能与给定网络建立一次连接。如果您有充分的理由将微控制器与其他网络放在同一 IP 范围内,那么为什么不直接将微控制器连接到其他网络并忘记第二个接口呢?
另一个解决方案是将两个接口放入桥接器中,这样它们实际上就位于同一个网络上。除非微控制器生成大量数据(实际上使网络接口饱和),否则这比仅使用一个接口没有真正的优势。