我需要串联四台计算机。拓扑如下。
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 的默认网关。