运行 Fedora 10 时我有以下场景。
NIC A - 在 10.11.0.1 上运行。DHCP 已分配。 NIC B — 尚未指定 IP。
连接到 NIC B 的机器需要在 NIC B 和 NIC A 之间传输流量,即查看 NIC A 可以看到的所有内容。由于另一台机器上已经安装了防火墙,因此流量可以在这些网络之间自由流动。
我意识到这是一个路由问题,但不知道从哪里开始。
- 我是否为 NIC B 分配一个静态 IP?
- 我是否使用 iptables 创建规则来执行此操作?
- 我是否创建静态路由?如何创建?
我该如何正确设置它?
答案1
你也可以这样做桥接而不是路由。这会将您的计算机变成一个或多或少智能的交换机。为此,您将需要软件包bridge-utils
并通过禁用 DHCP(并重新启动)或运行 来取消配置 NIC A 的 IP 地址ip addr del 10.11.0.1 dev eth0
。
要配置网桥,您需要执行以下操作:
brctl add br0
brctl addif br0 eth0 # NIC A
brctl addif br0 eth1 # NIC B
您的网桥现已启动并运行。要过滤数据包,您可以使用 iptables 或ebtables。
LE: 自乔提到IP 地址,我记得我忘了一些东西。如果您希望服务器有一个 IP 地址,您可以将其分配给接口br0
,服务器将像连接到 NIC A 或 B 的任何其他计算机一样运行。
LE2:桥接配置可以保存在 下/etc/sysconfig
。要了解如何读取/usr/share/doc/initscripts-*/sysconfig.txt
。例如,我的配置文件如下所示:
# /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
STP=off
DELAY=1
ONBOOT=yes
BOOTPROTO=dhcp
# /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE=br0
我只有一张网卡,并且我将网桥用于我的虚拟机。
答案2
首先,您需要在 Fedora 框中启用 IP 转发,编辑 /etc/sysctl.conf:
net.ipv4.ip_forward = 1
接下来,您需要告诉连接到 NIC B 的机器,如果它们想要连接到网络 10.11.0.x,则需要通过您的服务器。这可以通过将您的服务器(NIC B 的 IP)设置为其他机器的默认网关来实现。或者您可以在机器中添加静态路由:
route ADD 10.11.0.0 MASK 255.255.255.0 A.B.C.D (in windows)
其中 ABCD 是您的服务器 (NIC B) 的 IP 地址。我假设 255.255.255.0 是另一个网络的网络掩码。
答案3
网桥通常没有地址,但并不表示它们不能寻址。如果桥接并寻址,NIC 可用作双重用途,桥接正常流量并允许远程客户端从任一 NIC 连接进行访问。(由于它们是桥接的,因此您只需一个 NIC 即可为双方提供地址,以便在需要时连接到网桥服务器。但这会增加内部流量。不推荐。)