web-dev-qa-db-ja.com

関連するインターフェイスがダウンした場合でも、ルーティングテーブルにエントリを保持するにはどうすればよいですか?

インターネットルーターとしてLinuxボックスを設定しています。 eth0インターフェイスをLANに接続し、eth1インターフェイスをpppoaモデムに接続し、dhcpを使用してパブリックIPに構成しました。 ARPの問題により、ネクストホップとしてモデム自体(IP 172.16.0.1)を使用してインターネットに接続する必要があります。これを行うには、次の2行を使用します。

route add -Host 172.16.0.1 dev eth1
route add default gw 172.16.0.1

これは通常、インターフェイスがdhcpで構成された後に実行され、すべて正常です。問題は、モデムが切断され、再接続され、ISPによって新しいIPアドレスが割り当てられたときに発生します。 dhcpcデーモンが新しいIPのeth1インターフェイスを再構成すると、ルーティングテーブルはインターネットに到達するために必要なエントリを失います。つまり、2つのrouteコマンドをもう一度入力する必要があります。 Linuxにルートを保持させる方法はありますか、それともdhcpcdが問題になったときに自動的に追加する方法はありますか?

「永続的なルート」をグーグルで検索すると、ブート間でルートを維持する方法が表示されますが、それは私が必要としているものではありません。

2
Robbie Mckennie

オプション1

通常、DHCPサーバーにデフォルトゲートウェイを設定できるため、DHCPサーバーがIPを割り当てるたびに、クライアントが使用するデフォルトゲートウェイも提供されます。これを行う方法については、DHCPサーバーの構成を参照してください。

オプション2

クライアントでこれを実現する他の方法は、/usr/lib/dhcpcd/dhcpcd-hooksにdhcpcdフックを作成することです(slackwareではディレクトリが異なる場合がありますが、非常に疑わしいです)。 40-routeという名前の新しいファイルを次の内容で作成します。

route add -Host 172.16.0.1 dev eth1
route add default gw 172.16.0.1

または、これも機能するはずです。

ip route add 172.16.0.0/24 via 172.16.0.1

これは、dhcpcdが新しいIPを取得した後にこのコマンドを実行する必要があります。 192.168.0.0/24をネットワークが使用しているものに変更する必要があります。

3
phoops

後世のために、これが私のために働いたものです。

# /lib/dhcpcd/dhcpcd-hooks/40-route
if [ "$reason" = "BOUND" ] && [ "$interface" = "eth1" ]; then
  route add -Host 172.16.0.1 dev eth1
  route add default gw 172.16.0.1
fi
0
Robbie Mckennie