FreeBSDシステムに静的ARPエントリを追加しようとしています。これは、例えば次に適用されます。
arp -S 172.16.16.9 11:54:33:A8:B2:6B
。再起動後も維持されるように、これを起動スクリプトに追加しました。今まではそんなに良くなった。
ただし、物理リンクが循環すると、永続ARPエントリもフラッシュされます。知っている人はいますか?
ㅏ。これを防ぐための良い方法
雨。リンクを再度追加する良い方法
氏。もっと良い方法がありますか?
ベストアンサー1
FreeBSDと友達になろう
あなたは部分的に正しい道を行っているようです。私はあなたがUnixについて多くを知っていますが、実際のFreeBSDシステムについてはあまり知らないと思います。私はこれがFreeBSDの一般的なrc.dユーザーとは少し異なって扱うからだと思います。
私は個人的にarpが欠けている理由を詳しく把握したいので、この質問が少し弱いと思います。しかし、私たちが得る情報はほとんどありません。代わりに、我々は急いで結論を下します。しかし、彼らはFreeBSDでタスクを実行する方法についていくつかの興味深い質問を提示します。注意すべき点は、レンチをハンマーとして使用することができることです。
rcスクリプトの作成
FreeBSD起動スクリプトはここにありますが、/etc/rc.d
そのディレクトリをオペレーティングシステムに残し、そこに何も生成しないでください。それ以外の場合は、更新中にコンテンツを上書きできます。独自の起動/デーモン/サービススクリプトを作成したい場合は、最高の場所は/usr/local/etc/rc.d
推奨ファイルの場所については、以下で説明します。丘
最初からすべてを書くのではなく、その機能について読むと、多くのヘルパー機能が得られます。BSDの実用的なrc.dスクリプト
/etc/rc.conf.d/*
コメントで利用可能かどうかを尋ねました/etc/rc.conf.d/*
。お願いしますこれをしないでください。ここにあるファイルは起動時にインポートされますが、このディレクトリの目的は構成設定を持つ小さなフラグメントを含むことです(参照)rc.conf)。ほとんどの人はこのファイルを使用してシステムオプションを設定します。ただし、一般的ではありませんが、/etc/rc.conf
小さなセクションに分割して配置できます。/etc/rc.conf.d
もっと一般的な起動スクリプトを置く方が良いでしょう。 /etc/rc.localそれでもサポートされています。しかし、まだ適切なrcスクリプトを作成して置くことをお勧めします。/usr/local/etc/rc.d
rcスクリプトを完全に無視したい場合は、起動時に通常のスクリプトを起動するもう1つの一般的な方法は@rebootキーワードを使用することです。予約されたこと
しかし、すでに機能があるので、新しいrcスクリプトを作成する必要はないと言いたいと思います。
静的ARP
静的arpは実際にはよく文書化されていますが、非常に簡単です。 「欠落している」文書は、rcスクリプトがどのように処理されるかです。に記録されています。rc.conf:
static_arp_pairs
(str) Set to the list of static ARP pairs that are to be
added at system boot time. For each whitespace separated
element in the value, a static_arp_<element> variable is
assumed to exist whose contents will later be passed to a
``arp -S'' operation. For example
static_arp_pairs="gw"
static_arp_gw="192.168.1.1 00:01:02:03:04:05"
これは、/etc/rc.confに次の行を追加して3つの静的arpエントリを追加できることを意味します。システムリソースライブラリ注文する):
static_arp_pairs="a b c"
static_arp_a="1.2.3.4 11:22:33:44:55:66"
static_arp_b="1.2.3.5 22:33:44:55:66:77"
static_arp_c="1.2.3.6 33:44:55:66:77:88"
または特定の状況に応じて:
static_arp_pairs="myarp"
static_arp_myarp="172.16.16.9 11:54:33:A8:B2:6B"
これを処理するスクリプトはオペレーティングシステムの一部であり、その中にあり、/etc/rc.d/static_arp
非常に簡単です。 「開始」および「停止」コマンドのみをサポートします。
以下を使用してどこからでも呼び出すことができます。
/etc/rc.d/static_arp start
しかし、私は使用することを好む提供する注文する:
service static_arp start
何らかの理由で編集/変更したい場合は、そうしない/etc/rc.d/static_arp
でください。ルートは全能で、好きなことをすることができます。しかし、置き換えられる危険があります。あなたがすべきことは、cp /etc/rc.d/static_arp /usr/local/etc/rc.d/mystatic_arp
修正されたバージョンをそこに保存することです。名前の変更に注意してスクリプトに反映されていることを確認してください!
物理リンクの回収
他のシステムに慣れている場合は、ifconfigを使用してインターフェイスをオンまたはオフにすることもできます。ただし、FreeBSDでは次のものを使用することを検討する必要があります。
service netif restart <interface>
正直言って、これがstatic_arpもインポートするかどうかをテストしませんでした。または同様のもの:
service netif stop <interface>
...
service netif start <interface>
service routing restart
service static_arp start
ただし、物理リンクをループするとケーブルが外れることがありますか?今回もarpテーブルに何が起こっているのかわかりません。まだ管理上そのインターフェイスを下に置いていないので、まだ存在することを願っています。
修正する:@namezeroはstatic_arpを使用して、設定されたarpが物理的な切断にもかかわらず維持されるというコメントを確認しました。
ただし、お客様の状況を完全に理解するには、これをさらに詳しく検討する必要があります。これが私が得ることができる最も近い答えです。 「a. これを防ぐ良い方法」
予約されたこと
物理リンクの通知を受け取っていない場合は、それを監視するよりも良い方法はないと思います。スクリプトを単純にしておけば、通常のcronにそのまま残すことができます。
開発者が救出に来る
オペレーティングシステムの変更を確認できる場合は、将来的に良い方法を見つけることができます。デバイス状態変更デーモン開発者便利です。説明がありませんので、対応するLINK_UPまたはLINK_DOWNがあるとします。
次の内容で/etc/devd/interface.confファイルを作成します。
notify 0 {
match "system" "IFNET";
match "subsystem" "(em0|em1)";
match "type" "LINK_DOWN";
action "/usr/local/sbin/alertme.sh $subsystem"
}
ネットワークインタフェースem0とem1を通知します。
したがって、次のように簡単にできます。
notify 0 {
match "system" "IFNET";
match "subsystem" "(em0|em1)";
match "type" "LINK_UP";
action "/etc/rc.d/static_arp start"
}
しかし、arpエントリが欠落している理由を見つけるのに時間を費やす必要があるため、これは私にとって少し面倒です。しかし、これらのさまざまなガイドを通して、あなたは「いくつかの」方向に進むことができることを願っています。
一般化する
FreeBSDを使用してより幸せな生活を送る方法を簡単に説明する最後の候補のリストがありました。
- システム設定は次の場所になければなりません。/etc/rc.conf
- 独自のrcスクリプトが必要な場合は、/usr/local/etc/rc.d
- 簡単な起動スクリプトが必要な場合は、これを入れてください。/etc/rc.local(必要に応じてrcをソースできます)
- 起動時に真のユニバーサルスクリプトが必要な場合は、@rebootを使用してください。予約されたこと
- 使用システムリソースライブラリ編集中
/etc/rc.conf
- 使用提供するrcスクリプトと対話するとき
- 使用開発者機器の状態変化に応じた動作