これは実用的な目的よりも「研究」のためのものです。以下の私の推測はそうではないので、これがどのように機能するかを知りたいです。言い換えれば、/etc/network/interfaces
ディストリビューションやNetworkManagerに関連する答えは望ましくありません。
このタイプの回答を提供する質問と重複して閉じないでください。
一般(ビクロスオーバー)イーサネットケーブルを使用して2つのGNU / Linuxシステムを接続しようとしています。今は問題にならないという噂があります。
私がやろうとしているのは、両方のコンピュータのインターフェイスにプライベートIPを追加することです。
ip addr add 10.0.0.1 dev eth0
10.0.0.2
他のコンピュータから。どちらもこの方法で識別できるネットワークに接続されていません。
その後、往復パスを追加しました。
ip route add 10.0.0.2 via 10.0.0.1
その逆。その結果、ip addr
およびの出力はip route
正しいように見えます(下記参照)。 Johnのコメントによると、パスを追加せずにこの場合、pingはタイムアウトしました。
両方のシステムのiptablesは開いており、INPUT、OUTPUT、およびFORWARDは規則なしで許可されています。
しかし、pingを試みると、次のことが起こります。
> ping 10.0.0.2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
From 10.0.0.1 icmp_seq=1 Destination Host Unreachable
From 10.0.0.1 icmp_seq=2 Destination Host Unreachable
この値を返すのはローカルインターフェイス(10.0.0.1)です。
これにはどのような追加のステップが必要ですか?そして/またはどこで間違っていますか?
使用されるルーティングテーブルはip route ...
次のとおりです。
default via 192.168.0.1 dev wlan0
10.0.0.2 via 10.0.0.1 dev eth0
192.168.0.0/24 dev wlan0 proto kernel scope link src 192.168.0.19
Sansはip route ...
同じように見えますが、ライン2はありません。
ethtool(両方のネットワークカードは同じハードウェアです)の出力は次のとおりです。
ethtool eth0
Settings for eth0:
Supported ports: [ TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Advertised pause frame use: Symmetric Receive-only
Advertised auto-negotiation: Yes
Link partner advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
Link partner advertised pause frame use: Symmetric Receive-only
Link partner advertised auto-negotiation: Yes
Speed: 100Mb/s
Duplex: Full
Port: MII
PHYAD: 1
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: pumbag
Wake-on: d
Current message level: 0x00000007 (7)
drv probe link
Link detected: yes
ip a
イーサネットNICの出力は次のとおりです。
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether b8:27:eb:f5:4f:7a brd ff:ff:ff:ff:ff:ff
inet 10.0.0.2/32 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::ba27:ebff:fef5:4f7a/64 scope link
valid_lft forever preferred_lft forever
答え1
コメントに記載されているとおり、ルーティングテーブルを変更する必要があります。
この構文は、ip route add X via Y
ゲートウェイトラフィック、つまりトラフィックをX
送信する必要があるかどうか(ほとんどの場合は外部アドレス)に使用されますY
。Y
到達するには追加のパスが必要です。自分のインターフェイスアドレスでY
問題を解決しないと、ループが生成され、ルーティングは機能しません。
必要なのは、ゲートウェイではなくインターフェイスを介して他のホストに直接トラフィックを送信することです。使用するネットマスクによってさまざまな可能性があります。
ip r add 10.0.0.2/32 dev eth0 # only 10.0.0.2 should go via eth0
...
ip r add 10.0.0.0/8 dev eth0 # 10.0.0.0 - 10.255.255.255 should go via eth0
答え2
ここでの問題は基本的に次のとおりです。
ip addr add 10.0.0.1 dev eth0
サブネットマスクをに設定します/32
。つまり、サブネットに他のノードを持つことはできず、そこでルーティングを設定しても役に立ちませんvia
。
明示的でより健全なマスクを使用してください。
ip addr add 10.0.0.1/24 dev eth0
問題を解決し、jofelの回答を確認してください。