2つのサブネットがデバイスを介して互いに通信(ping)できるように、システムのネットワークを調整しようとしています。設定は次のとおりです。
(192.168.1.128) (172.16.248.223)
Router <------> PC <---------> Device 1 <--------> Device 2
(172.16.248.248) (10.0.1.1) (10.0.1.2)
PCには、ゲートウェイが172.16.248.254のDNSプロキシがあります。 PCはデバイス1とインターネットを共有し、デバイス1はデバイス2とインターネットを共有します。これはIPルーティングを介して行われますが、PCはデバイス2をpingできません。これは私の設定にも必要です。デバイスはUSB(cdc_ncmドライバ)を使用してインターネットを共有します。
パスは次のとおりです。
コンピュータから:
default via 192.168.1.1 dev eno1 proto static metric 100
10.0.1.0/24 via 172.16.248.248 dev usb0
172.16.248.0/24 dev usb0 proto kernel scope link src 172.16.248.248
192.168.1.0/24 dev eno1 proto kernel scope link src 192.168.1.128 metric 100
192.168.1.0/24 dev eno1 proto kernel scope link src 192.168.1.128 metric 202
デバイス1から:
default via 172.16.248.254 dev eth1
10.0.1.0/24 dev usb1 proto kernel scope link src 10.0.1.1
172.16.248.0/24 dev eth1 proto kernel scope link src 172.16.248.223
デバイス2から:
default via 10.0.1.1 dev usb0
10.0.1.0/24 dev usb0 proto kernel scope link src 10.0.1.2
172.16.248.0/24 via 10.0.1.1 dev usb0
また、デバイス 1 の usb0 インターフェイスには macvlan インターフェイス eth1 があります。この設定ではインターネット接続は正常に機能しますが、PCはデバイス2をpingできません。ただし、PCはデバイス1をpingでき、デバイス1はデバイス2をpingできます。
これを試すために、すべてのデバイスでiptablesを更新しました。そのような接続を実装する際に考えてみましょう。
PCでデバイス2をpingするように設定できますか?私がここで何を見逃しているのでしょうか?
編集する:すべてのデバイスでIPルーティングが有効になっています。混乱を避けるために質問を変えてみましょう。物理インターフェイス(USB)を使用して3つのデバイスを接続したいです。すべてのデバイスがPCのインターネット接続を共有でき、すべてのデバイスが互いにpingできるようにしたいです。次のコンテンツが欲しいです。
デバイス 2 のサブネットが異なることは重要ではありませんが、サブネットがないとインターネット接続は機能しません。これを達成するにはアドバイスが必要です。私のコンピュータとインターネットを共有するルーター以外に他のルーターはありません。
ベストアンサー1
「共有インターネット」という用語に注意してください。通常、これには一種のネットワークアドレス変換(NAT)が含まれます。私はこれがあなたの設定に該当しないと仮定します。
172.16.248.254でDNSプロキシについて言及しましたが、ネットワークに接続する方法は不明です。私は次のネットワーク図を想定します(解釈が間違っている場合は訂正してください)。
192.168.1.0/24 172.16.248.0/24 10.0.1.0/24
| | |
Router | | |
192.168.1.1 --| 172.16.248.248 --|-- 172.16.248.223 |
| PC | Device 1 |
|-- 192.168.1.128 | 10.0.1.1 --|
| | |-- 10.0.1.2
| 172.16.248.254 --| | Device 2
| DNS proxy | |
| | |
(サブネットを中心にダイアグラムを設定することをお勧めします。)特にDNSプロキシはルータに接続されていません。
つまり、次のパスが必要です。
コンピュータから:
default via 192.168.1.1 dev eno1
10.0.1.0/24 via 172.16.248.233 dev usb0 # NOT .248 !!
172.16.248.0/24 dev usb0
192.168.1.0/24 dev eno1
デバイス1から:
default via 172.16.248.248 dev eth1 # NOT .254 !!
10.0.1.0/24 dev usb1
172.16.248.0/24 dev eth1
デバイス2から:
default via 10.0.1.1 dev usb0
10.0.1.0/24 dev usb0
また、PCとデバイス1でIP転送を有効にする必要があります(echo 1 > /proc/sys/net/ipv4/ip_forward
ルートとしてsysctl
Googleなどを介して永久に設定できます)。
今はmacvlanの問題を無視します。最初のステップは、ルーティングを操作することです。
この設定では、PC、デバイス1、デバイス2の間を任意の方向にpingできます。テストを見てください。すべての興味深いインターフェイスの新しいxtermでデバッグ、実行などを行いますtcpdump -ni usb0
(したがって、インターフェイスの4つが3つのデバイスすべてにあります)。その後、問題が発生した場合、パケットが消える場所を確認できます。カーネルがパスがどこに行くべきかを考えるip route get 1.2.3.4
のにも役立ちます。1.2.3.4