DHCP 连接到 NIC A - 为 NIC B 上的机器提供 IP

DHCP 连接到 NIC A - 为 NIC B 上的机器提供 IP

基于此问题可以做以下事情吗:

- 具有 DHCP 的路由器连接到 Box 1 上的 NIC A
 - 机器 B 连接到 Box 1 上的 NIC B

我需要机器 B 从 NIC A 上的路由器获取 DHCP IP 地址。当前的设置和配置如下:

-NIC A DHCP 分配的 IP:10.0.xx (255.255.255.224)
 - NIC B 静态 IP:10.1.xx (255.255.255.252)

我已打开 ipv4_forwarding,但无法为机器 B 分配静态 IP。我需要做什么才能让来自 NIC A 的所有流量流过 NIC B。或者更具体地说,如何让机器 B 从路由器上的 DHCP 获取 IP 地址。

  • 我需要设置 IPTables 吗?如果需要,我应该从哪里开始?
  • 我需要在 Linux 机器上设置路由吗?如何设置?
  • 做不到吗?

澄清

这个盒子不是路由器。路由器已经安装到位。这是用于 Samba 共享和虚拟机的 Linux 机器。但是有些机器无法连接到主交换机,但它们可以通过另一个集线器连接到此机器。

简而言之这台机器位于中间。

答案1

您有三名主持人:

Machine "B" ======  Machine "A" ====== Machine "R"
10.1.0.1            10.0.0.2            10.0.0.1

除非Machine "R"(您的路由器)知道10.1.0.0/16通过它的路由10.0.0.2根本不起作用。

您有三个选择:

  1. 在机器“A”上创建桥接
  2. 让机器“R”安装路由表,并使用 ICMP 重定向和 proxy_arp 的组合来配置网络的其余部分
  3. 在计算机“A”上使用网络地址转换。这将“隐藏”其左侧的所有主机,因此计算机“R”将无法访问计算机“B”上的服务。

创建桥接非常简单。在机器“A”上:

brctl addbr br0
brctl addif br0 eth0
brctl addif br0 eth1
brctl stp br0 on

然后配置br0您想要的 IP 地址(例如通过运行dhclient br0)。

然后,机器“B”应该能够使用dhclient eth0并从机器“R”获取 IP 地址

网桥带来了一系列问题,其中最严重的问题就是许多设备对 STP 的支持存在缺陷。

如果你让机器“R”创建你的路由表,那么你将需要机器“A”来启用代理 arp:

echo 1 > /proc/sys/net/ipv4/conf/all/proxy_arp

网络上的其他机器需要接受 ICMP 重定向。我见过至少两台打印机默认不接受。您的情况可能有所不同。

最后,启用网络地址转换实际上很简单:

iptables -t nat -A POSTROUTING -s 10.1.0.0/16 -j SNAT --to-source $IP

其中$IP是 for use 给出的地址Machine "R"。有许多工具可以自动执行此操作。

答案2

您应该桥接两个网络接口;这样,中间的计算机将充当网络集线器,以完全透明的方式在两个端口之间传递流量。无需路由,无需配置,另一台计算机和路由器将“仅仅”能够相互通信(当然也能够与桥接计算机通信)。

答案3

您需要在 Linux 机器中配置 DHCP 中继代理。DHCP 中继代理允许您将 DHCP 请求从一个子网中继到不同子网中的其他 DHCP 服务器。执行 DHCP 中继的 Linux 命令是dhcre中继

您还需要检查是否可以从机器 B 访问 DHCP 服务器(检查我对您的另一个问题的回答以配置路由和默认网关),并且服务器中没有防火墙规则阻止从机器 B 到 DHCP 服务器的数据包。

答案4

如果您按照链接的问题上的说明操作,则该框是路由器。ip_forward = 1 设置启用路由。如果这不是您想要的,那么您需要将其设置为网桥。

通过将盒子设置为路由器,你会让事情变得更加复杂,这听起来比你想要/需要的要复杂得多。使用两个接口配置系统作为桥梁可能是最简单的选择。如果您需要将盒子用作路由器,那么您必须考虑其他选项。

您可以在计算机上设置 dhcp 中继代理,但您还需要向路由器添加路由,以便它可以访问内部地址空间,并且您需要向路由器添加额外的内部地址空间范围。

您只需在具有两个接口的盒子上设置一个 DHCP 服务器,并将地址提供给您的内部网络即可。如果无法简单地将具有两个接口的盒子变成桥接器,这可能是最简单的设置方法。

相关内容