我有一个带有两个网络接口的 Linux 设备,其中一个提供接入点 dhcp 和网站,另一个连接到互联网。第一个有一个静态 IP 10.0.0.1,我无法更改。第二个网卡使用 dhcp 连接到现有网络。我无法控制该网络的设置。第一个网卡上的流量在设备内处理,不必桥接到另一个网络接口。设备上的其他进程必须通过第二个网卡访问互联网。
一切正常,直到第二个网卡的网关/路由器使用与第一个网卡相同的子网 10.0.0.0/24,因此网关/dns 等的 IP 与第一个网卡的 IP 相同。由于所有到网关的流量都通过网卡路由,因此无法连接到互联网lo
。此外,接入点上的网站也无法访问。
要明确的是:两个网络应该完全独立。连接到第一个网卡的客户端将不会连接到第二个网卡,反之亦然。设备使用第一个网卡提供配置网站。与典型的家用路由器类似。设备使用第二个网卡执行其主要功能,即需要连接到互联网。
我该如何解决这个问题并正确地区分两者?
我尝试了以下方法:
- 从本地表中删除 10.0.0.1 路由。这有点麻烦,因为我必须编写脚本。此外,它只解决了设备能够连接到互联网的部分。本地网站仍然无法访问。
- 将第一个网卡添加到网络命名空间。这种方法似乎可行,但我无法做到这一点,因为第一个网卡实际上是无线接口上的虚拟接口,您只能添加底层接口,而不能添加单个虚拟网络接口。
- 我尝试阅读有关 VLAN 的信息,但不确定这是否有用,或者如何让它发挥作用
- 它尝试查看 /proc/sys/net/ipv4/conf 中的设置,但到目前为止还没有找到方法。
答案1
如果将两个 NIC 插入同一个网络或 VLAN,则问题在于您不能在单个网络上两次使用同一个 IP。
如果要将两个 NIC 插入不同的网络,则不应在网络的另一部分重复使用一个网络子网,除非在它们之间设置 NAT。
如果上述都不符合,请提供更多有关网络用途的背景信息。
答案2
听起来您可以控制网关通过 DHCP 分配的子网。确保它不与您的上游网络重叠。
如果两个接口的 IP 位于不同的广播域中,那么对于拥有这两个 IP 的本地计算机来说,这仍然是一个问题。如上所述,只需通过 DHCP 服务器指定不同的子网,并为指定子网内的内部接口分配 IP,即可防止这种情况发生。