インターネットルーターとして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
が問題になったときに自動的に追加する方法はありますか?
「永続的なルート」をグーグルで検索すると、ブート間でルートを維持する方法が表示されますが、それは私が必要としているものではありません。
オプション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
をネットワークが使用しているものに変更する必要があります。
後世のために、これが私のために働いたものです。
# /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