web-dev-qa-db-ja.com

Ubuntu Serverで静的ルートを設定する方法は?

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で静的ルートを定義するにはどうすればよいですか?

51
Frank Allan

/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
64
Eric Carvalho

静的ルートを定義する正しい場所は/ 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
18
mseisdedos

これを試すことができます(/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/
10
mmehboobhan

パッケージがあります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
6
NGRhodes

私たちのために働いたのは

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も必要ありません)

1
Peter Perháč

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
0
isapir