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
orコマンドを使用したときに存在するように見える特定のパスが表示されないのはなぜですか?route
nmcli
答え1
まずnmcli connection ...
、手動パスが接続プロファイルにあることを示します。構成ファイルは、ネットワークデバイスを構成するために使用される一連の設定です。ただし、これはデバイス自体の構成ではありません。現在設定されているパスを表示するか、またはnmcli -f all device show enp3s0
正しいip route show
です。両方のコマンドはまったく同じことを行いません。最初のコマンドはNetworkManagerに現在の設定が何であるかを尋ね、2番目のコマンドはnetlink APIを介してカーネルに問い合わせます。もちろん、両側の司令官が提供する情報は一貫しているべきです。
とにかく、設定ファイルでパスを設定して有効にします。デバイスに表示されると予想されるパスは正しいです。
172.16.2.1
ゲートウェイに直接アクセスできないため、存在しません。カーネルはこのパスを追加することを許可せず、NetworkManagerのログファイルにパスを追加できなかったという警告が表示されることがあります。また、ip route add
このパスを直接追加することもできません。
潜在的な解決策は、ルーティングを次のように設定することですonlink
(最近のカーネルとNetworkManagerでのみサポートされています)。より良い解決策は、ゲートウェイ(+ipv4.routes 172.16.2.1/32
)に直接ルートを追加することです。これがネットワークの正しい構成であれば。