起動時にデフォルトゲートウェイを設定する多くの問題


0

私はDebianを実行しているBeagleBone組み込みコンピュータを使用しています。

私は2つのネットワークインターフェースを持っています。

  1. pppを使用して外の世界に接続する、USBを介したセルラーモデムへの接続。 ISPから動的IPアドレスを受け取ります。

  2. 他のローカルデバイスにのみ接続されているイーサネットインターフェース。このインターフェイスに静的IPアドレス192.168.1.40を割り当てました。これをrc.local内にコマンドで設定します。 ifconfig eth0 192.168.1.40 netmask 255.255.255.0

2つのインターフェイスがアクティブなときだけ、モデムを通して接続することに問題があります。これを解決するためには、デフォルトゲートウェイをモデムが以下のコマンドでスクリプトを実行することによって取得するアドレスに設定する必要があることに気付きました。

#!/bin/sh
IPADD=&(/sbin/ifconfig ppp0 | grep 'inet' | cut -d: -f2 | awk '{ print $2}')
route add default gw $IPADD

ログイン後にスクリプトを手動で実行すると、これは非常に便利です。それから私は2つのインタフェースを通して通信することができます。

しかし、起動時にこのスクリプトを正しく実行させ、デフォルトゲートウェイアドレスを自動的に割り当てることはできません。

rc.localから実行し、/etc/rc5.dまたは/etc/rc3.dにスクリプトを配置し、/root/.bashrcまたは/user/.bashrcから実行して、すべてを試しました。スクリプトを実行する1分前にcrontabを使用してスクリプトをループで実行します。何も動作しません。

私がログインした後、どうやらデフォルトゲートウェイがイーサネットインターフェースを持っていることから上書きされるようです。

誰もがこれを解決する方法を知っていますか?このデフォルトゲートウェイアドレスは、起動時に自動的に割り当てられる必要があります。私は何日も試しています。

イーサネットケーブルが差し込まれていない場合、またはイーサネットインタフェースを停止している場合は、まったく問題ありません。 2つのインタフェースがアクティブなときだけ、私はこの問題を抱えています。


どのバージョンのDebianを使っていますか?ログイン後にどのネットワーク管理ソフトウェアをインストールして実行していますか(ifupdown、NetworkManager、networkd、DHCPクライアントを含む)。デフォルトアドレスをppp0経由のゲートウェイアドレスなしのデバイスルートとして追加してみましたか? (とにかくポイントツーポイントデバイスです。)
grawity

@grawity BeagleBone用のDebianの最新バージョンです。ネットワーク管理ソフトウェアについてはよくわかりません。 gwアドレスなしでppp0経由のデバイスルートとしてデフォルトルートを追加する方法私は上手く理解できていない気がします
Engineer999

外部インターフェースが常に同じであれば、ルートにIPではなくインターフェース名を使用できる場合はいつでも確認できます。
Seth

1
iproute2を使用して、 ip route add default via $IPADD ゲートウェイ付きの通常のバージョンです。 ip route add default dev ppp0 デバイス専用バージョンです。スクリプトを少し単純化します。 (ポイントツーポイントインターフェイスにはMACレイヤがないため、ゲートウェイアドレスは実際には違います。 中古 とにかく何のためにも。
grawity

1
@grawityこれらのコマンドを使用するとエラーが発生します。 「RTNETLINKが答えます:ファイルが存在します」。これは私が "route add default gw $ IPADD"を使用したときにのみ機能します
Engineer999
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.