web-dev-qa-db-ja.com

nmcliが表示されない静的ルートが追加されました

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を使用するときに存在するように見えますが?

1
pkaramol

まず、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)。ただし、それがネットワークの正しい構成です。

2
thaller