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에 현재 구성이 무엇이라고 생각하는지 묻고 두 번째 명령은 netlink API를 통해 커널에 묻습니다. 물론 양측 지휘소가 제공하는 정보는 일관되어야 한다.
어쨌든 구성 파일에서 경로를 설정하고 활성화합니다. 기기에 표시될 것으로 예상하는 경로가 정확합니다.
172.16.2.1
게이트웨이에 직접 액세스할 수 없기 때문에 존재하지 않습니다 . 커널은 이 경로를 추가하는 것을 허용하지 않으며 NetworkManager의 로그 파일에 경로 추가에 실패했다는 경고가 표시될 수 있습니다. 또한 ip route add
이 경로를 직접 추가 할 수도 없습니다 .
잠재적인 해결책은 라우팅을 다음과 같이 구성하는 것입니다 onlink
(최근 커널 및 NetworkManager에서만 지원됨). 더 나은 솔루션은 게이트웨이( +ipv4.routes 172.16.2.1/32
)에 직접 경로를 추가하는 것입니다. 이것이 네트워크의 올바른 구성이라면.