Ubuntu 8.10以降、Ubuntuを使用しています。今日は、Ubuntu 12.04サーバーで作業しています。
起動時に静的ルートを維持するのが困難です。私は通常、ルートコマンドを入れます
/sbin/route add -net <IP>/<MASK> <GW> dev <ethX>
/etc/rc.local
または/etc/network/if-up/
ディレクトリ内にファイル(routes
という名前)を作成しますが、Ubuntu 12.04では機能していません。
シェルでコマンドを入力した場合、それらは機能しますが、指定したファイルにある場合は同じコマンドは機能しません。
Ubuntu 12.04ではファイル名(routes
)が間違っている可能性があると考えて、ファイル名を他の名前に変更しようとしましたが、それも機能しませんでした。
コマンド/sbin/ifconfig
が機能し、/sbin/route
が少ないことにも気付きました。
ネットワークのセットアップで何が変わったのですか?
Ubuntu 12.04で静的ルートを定義するにはどうすればよいですか?
/etc/network/interfaces
に静的ルートを配置できます:
auto eth0
iface eth0 inet static
address 192.168.1.2
netmask 255.255.255.0
up route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1
up route add -net 172.16.0.0 netmask 255.240.0.0 gw 192.168.1.1
静的ルートを定義する正しい場所は/ etc/network/interfacesであることが非常によくわかりました。たとえば、/ etc/init.d/networking restartを使用してネットワークをグローバルに再起動する場合は問題ありません。ただし、ifdownおよびifupを使用してインターフェイスを個別にシャットダウンする場合、ifupはエラーで終了します。
ifup eth1
RTNETLINK answers: File exists
Failed to bring up eth1.
そのため、ルートを定義しようとしますが、すでに定義されています。インターフェースはとにかく起動しますが、ifupは/ run/network/ifstateを更新しないため、次回ifdownを実行する場合は、-forceフラグを使用しない限り実行できません。
ルートが既に定義されている場合でもifupが構成を続行するようにするには、/ etc/network/interfacesでルートを定義するときにこの形式を使用できます
up ip route add 172.16.0.0/24 via 192.168.10.1 || true
up ip route add 192.168.0.0/16 via 192.168.10.1 || true
これにより、出力に警告が表示されますが、インターフェイスの設定は完了します
ifup eth1
RTNETLINK answers: File exists
RTNETLINK answers: File exists
ssh stop/waiting
ssh start/running, process 18553
これを試すことができます(/etc/network/interfaces
に追加)、これはルートを設定するためのほぼ完全な方法です:
auto eth0
iface eth0 inet static
post-up /sbin/route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1
post-up /bin/mount -t nfs 192.168.0.203:/motd/ /motd/
パッケージがありますifupdown-extra Ubuntuで利用可能です。
自動スクリプト(/etc/network/*/
にインストール)を提供し、その1つを使用して静的ルートを追加します。
このための設定ファイルは/etc/network/routes
です
この構成ファイルの上部には、適切な説明があります。
この構成ファイルは、静的ルートif-updownスクリプトおよび/etc/init.d/networking-routesスクリプトによって読み取られ、特定のインターフェースまたはグローバルルートに関連付けられたルートのリストをセットアップします。
私が使用するルートの例は次のとおりです。
192.168.240.0 255.255.255.0 192.168.130.3 em3
私たちのために働いたのは
Sudo route add -net 192.168.0.2/32 gw 192.168.1.1 netmask 255.255.0.0
私は以前Macで実行していました。
Sudo route -n add -net 192.168.0.2/32 192.168.1.1
しかし、ubuntuでは、IPと最後の「ネットマスク」部分との間の「gw」が欠落していました(ubuntuでは-nも必要ありません)
nmcli
を使用することを好みます。
nmcli device modify <device-name> ipv4.routes "<ip>/<mask> <gw>" ipv4.route-metric 25
例えば:
nmcli device modify wlp2s0 ipv4.routes "1.1.1.0/24 192.168.0.1" ipv4.route-metric 25
その後、NetworkManagerサービスを再起動して変更を適用します。
Sudo systemctl restart NetworkManager.service