root@Andromeda:~# nmcli con show "Wired connection 1" | grep -i routes
ipv4.routes: --
その後.。
root@Andromeda:~# nmcli con modify "Wired connection 1" +ipv4.routes "188.88.88.88/23 172.16.2.1"
root@Andromeda:~# nmcli connection up "Wired connection 1"
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/8)
root@Andromeda:~# nmcli con show "Wired connection 1" | grep -i routes
ipv4.routes: { ip = 188.88.88.88/23, nh = 172.16.2.1 }
だが ...
root@Andromeda:~# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default speedport-entry 0.0.0.0 UG 100 0 0 enp3s0
10.10.10.0 0.0.0.0 255.255.255.240 U 0 0 0 br-f8186d7831df
link-local 0.0.0.0 255.255.0.0 U 1000 0 0 enp3s0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 enp3s0
root@Andromeda:~# ip route
default via 192.168.1.1 dev enp3s0 proto dhcp metric 100
10.10.10.0/28 dev br-f8186d7831df proto kernel scope link src 10.10.10.1 linkdown
169.254.0.0/16 dev enp3s0 scope link metric 1000
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
192.168.1.0/24 dev enp3s0 proto kernel scope link src 192.168.1.6 metric 100
特定のルートがどちらにも表示されないのはなぜですかip route
またはroute
コマンドは、nmcli
を使用するときに存在するように見えますが?
まず、nmcli connection ...
は、手動ルートが接続プロファイルにあることを示しています。プロファイルは、ネットワークデバイスを構成するための一連の設定です。ただし、デバイス自体の構成ではありません。現在構成されているルートを確認する場合は、nmcli -f all device show enp3s0
またはip route show
が適切です。これらの2つのコマンドはまったく同じことをしません。最初のコマンドはNetworkManagerに現在の設定と思われるものを尋ね、2番目のコマンドはnetlinkAPIを介してカーネルに尋ねます。もちろん、両方のコマンドによって提供される情報は一致する必要があります。
とにかく、プロファイルにルートを設定してアクティブにします。デバイスにルートが表示されることを期待するのは正しいことです。
172.16.2.1
ゲートウェイに直接到達できないため、そこにはありません。カーネルはこのルートの追加を許可しません。おそらくNetworkManagerのログファイルに、ルートの追加の失敗に関する警告が表示されます。また、このルートをip route add
で直接追加することもできません。
考えられる解決策は、ルートをonlink
として構成することです(カーネルとNetworkManagerは比較的最近しかサポートしていません)。より良い解決策は、ゲートウェイへの直接ルートも追加することです(+ipv4.routes 172.16.2.1/32
)。ただし、それがネットワークの正しい構成です。