web-dev-qa-db-ja.com

USB仮想イーサネットインターフェイス用のDHCP

Arietta G25 Debian ARMボードをDHCPを使用してホームネットワークに接続しようとしています(または失敗した場合は、正しいサブネットの静的IP)。 m現在USB経由でボードを使用しています。これは静的192.168.10.0/24 IPを使用して構成されたある種の仮想イーサネットインターフェイスとして表示されます。接続されているマシンからアクセスできます(SSH)が、 192.168.1.0/24上のネットワークの残りの部分とボードからインターネットにアクセスできるほか、ホームネットワークからボードにアクセスできます。

ホームネットワークは192.168.1.0/24サブネット上にあります。

現在、2つの/etc/network/interfacesファイルがあります。

ホスト構成(Linuxホストボックス)

allow-hotplug usb0
iface usb0 inet static
    address 192.168.10.20
    netmask 255.255.255.0

Board config(Debian ARM board over USB)

auto usb0
iface usb0 inet static
    address 192.168.10.10
    netmask 255.255.255.0
    gateway 192.168.10.20

ボードのIPを192.168.1.90に設定しようとしましたが、アクセスできなくなりました。おそらくゲートウェイと何か関係がありますか?私も試しました

iface usb0 inet dhcp

無駄に。

USB-connected-with-virtual-ethernet-interface ARMボードに、残りの部分で使用される192.168.1.0/24サブネット上にIPアドレス(DHCPまたは静的)を持たせるにはどうすればよいですか? USB経由でボックスに接続したときのネットワーク?DHCPを使用したい。192.168.1.1のルーターでDHCPサーバーが実行されている。

1
Bojangles

これは、NATとiptablesを使用して可能です(インスピレーションに対するGreg Bowserの回答に感謝します)。eth0がネットワークインターフェイスであり、usb0がAriettaのネットワークインターフェイスであるとすると、これはホストにルーティングを設定する一時的に

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o usb0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i usb0 -o eth0 -j ACCEPT

テストを行います(ifdown usb0およびifup usb0するか、Ariettaを再起動する必要がある場合があります)。ルールが機能する場合は、Ariettaから外部アドレス(おそらく192.168.1.1またはgoogle.com)にpingを実行できるはずです。

上記のiptablesルールが機能する場合は、net.ipv4.ip_forward = 1/etc/sysctl.confに追加し、iptablesルールを保存することで、それらを永続的にすることができます。これを行うには、iptables-persistentapt-get install iptables-persistent)をインストールし、インストール中にルールを保存します。

1
Bojangles

ボードのIPを192.168.1.90に設定すると、ルーティングが失敗するため機能しません。 [ホスト]ボックスでip routeを実行すると、192.168.1.0/24が通常のネットワーク接続を介してLANの残りの部分に接続されていることが示されます。意図したとおりにusb0ではなく、そのインターフェイスからパケットをルーティングしようとしています。

2つのオプション:

  1. Linuxホストをルーターとして使用します。これには、転送を有効にし、iptablesでNAT(MASQUERADING)を設定する必要があります(これは実際には非常に簡単です)

  2. ホストボックスにブリッジインターフェイスを作成し、そのブリッジに両方の物理インターフェイスを追加します。これは基本的に両方を同じスイッチに接続するようなものですが、ソフトウェアで行われます。ネットワークがeth0のホストボックスに接続されていると仮定します。

    brctl addbr br0
    brctl addif br0 usb0
    brctl addif eth0
    

これはうまくいくはずです©。 bridge-utilsパッケージのインストールが必要になる場合があります。 Debianベースのディストリビューションを使用しているので、 ここを参照

1
Greg Bowser