スクリプトによるデフォルトゲートウェイと割り当てられたIPの変更

スクリプトによるデフォルトゲートウェイと割り当てられたIPの変更

過去数日間、さまざまな試みを行ったが成功しなかったので、正しい方向についていくつかのアドバイスが必要です。私は通常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アドレスに向かわないトラフィックをフィルタリングしたため、動作は停止しました。

ああ、面白いプロジェクトの思い出ですね。

おすすめ記事