web-dev-qa-db-ja.com

他の場所にあるかどうかを確認せずに仮想インターフェイスを起動します

そのIPアドレスがすでに他の場所で使用されているかどうかを確認するために最初にarpingを送信せずに仮想インターフェイスを起動する方法はありますか?

私は、ifupスクリプトをコピーして、arpingチェックセクションをコメントアウトすることを推奨する独自の製品を使用しています。ただし、そのカスタムバージョンのifupスクリプトはどこかに保存する必要があり、維持するのが最も良い方法ではありません。

Arpingチェックなしでインターフェースを起動するより良い方法はありますか?

2
Josh Smeaton

あなたは、Red Hatのネットワークスクリプトの範囲内でこれを実行できるはずです。ただし、これらのスクリプトのバグが原因である可能性はありません。


これは私がそれについて行ったであろう方法です:

まず、インターフェイスが起動している間、ARPを完全に抑制します。次に、インターフェイスが起動した後で再度有効にします。 (ARPを再度有効にする必要があります。そうしないと、マシンはまったく通信できなくなります。)

インターフェイスの初期化中にARPを抑制するには、/etc/sysconfig/network-scripts/ifcfg-eth0に追加します。これは実際には カーネルレベルでARPを無効にしますarpingを使用しようとすると失敗します。

ARP=no

インターフェイスが起動した後にARPを再度有効にするには、必要なコマンドを使用してファイル/sbin/ifup-localを作成します。

#!/bin/bash
ip link set dev $1 arp on

ただし、これはarpingが失敗する原因となるために失敗します。 /etc/sysconfig/network-scripts/ifup-ethスクリプトは実際にはarpingからのリターンコードを十分に注意深くチェックしないため、実際にARP=noを設定すると、初期化は失敗し、IPアドレスがすでに存在するという誤ったエラーメッセージが表示されます。使用中で。


これにより、ベンダーが推奨する元のオプションが残ります。スクリプトをハックし、(オプションで)バグをRedHatに報告します。

2
Michael Hampton

私はこれが古いことを知っていますが、私は今日これを調べていました

あなたは付け加えられます ARPCHECK=no任意のインターフェース定義ファイルに移動して、チェックをスキップします。

CentOS6.7でのみテスト済み

3
squareborg

Ifupスクリプトを使用する必要はまったくありません。 ifconfigを使用できますか?

問題は、インターフェースを上げたり下げたりするときに起こりたいことが次々と必要になる可能性があり、それからifupシステムを再発明することになるということです。

私は現在redhatシステムを使用していないので、あなたが話しているスクリプトをいじくり回すのに適していません。 ifupスクリプトのバリエーションを維持するのはそれほど悪くないだろうと私は難しいと思っていたので、それはあなたが望む振る舞いを説明するのに適切な場所です。あなたが話している種類の環境では、とにかく構成管理ソフトウェアを実行している必要があります。 (人形、シェフ、または同様のもの)。したがって、アップグレードで変更が失われないようにすることは、それほど難しいことではありません。

1
mc0e

aRPをブロックするファイアウォールルール?

しかし、真剣に、なぜARPを正常に動作させたくないのでしょうか。

他の誰かがすでに持っているアドレスを使いたいと私が考えることができる理由のほとんどは、正直ではありません。

0
mc0e