如何在不使用任何外部设备的情况下将四台计算机连接在一起?

如何在不使用任何外部设备的情况下将四台计算机连接在一起?

我需要串联四台计算机。拓扑如下。

                c1<--->c2<--->c3<--->c4

我在 c2 和 c3 计算机上安装了多块以太网卡。我不需要任何来自互联网的外部连接,只要这四台计算机能够相互通信即可。

注意:所有计算机都运行 Ubuntu 版本大于等于 16.04。

提前致谢。

答案1

请注意,您的网卡既支持直通电缆也支持交叉电缆。否则,您将需要交叉以太网电缆。

然后,一旦所有设备都连接好了:

启用转发

首先在您的设备上激活 IPv4 转发。

要即时启用它,您可以使用:

echo 1 > /proc/sys/net/ipv4/ip_forward

要永久启用它,请编辑文件,/etc/sysctl.confand取消注释net.ipv4.ip_forward = 1的行。然后重新加载conf sysctl -p /etc/sysctl.conf:。

定义 IP 和路由

然后,配置设备的 IP 和路由。

为此,您可以直接编辑文件 /etc/network/interfaces。

例子 :

auto eth0
iface eth0 inet static
        address 192.168.1.1 # c1, configure the same subnet in the c2 interface that is connected to the c1 device
        netmask 255.255.255.0
        up route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.1

如果您的所有设备都在同一个子网中,则无需描述路由。

调试/确认

如果这不起作用,请检查防火墙并根据需要进行编辑:

sudo iptables -L

希望这个答案能有所帮助。

编辑

由于 C2 直接连接到两个子网,因此您只需设置到第三个网络的路由。

您可以指定多个接口/etc/网络/接口

auto  [interface1]
iface [interface1] inet static
        address 192.168.1.2 # The same subnet that is configure for C1
        netmask 255.255.255.0
        # You don't need specific route for this interface because there is no another network behind C1

auto [interface2]
iface [interface2] inet static
        address 192.168.2.1 # C2<--->C3 subnet
        netmask 255.255.255.0
        up route add -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.2.2 # Where 192.168.3.0 is the C3<-->C4 subnet and 192.168.2.2 the C3 address of the interface in the subnet C2<-->C3

我没有测试这个配置,但它应该可以工作。配置完成后,你可以用ip route命令检查路由。

C3 和 C2 有到这两个网络的直接路由。因此,您只需定义到第三个网络的路由(C3 <--> C4 为 C2,C1 <--> C2 为 C3)。一旦 C2 和 C3 可以访问所有网络,您只需将它们定义为 C1 和 C4 的默认网关。

在此处输入图片描述

相关内容