基于此问题可以做以下事情吗:
- 具有 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
根本不起作用。
您有三个选择:
- 在机器“A”上创建桥接
- 让机器“R”安装路由表,并使用 ICMP 重定向和 proxy_arp 的组合来配置网络的其余部分
- 在计算机“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 服务器,并将地址提供给您的内部网络即可。如果无法简单地将具有两个接口的盒子变成桥接器,这可能是最简单的设置方法。