他のデバイスを介して他のサブネットと通信できますか?

他のデバイスを介して他のサブネットと通信できますか?

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ルートとしてsysctlGoogleなどを介して永久に設定できます)。

今はmacvlanの問題を無視します。最初のステップは、ルーティングを操作することです。

この設定では、PC、デバイス1、デバイス2の間を任意の方向にpingできます。テストを見てください。すべての興味深いインターフェイスの新しいxtermでデバッグ、実行などを行いますtcpdump -ni usb0(したがって、インターフェイスの4つが3つのデバイスすべてにあります)。その後、問題が発生した場合、パケットが消える場所を確認できます。カーネルがパスがどこに行くべきかを考えるip route get 1.2.3.4のにも役立ちます。1.2.3.4

おすすめ記事