주소가 192.168.0.11인 인터페이스 enp7s0이 있습니다.
내 라우터는 192.168.0.1입니다.
내 라우팅 테이블은
Ziel Router Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 100 0 0 enp7s0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 enp7s0
192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 enp7s0
모든 것이 정상입니다. iptalbes가 설정되어 있지 않습니다.
이제 라우팅 테이블을 재설정하고 기본 게이트웨이를 다시 설정하려고 합니다.
ip route flush table main
route add default gw 192.168.0.1
그냥 헹구세요. 하지만 추가에는 실패했습니다.
SIOCADDRT: network is unreachable
여기서 문제가 무엇입니까? ?
답변1
Linux에서는 기본적으로(주소에 플래그가 추가되지 않은 경우)접두사 라우팅 없음), 인터페이스에 주소를 추가하면 암시적으로 LAN에 경로가 추가됩니다.범위 링크. dev를 사용하여 액세스할 수 있으므로 게이트웨이에 대한 경로가 있습니다.enpu7s0:
# ip route
default via 192.168.0.1 dev enp7s0
192.168.0.0/24 dev enp7s0 proto kernel scope link src 192.168.0.11
# ip route get 192.168.0.1
192.168.0.1 dev enp7s0 src 192.168.0.11 uid 0
cache
경로를 새로 고치면 암시적 경로도 새로 고쳐집니다.범위 링크노선:
# ip route flush table main
# ip route
# ip route get 192.168.0.1
RTNETLINK answers: Network is unreachable
따라서 다시 가져오는 방법에는 두 가지가 있습니다. 수동으로 다시 추가하거나( ip route add 192.168.0.0/24 dev enp7s0
) 인터페이스를 껐다가 켜면 암시적 추가가 다시 트리거됩니다.범위 링크노선:
# ip route
# ip link set enp7s0 down; ip link set enp7s0 up
# ip route
192.168.0.0/24 dev enp7s0 proto kernel scope link src 192.168.0.11
# ip route add default via 192.168.0.1
#
유일한 차이점은 proto kernel
경로가 수동이 아닌 커널에 의해 추가되었다는 표시가 있다는 것입니다. 그러니 사용하지 않는 것이 가장 좋습니다플러시명령(사용삭제) 또는 추가 필터를 추가합니다(예: ip route flush scope global
로컬 LAN 경로가 유지됩니다).