過去数日間、さまざまな試みを行ったが成功しなかったので、正しい方向についていくつかのアドバイスが必要です。私は通常bashとLinuxを初めて使用します。
ゲートウェイが変更された時期(開始時のみ)を検出し、静的IP構成を更新しようとしています。初めて起動したときに.netに静的IP設定がなかったため、部分的にこれを実行しました/etc/dhcpcd.conf
。初めて起動するときは、単にIPアドレスをpingして成功したら、出力に応じて設定を更新できますip r
。これは問題なく動作します。
2番目の部分は、ゲートウェイが変更されたか(たとえば、ユーザーがルーターIPを変更した場合、または別の構成でISPを変更した場合など)(起動時のみ)を検出することです。同じ概念 - 外部アドレスに対してpingを実行しますが、この場合、ゲートウェイ情報(および静的IP)が正しくないため、pingは失敗します。
たとえば、
静的IPで設定されたルータは、ユーザーがネットワークを変更した192.168.1.110
ときに設定され、そのルータはRaspberry Piブートになり、固定設定とゲートウェイがあります。192.168.1.254
192.168.0.1
.1.110
.1.254
失敗した場合、スクリプトは新しいゲートウェイとIPアドレス(ファイルのゲートウェイの共通IPアドレスのリストから)を追加し、外部アドレスをpingしようとします。成功したら、静的構成を更新して再/etc/dhcpcd.conf
起動します。失敗した場合、有効なゲートウェイが見つかるまでリスト内の次の IP アドレスが試行されます。
私が知っている限り、新しいパスと新しいデフォルトゲートウェイを追加してpingする必要があります。これを追加するとうまくいきましたが、pingはまだ失敗しました(正しいIPアドレスから来たにもかかわらず)。新しいパス、ゲートウェイ、およびIPアドレスを追加した後、次のコマンドの出力。
ip r
default via 192.168.0.1 dev eth0
192.168.0.1 dev eth0 scope link
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.110 metric 202
netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
192.168.0.1 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
ping -q -w 10 -c 1 -I 192.168.0.1 -r 1.1.1.1
Tue 25 Sep 14:07:00 UTC 2018 Testing new gateway...192.168.0.1
PING 1.1.1.1 (1.1.1.1) from 192.168.0.110 : 56(84) bytes of data.
--- 1.1.1.1 ping statistics ---
10 packets transmitted, 0 received, 100% packet loss, time 9330ms
正しい方向に助けやアドバイスをいただきありがとうございます。
答え1
まず、存在しない問題を解決しようとしているようです...
あなたは言う...
ユーザーがネットワークを変更すると、ルーターは192.168.0.1になります。
これは頻繁に発生せず、ほとんどの場合に発生します(Tom's Guideアンケートによると、> 80%の人がパスワードを変更することはありません!)。
しかし、あなたがしたいことは、dhcpを使用する方が良いでしょう。少なくともdhcpサーバーで一度だけ再構成すると、すべてのデバイスが新しいネットワークレイアウトを学びます。
しかし、dhcpにしっかり反対している場合、解決策は単純ではありませんが、論理的に取り除くことはできます...
数年前、私はネットワークに接続されたストレージデバイスでネットワークを構成することを担当しました。最初はDHCPを試してみましたが、サーバーの応答がないために失敗した場合は、IPアドレス0.0.0.0で自己構成し、tcpdumpを使用して数秒(5 IIRC)のネットワークトラフィックをキャプチャしました。次に、統計分析を実行してローカルアドレス空間(ipヘッダーのsrcとdstを見ると、ローカル空間のアドレスがより一般的である)を見つけ、pingを使用してその中で未使用のIPアドレス空間を見つけます。ルータの IP アドレスも arp 要求統計によって取得されます。トラフィックの良いネットワークではうまく機能しますが、トラフィックの少ないネットワークではうまく機能しません。ネットワークスイッチがより一般的になり、下位ハブが段階的に廃止されるにつれて、スイッチがMACアドレスに向かわないトラフィックをフィルタリングしたため、動作は停止しました。
ああ、面白いプロジェクトの思い出ですね。