4台のコンピューターを直列に接続する必要があります。トポロジーを以下に示します。
c1<--->c2<--->c3<--->c4
C2およびc3コンピューターに複数のイーサネットカードがあります。インターネットからの外部接続は必要ありません。これら4台のコンピューターだけが相互に通信できるはずです。
注:すべてのコンピューターは、16.04以降のUbuntuバージョンを実行しています。
前もって感謝します。
ネットワークカードはストレートケーブルとクロスケーブルの両方をサポートしていることに注意してください。そうでない場合は、クロスオーバーイーサネットケーブルが必要になります。
次に、すべてのデバイスが接続されたら:
転送を有効にする
まず、デバイスで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は両方のサブネットワークに直接接続されているため、3番目のネットワークへのルートを設定するだけです。
/ etc/network/intefacesで複数のインターフェースを指定できます
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には、両方のネットワークへの直接ルートがあります。したがって、3番目のネットワークへのルートを定義する必要があります(C2の場合はC3 <-> C4、C3の場合はC1 <-> C2)。 C2とC3がすべてのネットワークにアクセスできるようになったら、C1とC4のデフォルトゲートウェイとしてそれらを定義する必要があります。